Create a new form to send to a contact.
| Field | Type | Description |
|---|---|---|
flow.slug | string | Form template identifier |
| Field | Type | Description |
|---|---|---|
company.slug | string | Workspace identifier (if multiple authorized) |
user.email | string | Contact email address |
user.phone | string | Contact phone number |
user.given_name | string | Contact first name |
user.family_name | string | Contact last name |
user.locale | string | Contact language (e.g., en, fr) |
data | object | Pre-filled form data (keys must match form field keys) |
external_args | object | Your custom metadata |
redirect_url | string | HTTPS URL to redirect after completion |
draft | boolean | Create as draft (default: false) |
active_from | string | ISO 8601 date when form becomes active |
active_until | string | ISO 8601 date when form expires |
owner.email | string | Form owner email address |
branding.slug | string | Custom branding identifier |
| Status | Description |
|---|---|
draft | Form created but not yet sent |
pending | Form sent, waiting for completion |
completed | Contact submitted the form |
declined | Contact declined to fill the form |
processed | Response has been reviewed/processed |
data parameter allows you to pre-fill form fields with values. This is useful for importing data from your system or providing a better user experience by reducing the amount of information the contact needs to enter.
data object must exactly match the field keys defined in your form template. When a contact opens the form, these fields will already contain the provided values.
Example:
If your form template has fields with keys:
company_nameaddress_zipannual_revenue| Field Type | Example Keys |
|---|---|
| Company Info | company_name, company_vat, company_registration |
| Address | address_street, address_city, address_zip, address_country |
| Contact | contact_name, contact_email, contact_phone |
| Financial | annual_revenue, number_employees, bank_account |
| Custom | Any custom field keys you’ve defined in your template |
external_args to store your own metadata with forms for easy tracking:
| Code | Description |
|---|---|
201 | Created - New form created successfully |
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Invalid access token |
403 | Forbidden - No access to this resource |
409 | Conflict - Multiple form templates match criteria |
422 | Unprocessable - Validation failed |
429 | Too Many Requests - Rate limit exceeded |
500 | Server Error - Internal error |
draft: true is specified. Draft forms must be activated by setting draft: false via PATCH.API token (starts with pnbx_). Create at https://app.penbox.io/workspace/settings/api. Include as: Authorization: Bearer {token}
Pre-filled form data
Your custom metadata
HTTPS URL to redirect after completion
Create as draft (not active)
Form-specific options
ISO 8601 date when form becomes active
ISO 8601 date when form expires
Form created successfully
Form UUID
Creation timestamp
Current form status
draft, pending, completed, declined, processed Whether the form is archived
Timestamp when archived
Timestamp when marked as processed
When the form becomes active
When the form expires
URLs for accessing the form
Contact information
Form owner information
Form template information
Pre-filled form data
Custom metadata
Form-specific options
Array of form responses
Array of notifications sent for this form
Webhook URLs with event subscriptions