Create Contact

Create a contact. The phone is stored as country code + national number (send E.164, or national with countryCode) and identifies the person: a contact with the same number — in any format — or, without a phone, the same email, is a duplicate, handled by onDuplicate (error → 409 with its contactId, return, or update). 201 when created, 200 when an existing contact was returned or updated (created: false, duplicate: true). Fires the contact.created webhook.

Security:

  • The organisationId in the URL must match the organisation your JWT was issued for — requests for a different organisation fail with 401.
  • Requires CRM_ADMIN, ACCOUNT_OWNER, or CRM_BOT role; other roles receive 403.
Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required

Your organisation UUID (returned as org from the /token endpoint).

Body Params
lastName
object | null
phone
object | null

E.164 (+919876543210), or the national number with countryCode. Send null to clear.

string

With a national phone.

email
object | null
customFields
object

Values keyed by custom field id (see GET …/fields), checked against the field types; required fields must be present. On update they are merged into the stored values — send null for a key to remove it.

string
required
length ≤ 100
string

Use this channel’s contact template for custom fields (default: your oldest active template).

string
enum
Defaults to error

When a contact with the same phone number (or, without a phone, the same email) exists: error (default) → 409 with its contactId; return → return it unchanged; update → update it with these fields.

Allowed:
Responses
200

Duplicate returned or updated (onDuplicate: return | update)

400

Bad request — missing firstName, invalid phone/email, or custom field validation failed

401

Unauthorized — invalid/expired JWT or organisation ID does not match the token

403

Forbidden — role not permitted

409

Duplicate (onDuplicate: error) — body carries the existing contactId

429

Too many requests

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json