Errors
Every non-2xx response shares this shape:
{
"error": "QuotaExceeded",
"message": "Monthly email limit of 1500 reached and only 0 credit(s) remain. Buy more credits or upgrade your plan to continue sending."
}Validation errors additionally include a details array with per-field messages. Quota errors include a usage object:
{
"error": "QuotaExceeded",
"message": "Monthly email limit of 1500 reached and only 0 credit(s) remain...",
"usage": {
"sent": 1500,
"limit": 1500,
"credits": 0,
"needed": 1
}
}Error codes
| Status | Error | When |
|---|---|---|
| 400 | Validation Error | Request body failed schema validation (e.g. invalid email address, missing required field). |
| 400 | InvalidAttachment | An attachment is too large, is a blocked file type, isn’t valid base64, or its path couldn’t be downloaded. |
| 400 | InvalidJSON | The request body isn’t valid JSON — most often raw file bytes sent where base64 was expected. |
| 413 | PayloadTooLarge | The whole request body exceeded the size cap. Send fewer or smaller attachments, or pass a path instead. |
| 401 | Unauthorized | Missing, invalid, or revoked API key. |
| 403 | Forbidden | The from domain isn’t verified yet, or the account is suspended. |
| 404 | Not Found | The resource (email, domain, API key) doesn’t exist or isn’t yours. |
| 409 | Conflict | Domain already registered on this or another account. |
| 429 | QuotaExceeded | Monthly plan quota and any purchased credits are both exhausted. |
| 429 | DailyQuotaExceeded | Free plan’s 150 emails/day cap reached. |
| 502 | Email Send Failed | The email provider rejected the send after your request passed all cmdsend-side checks. |