Errors and HTTP Status Codes

Error envelope

{
  "error": {
    "code": "validation",
    "message": "Missing required field: phone"
  }
}

HTTP status codes

StatusMeaning
200OK
201Created
202Accepted (queued / asynchronous)
400Validation error / bad request
401Missing or invalid API key
403Disallowed scope, IP, or partner
404Resource not found
422Semantic validation error (for example, form fields)
429Rate limit
500Server error

Common error.code values

CodeDescription
unauthorizedInvalid API key or token
forbiddenMissing scope, denied IP, or wrong partner
validationInvalid request body
not_foundUnknown ID, phone number, or template
blockedAccount has opted out
bot_errorFlow or bot engine error

Delivery states (messages)

StateMeaning
queuedAccepted, not yet fully delivered
sendingSending in progress
deliveredDelivered to the channel / in-app
readRead by the user (when tracked)
failedAll channels failed
expiredExpired

Idempotency conflicts

Reusing an idempotency_key returns the original message with 200 instead of creating a duplicate.