Send SMS
Send any message to one or many numbers — OTP, alerts, bulk.
No sender ID. Texts go from a normal phone number. Requires SMS credits and a sk_sms_ key.
POST
/api/v1/sms/sendAuthorization: Bearer sk_sms_… from Dashboard → SMS.
Body
| Parameter | Type | Description |
|---|---|---|
torequired | string | string[] | Phone number(s). Ghana formats like 0244… or +233… work. Max 50 per request. |
messagerequired | string | Any text — OTP, alert, promo, etc. Max 1000 characters. |
from | string | Optional. "random" or a number from GET /api/v1/sms/from. Omit to use your dashboard default. |
metadata | object | Optional JSON stored with the log. |
Examples
curl -X POST https://waaguan.com/api/v1/sms/send \
-H "Authorization: Bearer sk_sms_YOUR_SMS_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "0244123456",
"message": "Your OTP is 48291"
}'Bulk
{
"to": ["0244123456", "0201234567"],
"message": "Your order is ready for pickup.",
"from": "random"
}Each recipient uses 1 credit.
Response
{
"status": true,
"message": "Queued SMS from 0244123456",
"data": {
"id": "3f2a1b4c-5d6e-7f80-91a2-b3c4d5e6f708",
"ids": ["3f2a1b4c-5d6e-7f80-91a2-b3c4d5e6f708"],
"to": ["+233244123456"],
"from": "0244123456",
"status": "pending",
"smsgate_message_id": "zXDYfTmTVf3iMd16zzdBj",
"count": 1
}
}Errors
| Parameter | Type | Description |
|---|---|---|
401 | Unauthorized | Invalid or missing sk_sms_ key. |
402 | Payment Required | Insufficient SMS credits — buy more first. |
400 | Bad Request | Invalid phone, empty message, or bad from number. |
503 | Unavailable | No sender number available right now. |