#Contacts
| Method | Path | Purpose |
|---|---|---|
| GET | /contacts/:id/export | Everything kept about one contact, as JSON |
| DELETE | /contacts/:id | Delete the contact and everything about them |
For a person's access, portability and erasure requests. :id is the
contact's id, as the inbox and webhooks show it. Both calls are recorded in
the workspace's Activity. See Retention and deletion for what
each one covers.
#Export
GET /api/developer/v1/:slug/contacts/:id/export
Authorization: Bearer TOKEN
{
"exported_at": "2026-10-09T21:14:03Z",
"workspace": "acme",
"contact": {
"id": 4211,
"environment": "live",
"name": "Ana Pérez",
"email": "ana@example.com",
"phone_number": "+56911112222",
"opted_out_at": null,
"created_at": "2026-09-30T12:01:44Z",
"channels": [{ "channel": "whatsapp", "handle": "+56 9 1111 2222" }],
"memories": [{ "kind": "note", "body": "Prefers mornings", "created_at": "2026-10-01T09:12:00Z" }]
},
"conversations": [
{
"id": 9120,
"agent": "support",
"source": "whatsapp",
"environment": "live",
"started_at": "2026-09-30T12:01:44Z",
"messages": [
{ "role": "user", "from_a_person": false, "content": "Hi", "attachments": [], "sent_at": "2026-09-30T12:01:44Z" }
]
}
]
}
from_a_person is true on a reply somebody wrote from the inbox or the
channel's own app instead of the agent.
#Delete
DELETE /api/developer/v1/:slug/contacts/:id
Authorization: Bearer TOKEN
{ "erased": true, "contact_id": 4211, "chats": 3, "messages": 58 }
There is no undo. A contact that does not exist, or belongs to another
workspace, answers 404.