Endpoints
Contacts
Create, find, update, tag, stage and merge the people your business talks to.
Пути указаны относительно базового URL. В каждой карточке указано, какое разрешение нужно для вызова, и перечислены все параметры с типами и ограничениями.
/contactsSearch contacts, newest first.
Параметры запроса
- qнеобязательноstring
Free-text search across name, email, phone, WhatsApp number, notes and Instagram username. Every word must match. Up to 200 characters.
- phoneнеобязательноstring
Exact phone or WhatsApp number match.
- emailнеобязательноstring
Exact email match.
- tagнеобязательноstring
Contacts that carry this tag (case-insensitive).
- stage_idнеобязательноinteger
Contacts in this funnel stage.
- assigned_to_user_idнеобязательноstring
Contacts owned by this team member.
- channelнеобязательноenum
Contacts that came from this channel.
Допустимые значения:
instagramfacebooktiktokwhatsapptelegramemailwidgetapivoicesms - updated_sinceнеобязательноstring (ISO 8601 date-time with offset)
Contacts updated at or after this time.
/contacts/lookupFind one contact by phone, email or channel username. Send at least one of phone, email or handle.
Параметры запроса
- phoneнеобязательноstring
Phone or WhatsApp number.
- emailнеобязательноstring
Email address.
- handleнеобязательноstring
Channel username, with or without "@".
- channelнеобязательноenum
Limit the handle search to one channel.
Допустимые значения:
instagramtiktoktelegramwhatsapp
- Answers 404 not_found when nothing matches. When several contacts match, the oldest one is returned.
/contactsCreate a contact.
Тело JSON
- first_nameнеобязательноstring | null
1–100 characters.
- last_nameнеобязательноstring | null
1–100 characters.
- emailнеобязательноstring | null
Valid email address, up to 320 characters. Stored lowercase.
- phoneнеобязательноstring | null
3–50 characters. E.164 (+14155550123) recommended.
- whatsapp_phoneнеобязательноstring | null
WhatsApp number, 3–50 characters.
- instagram_usernameнеобязательноstring | null
Up to 100 characters. A leading "@" is removed.
- tiktok_usernameнеобязательноstring | null
Up to 100 characters. A leading "@" is removed.
- telegram_usernameнеобязательноstring | null
Up to 100 characters. A leading "@" is removed.
- country_codeнеобязательноstring
Two-letter ISO 3166-1 country code, e.g. "US".
- custom_fieldsнеобязательноobject
Custom field values keyed by custom field key (see GET /custom-fields). Merged into existing values. Unknown, archived or wrongly typed keys answer 422.
- sourceнеобязательноstring
Where the contact came from, up to 50 characters. Default "api".
- tagsнеобязательноarray of strings
Up to 100 tag names (1–80 characters each). Tags that do not exist yet are added to the workspace.
- stage_idнеобязательноinteger
Funnel stage to place the contact in (see GET /funnels).
- assigned_to_user_idнеобязательноstring
Team member who owns the contact (see GET /users).
- Answers 201 with the contact.
/contacts/upsertUpdate the matching contact, or create it. Matches by phone (or whatsapp_phone), then email, then Instagram, TikTok or Telegram username.
Тело JSON
- first_nameнеобязательноstring | null
1–100 characters.
- last_nameнеобязательноstring | null
1–100 characters.
- emailнеобязательноstring | null
Valid email address, up to 320 characters. Stored lowercase.
- phoneнеобязательноstring | null
3–50 characters. E.164 (+14155550123) recommended.
- whatsapp_phoneнеобязательноstring | null
WhatsApp number, 3–50 characters.
- instagram_usernameнеобязательноstring | null
Up to 100 characters. A leading "@" is removed.
- tiktok_usernameнеобязательноstring | null
Up to 100 characters. A leading "@" is removed.
- telegram_usernameнеобязательноstring | null
Up to 100 characters. A leading "@" is removed.
- country_codeнеобязательноstring
Two-letter ISO 3166-1 country code, e.g. "US".
- custom_fieldsнеобязательноobject
Custom field values keyed by custom field key (see GET /custom-fields). Merged into existing values. Unknown, archived or wrongly typed keys answer 422.
- sourceнеобязательноstring
Where the contact came from, up to 50 characters. Default "api".
- tagsнеобязательноarray of strings
Up to 100 tag names (1–80 characters each). Tags that do not exist yet are added to the workspace.
- stage_idнеобязательноinteger
Funnel stage to place the contact in (see GET /funnels).
- assigned_to_user_idнеобязательноstring
Team member who owns the contact (see GET /users).
- Send at least a phone, email or channel username to match on (422 otherwise).
- Answers { object: "contact_upsert", created, contact }: 201 when created, 200 when updated.
/contacts/mergeMerge a duplicate contact into another. The secondary contact's records (conversations, bookings, orders and more) move to the primary one.
Тело JSON
- primary_contact_idобязательноinteger
The contact that stays.
- secondary_contact_idобязательноinteger
The duplicate that is merged away. Must differ from primary_contact_id.
/contacts/:idRetrieve a contact, including tags, stage, assignee and custom fields.
Параметры пути
- idобязательноinteger
Contact ID.
/contacts/:idUpdate contact fields. Fields you leave out keep their value; null clears a field.
Параметры пути
- idобязательноinteger
Contact ID.
Тело JSON
- first_nameнеобязательноstring | null
1–100 characters.
- last_nameнеобязательноstring | null
1–100 characters.
- emailнеобязательноstring | null
Valid email address, up to 320 characters. Stored lowercase.
- phoneнеобязательноstring | null
3–50 characters. E.164 (+14155550123) recommended.
- whatsapp_phoneнеобязательноstring | null
WhatsApp number, 3–50 characters.
- instagram_usernameнеобязательноstring | null
Up to 100 characters. A leading "@" is removed.
- tiktok_usernameнеобязательноstring | null
Up to 100 characters. A leading "@" is removed.
- telegram_usernameнеобязательноstring | null
Up to 100 characters. A leading "@" is removed.
- country_codeнеобязательноstring
Two-letter ISO 3166-1 country code, e.g. "US".
- custom_fieldsнеобязательноobject
Custom field values keyed by custom field key (see GET /custom-fields). Merged into existing values. Unknown, archived or wrongly typed keys answer 422.
/contacts/:idDelete a contact and the data derived from it, the same way a delete in the app does.
Параметры пути
- idобязательноinteger
Contact ID.
/contacts/:id/channelsList the channel identities a contact can be reached on.
Параметры пути
- idобязательноinteger
Contact ID.
/contacts/:id/tagsAdd tags to a contact. Tags that do not exist yet are added to the workspace.
Параметры пути
- idобязательноinteger
Contact ID.
Тело JSON
- tagsобязательноarray of strings
1–100 tag names, 1–80 characters each.
/contacts/:id/tagsRemove tags from a contact (case-insensitive). The tags stay in the workspace.
Параметры пути
- idобязательноinteger
Contact ID.
Тело JSON
- tagsобязательноarray of strings
1–100 tag names.
/contacts/:id/stageMove a contact to a funnel (lifecycle) stage.
Параметры пути
- idобязательноinteger
Contact ID.
Тело JSON
- stage_idобязательноinteger
Target stage (see GET /funnels).
- funnel_idнеобязательноinteger
Optional check: the stage must belong to this funnel.
/contacts/:id/stageRemove the contact from its lifecycle stage.
Параметры пути
- idобязательноinteger
Contact ID.
/contacts/:id/assigneeAssign the contact to a team member, or unassign it.
Параметры пути
- idобязательноinteger
Contact ID.
Тело JSON
- user_idнеобязательноstring | null
A user from GET /users. Omit or send null to unassign.
/contacts/:id/notesList the internal notes on a contact, newest first.
Параметры пути
- idобязательноinteger
Contact ID.
/contacts/:id/notesAdd an internal note to a contact. Customers never see notes.
Параметры пути
- idобязательноinteger
Contact ID.
Тело JSON
- bodyобязательноstring
1–10,000 characters.
/contacts/:id/dncTurn do-not-contact on or off for a contact.
Параметры пути
- idобязательноinteger
Contact ID.
Тело JSON
- do_not_contactобязательноboolean
true opts the contact out of messages.
- reasonнеобязательноstring
Up to 200 characters.
/funnelsList funnels with their stages, for use with stage_id.
Параметры запроса
- flatнеобязательноstring
"true" returns one row per stage (funnel name › stage name) instead of nested funnels.