API Errors
Every error response from the Email API has the same shape:
{
"success": false,
"error": "INSUFFICIENT_BALANCE",
"message": "Wallet balance ₹0.00 — recharge to continue sending."
}| Field | Meaning |
|---|---|
success | Always false for errors |
error | Stable code — build retry/handling logic against this |
message | Human-readable text. May change for clarity over time |
field | (When relevant) Specific field that caused the error |
For the complete error code reference + retry guidance, see Knowledge Base → Errors.
HTTP status codes
| Code | Meaning |
|---|---|
200 | Success |
201 | Resource created |
400 | Bad request — fix your inputs |
401 | Missing / invalid API key |
402 | Insufficient wallet balance — recharge |
403 | Sandbox cap, sending paused, or feature locked |
404 | Resource not found |
409 | Conflict (duplicate name, etc.) |
429 | Rate limit hit — back off |
500 | Server error — retry with backoff |
502 | Upstream gateway error (Zoho etc.) |
503 | Database / dependency unavailable |
Retry strategy
| Status | Retry? |
|---|---|
| 4xx (except 408 / 429) | No — fix the request |
| 408 / 429 | Yes — exponential backoff |
| 5xx | Yes — up to 3 attempts with backoff |
See Knowledge Base → Errors for per-code guidance.