SelanimDocs

Quickstart

From zero to a delivered message in four steps.

Rather click than type?

Every endpoint below is on Postman & OpenAPI as a ready collection — import it, paste your key once, and send.

1. Get an API key

Sign in to the portal, open Developer API and copy your live key. Keys look like sbs_live_… and grant full access to your account, so store them in your secret manager — never in client-side code or version control.

bash
export SBS_API_KEY="sbs_live_7f4c9a2e1d8b45f0a3c6e9d2b7f1a4c8"

2. Check your balance

A quick sanity check that your key works and your wallet is funded.

bash
curl -X GET "https://bulksmsapi.selanim.com/v1/wallet/balance" \
  -H "Authorization: Bearer $SBS_API_KEY"

Needs: curl, on every machine already.

json
{ "balance": 12480, "currency": "TZS", "lowBalanceThreshold": 500 }

3. Send a message

Use an approved sender ID. If yours is still pending, the request is rejected with sender_id_not_approved.

bash
curl -X POST "https://bulksmsapi.selanim.com/v1/sms/send" \
  -H "Authorization: Bearer $SBS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "senderId": "SELANIM",
    "to": [
      "255712345678"
    ],
    "message": "Karibu Selanim Bulk SMS!"
  }'

Needs: curl, on every machine already.

A successful call returns 202 Accepted with a per-recipient breakdown:

json
{
  "requestId": "REQ-90021",
  "parts": 1,
  "cost": 15,
  "currency": "TZS",
  "messages": [
    {
      "id": "SM-88f2c1",
      "to": "+255712345678",
      "network": "Vodacom",
      "status": "queued"
    }
  ]
}

4. Receive the delivery report

Register a webhook URL and we POST every status change as the operator reports it — usually within a few seconds.

json
{
  "event": "message.delivered",
  "messageId": "SM-88f2c1",
  "to": "+255712345678",
  "network": "Vodacom",
  "status": "delivered",
  "deliveredAt": "2026-08-17T09:12:44Z"
}

Test without spending credit

Use a key beginning sbs_test_ instead. Every example on this page works against one: the request is validated, the sender ID is checked, the message is written to your log, and a simulated delivery report fires against your webhook — but nothing reaches an operator and nothing is billed. Send to 255740000001 to force a delivered report, or 255740000002 to force a failure.

Prefer the dashboard?

Every endpoint here has a UI equivalent in the client portal, including a composer that previews cost and part count before you send.