Errors
Errors return a consistent JSON envelope so SDKs and clients can branch on error.type.
Error format
Error envelope
{
"error": {
"type": "validation_error",
"message": "Invalid to address",
"detail": "to[0] is not a valid email",
"field": "to"
}
}Error types
The type enum includes:
validation_errornot_foundrate_limiteddomain_not_verifiedunauthorizedforbiddenconflictpayment_requiredsuppressed_recipientinternal_erroridempotency_conflict
HTTP status codes
| Status | Meaning |
|---|---|
400 | Validation error |
401 | Missing or invalid API key |
402 | Quota or subscription required |
403 | Permission denied or account suspended |
404 | Resource not found |
409 | Conflict (state or idempotency) |
422 | Semantic error (domain not verified, all recipients suppressed) |
429 | Rate limited |
500 | Internal error |