SelanimDocs

Contacts & groups

Keep your audiences on the platform so campaigns, personalisation and opt-outs stay in sync.

Create a contact

GEThttps://bulksmsapi.selanim.com/v1/contacts
POSThttps://bulksmsapi.selanim.com/v1/contacts
GEThttps://bulksmsapi.selanim.com/v1/contacts/{contactId}
PUThttps://bulksmsapi.selanim.com/v1/contacts/{contactId}
DELETEhttps://bulksmsapi.selanim.com/v1/contacts/{contactId}
FieldTypeDescription
phonerequiredstring
firstNamestring
lastNamestring
emailstring
notesstring
customFieldsobjectRead by {{placeholders}} when you personalise a send.
groupIdsstring (uuid)[]
bash
curl -X POST "https://bulksmsapi.selanim.com/v1/contacts" \
  -H "Authorization: Bearer $SBS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "0713111321",
    "firstName": "Rehema",
    "lastName": "Mwakalinga",
    "customFields": {
      "class": "Form 4"
    }
  }'

Needs: curl, on every machine already.

Bulk import

Import up to 50,000 contacts per call. Duplicates are matched on phone number and updated rather than re-created.

POSThttps://bulksmsapi.selanim.com/v1/contacts/import
FieldTypeDescription
contactsrequiredContactWrite[]Up to 50,000 entries.
groupIdstring (uuid)Add every imported contact to this group.
skipDuplicatesbooleanWhen false, an existing number is updated instead of skipped. Defaults to true.
json
{
  "groupId": "GRP-1",
  "contacts": [
    { "name": "Emmanuel Shayo", "phone": "255712345678" },
    { "name": "Consolata Urio", "phone": "255713998877", "tags": ["Form 1"] }
  ]
}
json
{ "imported": 2, "updated": 0, "invalid": 0, "groupId": "GRP-1" }

Groups

GEThttps://bulksmsapi.selanim.com/v1/groups
POSThttps://bulksmsapi.selanim.com/v1/groups
DELETEhttps://bulksmsapi.selanim.com/v1/groups/{groupId}
FieldTypeDescription
namerequiredstring
descriptionstring
json
{
  "data": [
    { "id": "GRP-1", "name": "Parents", "contactCount": 1250 },
    { "id": "GRP-6", "name": "VIP Customers", "contactCount": 210 }
  ]
}

Opt-outs are automatic

Recipients who reply STOP are marked opted-out and are silently skipped on future marketing campaigns. They still receive transactional traffic such as OTPs, as required by TCRA rules.