Skip to main content
Create a contact

Authorizations

Authorization
string
header
required

Every request sends Authorization: Bearer <token>. The token is either a panel session (a JWT from /auth/login, 12 hours) or an API key ft_<id>_<secret>. An API key is accepted only from an address on its IP allowlist (403 ip_not_allowed otherwise; 403 ip_allowlist_required for an old key that has none), is limited to its rate per minute (429 rate_limited with Retry-After; X-RateLimit-Limit/Remaining/Reset on every response), and at most 60 call placements a minute.

Headers

Idempotency-Key
string

Any string up to 255 characters. A retry with the same key and the same body gets the first answer again (with Idempotent-Replayed: true) instead of doing it twice; the same key with a different body is 409 idempotency_mismatch; while the first is still running, 409 idempotency_in_progress. Kept 24 hours.

Maximum string length: 255

Body

application/json
e164
string
required
attributes
object
dnc
boolean
name
string
organisation_id
string<uuid>

Response

Created

attributes
object

Tenant-owned structured fields: account number, language, plan. Distinct from memory, which is what was learned in conversation.

call_count
integer
created_at
string<date-time>
dnc
boolean
e164
string
external_ref
string

A CRM's own id for this contact (PUT /contacts/by-reference/{reference}).

first_seen
string<date-time> | null

Not created_at: a contact may be imported from a CRM long before they ever call.

id
string<uuid>
last_seen
string<date-time> | null
name
string
organisation_id
string<uuid>