smartchat

Conventions

#Names

  • Everything is English. Fields, parameters, values, error codes, event names and tool names use snake_case (events use resource.event, for example contact.created).
  • Paths use lower case with hyphens and plural nouns, for example /contacts and /webhook-endpoints. A path with a single object per account is singular, for example /landing-page.
  • Actions are sub-paths with a verb, for example /contacts/{contact_id}/unsubscribe.

#IDs

Every ID has a prefix that tells you the kind of object. If you send an ID of the wrong kind, the answer is validation_failed, not "not found".

ObjectID starts withExample
Contactcon_con_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Conversationcnv_cnv_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Sendsnd_snd_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Templatetpl_tpl_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Newsletternwl_nwl_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Automationaut_aut_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Automation runrun_run_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Follow-up sequencefup_fup_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Follow-up stepstp_stp_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Learned answerans_ans_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Knowledge documentdoc_doc_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Media filemed_med_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Webhook endpointwhe_whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Webhook deliverywhd_whd_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Eventevt_evt_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Preview planpln_pln_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Contact exportexp_exp_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
API keykey_key_0f8c1a2e4b7d4c3e9a5b6d7e8f901234
Accountacc_acc_0f8c1a2e4b7d4c3e9a5b6d7e8f901234

Objects of other accounts look the same as objects that do not exist: you always get a "not found" answer. This is on purpose.

#Times, phone numbers, money

  • Times are ISO 8601 in UTC with Z, for example 2026-10-25T09:41:07Z. Events have milliseconds. Field names end in _at for a point in time and _on for a date (YYYY-MM-DD). You may send a time with an offset such as +01:00; you get UTC back.
  • Phone numbers use the E.164 format, for example +4915112345678. An invalid number gives invalid_phone_number.
  • Money is a whole number in the smallest unit plus currency in lower case (eur). Credits are whole numbers. There are no floating point numbers for money.
  • Booleans are true and false. A value that is not set is null, never "".

#Fixed values

FieldValuesMeaning
optin_whatsappnone, pending, confirmed, opted_outWhatsApp opt-in state of a contact.
send statusqueued, sent, delivered, read, failed, skippedState of a single send.
template statusdraft, pending, approved, rejected, pausedState of a message template.
newsletter statusdraft, scheduled, sending, paused, completed, canceled, failedState of a newsletter.
automation statusdraft, active, pausedState of an automation. A new automation without a status is a draft.
conversation statusopen, closedState of a conversation.
acquisitionlanding_page, import, api, manual, automation, serviceWhere a contact came from.
contact status (status)confirmed, unconfirmed, opted_out, automation, supportKind of a contact. confirmed and unconfirmed say if the opt-in is done, opted_out is a contact who unsubscribed.
purposemarketing, automation, serviceWhy a contact was created: for marketing, for an automation or for service messages.
tag origin (origin)system, manual, aiWho set a tag: the system, a person, or the AI.

#The shape of an answer

An object is returned flat, with object (the kind) and id:

{
  "object": "contact",
  "id": "con_0f8c1a2e4b7d4c3e9a5b6d7e8f901234",
  "name": "Mia Muster",
  "phone": "+4915112345678",
  "email": null,
  "tags": ["regular customer"],
  "optin_whatsapp": "confirmed",
  "created_at": "2026-10-25T09:41:07Z"
}

A list wraps objects in data (pagination):

{ "object": "list", "data": [], "has_more": false, "next_cursor": null, "url": "/v1/contacts" }

There is no ok or success field. Success is the HTTP status; a problem is an error.

#Headers on every answer

HeaderMeaning
Request-IdID of this request (req_...). Give it to support.
SmartChat-VersionVersion of the API that answered (versioning).
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-ClassYour rate limit.

New fields can appear in answers at any time. Ignore fields you do not know.