Developer docs

API reference

Sender IDs

The alphanumeric name your recipients see. Every Tanzanian network must whitelist it before you can send.

Naming rules

RuleTypeDescription
length3–11Characters, inclusive.
charsetA–Z 0–9Letters and digits only — no spaces, punctuation or emoji.
ownershipstringMust relate to your registered business name or product.
reservedstringBank, operator and government-style names need supporting documents.

Request a sender ID

POSThttps://bulksmsapi.selanim.com/v1/sender-ids
FieldTypeDescription
namerequiredstringWhat recipients will see. Up to 11 characters.
purposerequiredstringWhat you will send under it. The operator reads this.
sampleMessagestring
bash
curl -X POST "https://bulksmsapi.selanim.com/v1/sender-ids" \
  -H "Authorization: Bearer $SBS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "SHULEYETU",
    "purpose": "Fee reminders and results notifications for parents."
  }'

Needs: curl, on every machine already.

json
{
  "id": "8f14e45f-ceea-467a-9f1d-2a1c0f8b3d77",
  "name": "SHULEYETU",
  "status": "pending",
  "shared": false,
  "createdAt": "2026-08-17T09:30:00Z"
}

Check status

GEThttps://bulksmsapi.selanim.com/v1/sender-ids

Status is one of pending, approved or rejected. Rejections always carry a reason so you can resubmit a corrected name.

json
{
  "data": [
    { "id": "SID-501", "senderId": "SELANIM", "status": "approved", "default": true },
    { "id": "SID-502", "senderId": "MYSCHOOL", "status": "pending" },
    {
      "id": "SID-504",
      "senderId": "NORTHSTAR",
      "status": "rejected",
      "reason": "Name resembles a licensed financial institution."
    }
  ]
}

Approval takes 1–3 business days

Sending with a pending sender ID fails with sender_id_not_approved. Keep a fallback approved ID configured so transactional traffic is never blocked by a pending request.