Errors

Error format and codes.

Errors use standard HTTP status codes and a consistent JSON body:

{
  "error": {
    "code": "sender_id_not_approved",
    "message": "This sender ID is not approved for your account",
    "request_id": "req_7e099f34-ad34-475b-8549-76c26767059a"
  }
}

Use code in your code; message is for people and may change. Include request_id when you contact support.

Status codes

StatusMeaning
400The request is invalid. Fix it before retrying.
401The API key is missing or invalid.
402Your balance is too low.
403The key is not allowed to do this.
404The resource does not exist on your account.
409The request conflicts with an earlier one.
429Too many requests. Wait and retry.
5xxSomething went wrong on our side. Retry with the same idempotency key.

Error codes

CodeStatusWhat to do
validation_error400A field is missing or invalid. message says which.
invalid_recipient400The number is not a valid Ghana mobile number.
message_too_long400Shorten the message to 480 characters or fewer.
missing_text400Give the batch or each recipient some text.
no_valid_recipients400None of the batch recipients were valid.
invalid_api_key401Check the key, or create a new one.
insufficient_balance402Top up your wallet.
sender_id_not_approved403Use an approved sender ID, or request one.
ip_not_allowed403Call from an allowed IP, or update the key's allowlist.
account_suspended403Contact support.
not_found404Check the ID.
idempotency_conflict409Use a new idempotency key for a different request.
rate_limited429Slow down. See Rate limits.
otp_locked429Too many wrong codes. Send a new code.
otp_rate_limited429Too many codes sent to this number. Try later.

On this page