Reference
Error Codes
All errors follow a consistent JSON format with a human-readable message and a machine-readable code.
All errors follow a consistent JSON format with a human-readable message and a machine-readable code.
{
"error": "Invalid API key",
"code": "UNAUTHORIZED"
}| Code | Status | Description |
|---|---|---|
UNAUTHORIZED | 401 | API key is missing, invalid, or revoked. |
FORBIDDEN | 403 | API key does not have permission for this action. |
NOT_FOUND | 404 | The requested resource does not exist. |
VALIDATION_ERROR | 400 | Request body failed validation. Check the error message for details. |
CONFLICT | 409 | Resource already exists (e.g. duplicate domain). |
RATE_LIMITED | 429 | Too many requests. Back off and retry. |
MONTHLY_LIMIT_EXCEEDED | 429 | Monthly email send quota reached. Upgrade your plan. |
DAILY_LIMIT_EXCEEDED | 429 | Daily send ceiling reached. New accounts ramp up over their first ~7 days (paid); resets at midnight UTC. |
PLAN_LIMIT_EXCEEDED | 403 | Action not allowed on your current plan (e.g. domain limit reached). |
DOMAIN_NOT_VERIFIED | 403 | The sender domain is not verified for your organisation. Add and verify the domain before sending. |
ALL_SUPPRESSED | 422 | All recipient addresses are on the suppression list. |
SENDING_SUSPENDED | 403 | Account suspended due to a high bounce or complaint rate in the last 7 days. Contact [email protected] to reinstate. |
SERVICE_PAUSED | 503 | Sending is temporarily paused platform-wide. Retry after a short delay. |
BAD_REQUEST | 400 | The request was malformed and could not be processed. |
INTERNAL_ERROR | 500 | An unexpected server error occurred. Retry after a short delay. |