SendboundSendbound

Contacts

Create, retrieve, update, and delete contacts in your Sendbound workspace.

Contacts are the subscribers in your workspace. POST /contacts performs an upsert — if a contact with that email already exists it is updated in place.

Contact object

{
  "id": "con_01HV3K...",
  "email": "jane@example.com",
  "firstName": "Jane",
  "lastName": "Smith",
  "subscribed": true,
  "tags": ["beta", "vip"],
  "data": { "plan": "pro" },
  "createdAt": "2026-01-15T10:30:00Z",
  "updatedAt": "2026-06-01T08:00:00Z"
}

List contacts

GET/contacts
Bearer
limit
cursor
search
subscribed
sort
dir
tagId
curl -X GET 'https://api.sendbound.com/contacts' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json'

Returns a paginated list of contacts. Pass cursor from a previous response to fetch the next page.

Response

{
  "data": [
    { "id": "con_01HV...", "email": "jane@example.com", "subscribed": true }
  ],
  "nextCursor": "eyJpZCI6ImNvbl8wMUhWLi4uIn0"
}

Create or update a contact

POST/contacts
Bearer
curl -X POST 'https://api.sendbound.com/contacts' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json' \
  -d '{
"email": "jane@example.com",
"firstName": "Jane",
"lastName": "Smith",
"tags": ["beta", "vip"],
"data": { "plan": "pro", "signupSource": "landing-page" }
}'

Upserts by email. All fields except email are optional.

FieldTypeRequiredDescription
emailstringYesContact email (unique key for upsert)
firstNamestringNoFirst name
lastNamestringNoLast name
tagsstring[]NoTag strings to attach
unsubscribedbooleanNoSet true to mark as unsubscribed
dataobjectNoArbitrary custom attributes

Get a contact

GET/contacts/:id
Bearer
:id
curl -X GET 'https://api.sendbound.com/contacts/:id' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json'

Update a contact

PATCH/contacts/:id
Bearer
:id
curl -X PATCH 'https://api.sendbound.com/contacts/:id' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json' \
  -d '{
"tags": ["beta", "vip"],
"data": { "plan": "enterprise" }
}'

All fields are optional. Only provided fields are updated.


Delete a contact

DELETE/contacts/:id
Bearer
:id
curl -X DELETE 'https://api.sendbound.com/contacts/:id' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json'

Returns 204 No Content on success.


Export contacts as CSV

GET/contacts/export
Bearer
curl -X GET 'https://api.sendbound.com/contacts/export' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json'

Returns a CSV file with email, subscribed, createdAt, and any custom data fields as columns.