Skip to main content
POST
Create Form

Authorizations

Authorization
string
header
required

Your API key (ta_live_…) from Settings → API keys, sent as Authorization: Bearer <key>. Keep it on a server: it can message every customer you have. A key is full, build or read-only; a request its level does not allow is refused with 403.

Headers

Thinnest-Workspace
string

Developers only: the customer workspace this request acts in — its org_… id from POST /customers. Leave it out to act in your own workspace.

Example:

"org_3fKq9TzQ1mN8vB2xR7cLpA"

Body

application/json
name
string
required

What you call it, unique per agent. Customers never see it — but Reply to Conversation can send a form by this name.

Required string length: 2 - 120
Example:

"Delivery address"

form
object
required
category
enum<string>
default:CONTACT_US

WhatsApp's category for it. Affects reporting only.

Available options:
SIGN_UP,
APPOINTMENT_BOOKING,
LEAD_GENERATION,
CONTACT_US,
CUSTOMER_SUPPORT,
SURVEY,
OTHER
Example:

"CONTACT_US"

agent
string | null

The agent it belongs to (ag_…). Leave it out for the agent holding your WhatsApp number, else your oldest agent. Cannot be changed later.

Example:

"ag_2c7e9a14-5b3d-4f8e-a1c6-7d9b0e3f5a21"

Response

The saved form, not yet published.

id
string
required

The form's id (form_…).

name
string
required

What you call it. Customers never see it.

agent
string
required

The agent it belongs to (ag_…).

category
enum<string>
required

WhatsApp's category for it. Affects reporting only.

Available options:
SIGN_UP,
APPOINTMENT_BOOKING,
LEAD_GENERATION,
CONTACT_US,
CUSTOMER_SUPPORT,
SURVEY,
OTHER
form
object
required
published
boolean
required

Whether it can be sent. False until published, and again after any edit until it is republished.

publishedAt
string<date-time> | null
required

When it was last published.

createdAt
string<date-time>
required

When it was created.

updatedAt
string<date-time>
required

When it was last changed.