← API marketplace
Audience
Contacts & Lists
Store contacts with the consent basis you collected, group them into lists, import CSVs of up to 100 000 rows and honour opt-outs automatically at send time.
POST
/v1/contactsCreate or update a contact
Scopes: contacts:write
curl -X POST "https://api.sendaapp.co.za/v1/contacts" \
-H "Authorization: Bearer $SENDA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"msisdn":"0821234567","name":"Thandi Nkosi","attributes":{"first_name":"Thandi","branch":"Sandton"},"consent_source":"web_form"}'Example response (201)
{
"id": "…",
"msisdn": "+27821234567",
"name": "Thandi Nkosi",
"attributes": {
"first_name": "Thandi"
},
"consent_source": "web_form",
"opted_out_at": null
}GET
/v1/contactsSearch contacts
Scopes: contacts:read
curl -X GET "https://api.sendaapp.co.za/v1/contacts?q=Thandi" \
-H "Authorization: Bearer $SENDA_API_KEY"Example response (200)
{
"data": [],
"next_cursor": null
}POST
/v1/contacts/{id}/opt-outOpt a contact out
Scopes: contacts:write
curl -X POST "https://api.sendaapp.co.za/v1/contacts/…/opt-out" \
-H "Authorization: Bearer $SENDA_API_KEY"Example response (200)
{
"id": "…",
"opted_out_at": "2026-11-01T09:00:00.000Z"
}POST
/v1/listsCreate a list
Scopes: contacts:write
curl -X POST "https://api.sendaapp.co.za/v1/lists" \
-H "Authorization: Bearer $SENDA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Loyalty members"}'Example response (201)
{
"id": "…",
"name": "Loyalty members",
"members": 0
}