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/send

Authorization: Bearer sk_sms_… from Dashboard → SMS.

Body

ParameterTypeDescription
torequiredstring | string[]Phone number(s). Ghana formats like 0244… or +233… work. Max 50 per request.
messagerequiredstringAny text — OTP, alert, promo, etc. Max 1000 characters.
fromstringOptional. "random" or a number from GET /api/v1/sms/from. Omit to use your dashboard default.
metadataobjectOptional 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

ParameterTypeDescription
401UnauthorizedInvalid or missing sk_sms_ key.
402Payment RequiredInsufficient SMS credits — buy more first.
400Bad RequestInvalid phone, empty message, or bad from number.
503UnavailableNo sender number available right now.