Endpoint
Contacts
Create, find, update, tag, stage and merge the people your business talks to.
I percorsi sono relativi all'URL di base. Ogni scheda indica il permesso richiesto dalla chiamata e ogni parametro, con tipo e limiti.
/contactsSearch contacts, newest first.
Parametri di query
- qopzionalestring
Free-text search across name, email, phone, WhatsApp number, notes and Instagram username. Every word must match. Up to 200 characters.
- phoneopzionalestring
Exact phone or WhatsApp number match.
- emailopzionalestring
Exact email match.
- tagopzionalestring
Contacts that carry this tag (case-insensitive).
- stage_idopzionaleinteger
Contacts in this funnel stage.
- assigned_to_user_idopzionalestring
Contacts owned by this team member.
- channelopzionaleenum
Contacts that came from this channel.
Valori consentiti:
instagramfacebooktiktokwhatsapptelegramemailwidgetapivoicesms - updated_sinceopzionalestring (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.
Parametri di query
- phoneopzionalestring
Phone or WhatsApp number.
- emailopzionalestring
Email address.
- handleopzionalestring
Channel username, with or without "@".
- channelopzionaleenum
Limit the handle search to one channel.
Valori consentiti:
instagramtiktoktelegramwhatsapp
- Answers 404 not_found when nothing matches. When several contacts match, the oldest one is returned.
/contactsCreate a contact.
Corpo JSON
- first_nameopzionalestring | null
1–100 characters.
- last_nameopzionalestring | null
1–100 characters.
- emailopzionalestring | null
Valid email address, up to 320 characters. Stored lowercase.
- phoneopzionalestring | null
3–50 characters. E.164 (+14155550123) recommended.
- whatsapp_phoneopzionalestring | null
WhatsApp number, 3–50 characters.
- instagram_usernameopzionalestring | null
Up to 100 characters. A leading "@" is removed.
- tiktok_usernameopzionalestring | null
Up to 100 characters. A leading "@" is removed.
- telegram_usernameopzionalestring | null
Up to 100 characters. A leading "@" is removed.
- country_codeopzionalestring
Two-letter ISO 3166-1 country code, e.g. "US".
- custom_fieldsopzionaleobject
Custom field values keyed by custom field key (see GET /custom-fields). Merged into existing values. Unknown, archived or wrongly typed keys answer 422.
- sourceopzionalestring
Where the contact came from, up to 50 characters. Default "api".
- tagsopzionalearray of strings
Up to 100 tag names (1–80 characters each). Tags that do not exist yet are added to the workspace.
- stage_idopzionaleinteger
Funnel stage to place the contact in (see GET /funnels).
- assigned_to_user_idopzionalestring
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.
Corpo JSON
- first_nameopzionalestring | null
1–100 characters.
- last_nameopzionalestring | null
1–100 characters.
- emailopzionalestring | null
Valid email address, up to 320 characters. Stored lowercase.
- phoneopzionalestring | null
3–50 characters. E.164 (+14155550123) recommended.
- whatsapp_phoneopzionalestring | null
WhatsApp number, 3–50 characters.
- instagram_usernameopzionalestring | null
Up to 100 characters. A leading "@" is removed.
- tiktok_usernameopzionalestring | null
Up to 100 characters. A leading "@" is removed.
- telegram_usernameopzionalestring | null
Up to 100 characters. A leading "@" is removed.
- country_codeopzionalestring
Two-letter ISO 3166-1 country code, e.g. "US".
- custom_fieldsopzionaleobject
Custom field values keyed by custom field key (see GET /custom-fields). Merged into existing values. Unknown, archived or wrongly typed keys answer 422.
- sourceopzionalestring
Where the contact came from, up to 50 characters. Default "api".
- tagsopzionalearray of strings
Up to 100 tag names (1–80 characters each). Tags that do not exist yet are added to the workspace.
- stage_idopzionaleinteger
Funnel stage to place the contact in (see GET /funnels).
- assigned_to_user_idopzionalestring
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.
Corpo JSON
- primary_contact_idobbligatoriointeger
The contact that stays.
- secondary_contact_idobbligatoriointeger
The duplicate that is merged away. Must differ from primary_contact_id.
/contacts/:idRetrieve a contact, including tags, stage, assignee and custom fields.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
/contacts/:idUpdate contact fields. Fields you leave out keep their value; null clears a field.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
Corpo JSON
- first_nameopzionalestring | null
1–100 characters.
- last_nameopzionalestring | null
1–100 characters.
- emailopzionalestring | null
Valid email address, up to 320 characters. Stored lowercase.
- phoneopzionalestring | null
3–50 characters. E.164 (+14155550123) recommended.
- whatsapp_phoneopzionalestring | null
WhatsApp number, 3–50 characters.
- instagram_usernameopzionalestring | null
Up to 100 characters. A leading "@" is removed.
- tiktok_usernameopzionalestring | null
Up to 100 characters. A leading "@" is removed.
- telegram_usernameopzionalestring | null
Up to 100 characters. A leading "@" is removed.
- country_codeopzionalestring
Two-letter ISO 3166-1 country code, e.g. "US".
- custom_fieldsopzionaleobject
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.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
/contacts/:id/channelsList the channel identities a contact can be reached on.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
/contacts/:id/tagsAdd tags to a contact. Tags that do not exist yet are added to the workspace.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
Corpo JSON
- tagsobbligatorioarray 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.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
Corpo JSON
- tagsobbligatorioarray of strings
1–100 tag names.
/contacts/:id/stageMove a contact to a funnel (lifecycle) stage.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
Corpo JSON
- stage_idobbligatoriointeger
Target stage (see GET /funnels).
- funnel_idopzionaleinteger
Optional check: the stage must belong to this funnel.
/contacts/:id/stageRemove the contact from its lifecycle stage.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
/contacts/:id/assigneeAssign the contact to a team member, or unassign it.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
Corpo JSON
- user_idopzionalestring | null
A user from GET /users. Omit or send null to unassign.
/contacts/:id/notesList the internal notes on a contact, newest first.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
/contacts/:id/notesAdd an internal note to a contact. Customers never see notes.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
Corpo JSON
- bodyobbligatoriostring
1–10,000 characters.
/contacts/:id/dncTurn do-not-contact on or off for a contact.
Parametri del percorso
- idobbligatoriointeger
Contact ID.
Corpo JSON
- do_not_contactobbligatorioboolean
true opts the contact out of messages.
- reasonopzionalestring
Up to 200 characters.
/funnelsList funnels with their stages, for use with stage_id.
Parametri di query
- flatopzionalestring
"true" returns one row per stage (funnel name › stage name) instead of nested funnels.