Skip to main content
POST
Create Contact

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. Refused with 404 (Workspace not found.) when the id is unknown, is not one of your customers, or is not an org_… id; 410 when that customer was deleted (restore it with POST /customers/{id}/restore until it is erased); 403 when the key belongs to one customer workspace (it cannot act as another); 400 when your workspace is not a developer workspace. /customers/* and GET /customers/usage are your own workspace's and refuse the header with 400: call them without it.

Example:

"org_3fKq9TzQ1mN8vB2xR7cLpA"

Body

application/json
phone
string
required

Their number, with or without the +; spaces are fine. Without a +, ten digits or fewer — or a leading 0 — is read as an Indian number. The number is the contact's identity: a second create on it updates the first.

Example:

"+91 98765 43210"

name
string | null

Their name.

Maximum string length: 120
Example:

"Asha Rao"

email
string<email> | null

Their email. Stored lower-cased.

Maximum string length: 200
Example:

"asha.rao@gmail.com"

externalId
string | null

Your CRM's id for them, unique in your workspace. GET /contacts?externalId= finds them by it.

Maximum string length: 200
Example:

"LSQ-42"

tags
string[]

Tags, normalised as the console stores them: lower case, spaces to hyphens, duplicates dropped, 40 characters and 20 tags at most. Replaces the list.

Maximum array length: 20
Example:
language
enum<string> | null

The language to write to them in, by its English name as the console offers it, auto to match theirs, or null.

Available options:
auto,
English,
Hindi,
Assamese,
Bengali,
Bodo,
Dogri,
French,
German,
Gujarati,
Indonesian,
Italian,
Japanese,
Kannada,
Kashmiri,
Konkani,
Korean,
Maithili,
Malayalam,
Manipuri,
Marathi,
Nepali,
Odia,
Polish,
Portuguese,
Punjabi,
Russian,
Sanskrit,
Santali,
Sindhi,
Spanish,
Swahili,
Tamil,
Telugu,
Thai,
Turkish,
Urdu,
Vietnamese,
null
Example:

"Hindi"

note
string | null

Free-text notes about them.

Maximum string length: 2000

Their word on marketing messages, recorded with the time and where it came from — what a regulator asks.

Response

Someone was already on that number; they were updated.

id
string
required

The contact's id (cust_…).

Example:

"cust_4e7b1c9d-2a6f-4385-b0d2-9f6a3e8c1b74"

phone
string | null
required

Digits only, with the country code — 919876543210.

name
string | null
required

Their name.

email
string | null
required

Their email, lower-cased.

externalId
string | null
required

Your CRM's id for them, unique in your workspace.

tags
string[]
required

Their tags, lower-case and hyphenated.

language
string | null
required

The language to write to them in, e.g. Hindi, or auto to match theirs.

note
string | null
required

Free-text notes.

source
string
required

How you came to have them: agent (they spoke to an agent), import, api, whatsapp_app.

acquiredFrom
string | null
required

Where the lead came from, when recorded.

createdAt
string<date-time>
required

When the contact was created.