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_usernameSend 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"
}'| Field | Required | Description |
|---|---|---|
to | Yes | Recipient in E.164 format (+254...) |
message | Yes | SMS text (160 chars per segment) |
from | No | Sender 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
deliveredorfailed
Africa's Talking Sandbox
For testing without real sends, use the AT sandbox:
AT_USERNAME=sandbox
AT_API_KEY=your_sandbox_keySign in at account.africastalking.com/auth/register to get a free sandbox account.