Savannah Cloud

SMS System

Send SMS via Africa's Talking using the job queue or direct endpoint.

SMS is powered by Africa's Talking. Configure your credentials before using.


Prerequisites

AT_API_KEY=atsk_xxxxxxxxxxxx
AT_USERNAME=your_at_username

Send SMS Directly

For immediate sends (no queue):

curl -X POST https://api.savannahcloud.com/sms/send \
  -H "Authorization: Bearer YOUR_JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+254712345678",
    "message": "Your OTP is 123456",
    "from": "SavCloud"
  }'
FieldRequiredDescription
toYesRecipient in E.164 format (+254...)
messageYesSMS text (160 chars per segment)
fromNoSender ID registered with Africa's Talking

Send SMS via Job Queue

Preferred for bulk sends and retry support:

curl -X POST https://api.savannahcloud.com/jobs \
  -H "X-API-Key: sc_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "send_sms",
    "payload": {
      "to": "+254712345678",
      "message": "Welcome to Savannah Cloud!",
      "from": "SavCloud"
    },
    "max_retries": 3
  }'

Failed sends are retried up to max_retries times with exponential backoff.


Bulk SMS

Send to multiple recipients by queuing one job per number, or use Africa's Talking's bulk endpoint via a webhook job:

{
  "type": "webhook",
  "payload": {
    "url": "https://api.africastalking.com/version1/messaging",
    "payload": {
      "username": "your_at_username",
      "to": "+254711111111,+254722222222",
      "message": "Bulk message here"
    }
  }
}

Dashboard

The /sms page provides:

  • Compose form — recipient (E.164), message text, optional sender ID
  • Send history — all outgoing SMS with delivery status from Africa's Talking
  • Delivery reports — AT callbacks update status to delivered or failed

Africa's Talking Sandbox

For testing without real sends, use the AT sandbox:

AT_USERNAME=sandbox
AT_API_KEY=your_sandbox_key

Sign in at account.africastalking.com/auth/register to get a free sandbox account.

On this page