Contacts API

Contacts are your organization's cross-channel people — matched on phone, email, or web fingerprint and shared across conversations and campaigns. Gated on the campaigns.read / campaigns.write permission.

The contact object

{
  "id":                 "uuid",
  "phone_e164":         "+14165550123",
  "email_lower":        "jordan@example.com",
  "first_name":         "Jordan",
  "last_name":          "Avery",
  "conversation_count": 3,
  "first_seen_at":      "2026-04-01T10:00:00Z",
  "last_seen_at":       "2026-05-10T14:30:00Z",
  "facts":              { "vehicle": "2022 Camry" },
  "created_at":         "2026-04-01T10:00:00Z"
}

List & search

GET /api/v1/rest/contacts   ?search= &limit= &offset=

?search= matches across name, phone, and email.

Create a contact

POST /api/v1/rest/contacts
{
  "phone_e164":  "+14165550123",
  "first_name":  "Jordan",
  "last_name":   "Avery"
}

Provide at least a phone_e164 or email_lower so the contact can be linked to conversations.

Get, update, delete

GET    /api/v1/rest/contacts/:id
PATCH  /api/v1/rest/contacts/:id
DELETE /api/v1/rest/contacts/:id

Deleting a contact cascades to its campaign enrolments. PATCH { "do_not_call": true } to hard-block outbound dialing to this contact — the dialer refuses flagged contacts (and their number) both when queueing and at dial time.