Skip to main content
POST
Create Contact
Adds a lead to your CRM from your own system, such as a website form, an ad platform or your backend. The contact appears in the CRM straight away, with any attributes you send.

Quick Example

Use Cases

  • Website forms: save a lead the moment someone submits a form
  • Ad and lead platforms: push leads from your lead source into the CRM as they arrive
  • Your own backend: create a contact when a customer signs up or places an order
To also start a workflow for the lead, use Assign to Workflow instead. It creates the contact if needed and saves the same attributes.

Where to find the values

Phone numbers

to_number is saved as digits with the country code, the same way the CRM stores every contact:
  • Spaces, dashes, brackets and + are removed: +91 98765-43210 is saved as 919876543210.
  • A 10-digit number is treated as Indian, and 91 is added: 9876543210 is saved as 919876543210.
So +919876543210, 919876543210 and 9876543210 are all the same contact.

How attributes are saved

Each row in attributes is a key and a value.
  • Matching names: key is matched to your CRM attributes ignoring case, spaces, underscores and hyphens, so "First Name" matches first_name.
  • Types: the value is checked against the attribute’s type. A number attribute needs a number, a date needs a date, a yes/no attribute needs true or false, and an enum value must be one of its options.
  • Limits: up to 50 rows per request, and each value at most 1000 characters. A value must be a string, number or boolean, not an object or a list.
Only attributes that already exist in CRM → Attributes are saved. A key with no matching attribute is not created; it is listed under ignored in the response. Create the attribute first.
The response reports what happened to every row, so a typo does not go unnoticed:

Errors worth handling

The number is already a contact on this account. Use Update Contact to change its attributes.
The X-API-KEY header is missing or does not belong to any account. Copy the key again from API Key in the dashboard.
The account the key belongs to has been deactivated. Contact support.
The body has no phone number, attributes is not a list, or a row has no key, an object or list as its value, or a value longer than 1000 characters. The message says which.
Do not retry a 400, 401, 403 or 409: the same request will get the same answer. Only 5xx responses are worth retrying.

Authorizations

X-API-KEY
string
header
required

Body

application/json
to_number
string
required

Phone number with country code. A 10-digit number is read as Indian (+91). Spaces, dashes and + are ignored.

Example:

"+919876543210"

attributes
object[]

CRM attributes to save on the contact. Only attributes that already exist in CRM > Attributes are saved.

Maximum array length: 50

Response

Contact created

status
string
Example:

"done"

message
string
Example:

"Contact created"

contact
object
attributes
object

What happened to every row of attributes