Skip to content

Error catalogue

Every error response from the API uses the PaymentGatewayError envelope with a stable four-digit error_code. This page is the full catalogue. Branch on error_code, never on message.

The leading digit groups the cause:

Credentials. Never auto-retry — these need human intervention or a fresh credential.

CodeSymbolCauseFix
1001INVALID_APP_KEYThe app-key value is unknown, malformed, or revoked.Check the header value matches what’s in the portal. Re-generate if lost.
1002APP_KEY_MISSINGNo app-key header was sent.Add app-key: <your_key> to the request.
1003APP_NOT_ALLOWEDThe key is valid but the caller isn’t on the allow-list (IP CIDR mismatch).Add the source IP to the API key’s allow-list.
1004APP_SUSPENDEDThe key is in SUSPENDED state.Contact your Bloonio account manager. Do not retry.
1005APP_EXPIREDThe key’s hard expiry passed.Regenerate.

Bad request shape or content. Fix on your side and don’t retry the same payload.

CodeSymbolCauseFix
1101INVALID_RECIPIENTSto is empty, too long, or contains non-string values.to is required, max 1 000 entries, every entry must be a string.
1102INVALID_MESSAGEmessage is empty or > 1 600 characters.Trim or split.
1103INVALID_SENDER_IDsender_id has illegal characters or exceeds 11 chars.A–Z, 0–9, ≤11 chars.
1104INVALID_PHONE_NUMBERAn entry in to doesn’t match ^\+?\d{1,15}$.Format as E.164 (+CCNNNNN…). The details array shows which entries failed.
1105INVALID_SENDING_TYPEsending_type not in {immediate, scheduled, recurring}.Use one of the three values.
1106INVALID_SCHEDULED_DATEAn entry in scheduled_dates is malformed or in the past.Use YYYY-MM-DD for date, HH:mm for time, both in merchant timezone, both ≥ now.
1107INVALID_RECURRING_SCHEDULEThe recurring_schedule object has missing fields or out-of-range values.See Sending types for the schema.
1108INVALID_CALLBACK_URLcallback_url is not a valid HTTPS URL.Must be https://….
1109MISSING_REQUIRED_FIELDA required field is missing for the chosen sending_type.See details for the field name.
1110INVALID_FIELD_FORMATGeneric validation failure. The details array has field-level breakdown.Read details, fix each entry.

The request was well-formed but the business state forbids it.

CodeSymbolCauseFix
1201RECIPIENT_LIMIT_EXCEEDEDMore than 1 000 recipients in one call.Split into batches. See Send an instant SMS.
1202INSUFFICIENT_BALANCEYour balance is below the projected total_cost.Top up via the Bloonio dashboard. Retry with smaller batch or after top-up.
1203RECURRING_LIMIT_EXCEEDEDThe recurring schedule would generate more than 5 000 SMS.Shorten end_date, reduce times, or fewer recipients.
1204MESSAGE_NOT_FOUNDmessage_id doesn’t exist, belongs to another merchant, or was purged after 90 days.Verify the ID is yours.
1205OPERATION_NOT_ALLOWEDTrying to cancel/pause/resume a message that isn’t scheduled or recurring (or is already in a terminal state).Check the current status via GET /status.

Rate-limiting, blocked IPs, anti-abuse.

CodeSymbolCauseFix
1301RATE_LIMIT_EXCEEDEDPer-bucket limit hit.Honour Retry-After. See Rate limits.
1302SUSPICIOUS_ACTIVITYAnti-abuse heuristics flagged the request.Contact support if legitimate.
1303IP_BLOCKEDSource IP on a deny-list.Use a different network or appeal to ops.
1304INVALID_WEBHOOK_AUTHWebhook receiver returned 401 repeatedly.Check Basic auth config matches the API key configuration.
1305REQUEST_TOO_LARGERequest body over the 1 MB limit.Reduce payload size — fewer recipients per call.

Server-side issues. Most are transient and retryable: true.

CodeSymbolCauseFix
1401INTERNAL_SERVER_ERRORUnhandled exception inside the gateway.Retry with backoff. If persistent, contact support with request_id.
1402SERVICE_UNAVAILABLEGateway is in maintenance or overloaded.Retry after retry_after.
1403DATABASE_ERRORStorage layer failure.Retry.
1404EXTERNAL_API_ERRORUpstream dependency (carrier connector, balance service) errored.Retry.
1405TIMEOUT_ERRORInternal timeout.Retry.

Failures from the carrier connector or the underlying SMSC.

CodeSymbolCauseFix
1501CARRIER_UNAVAILABLENo carrier connector is available for the destination country.Contact support.
1502SMS_REJECTED_BY_CARRIERThe SMSC rejected the message (typically: invalid number, sender ID not registered for the destination).Check details for the carrier reason.
1503SMS_TIMEOUTNo delivery receipt within 24 h.Treated as failed; no further retry.
1504SMS_BLOCKEDThe destination handset blocked the sender or the message was flagged as spam.Reach out via another channel; review your sender ID and message content.
1505INSUFFICIENT_CARRIER_QUOTAThe carrier connector itself has insufficient quota with the SMSC (operator-level).Bloonio-side issue; contact support. Will be retryable: true for transient cases.