| 400 | invalid_mailbox_name | Mailbox name doesn’t meet format requirements |
| 400 | missing_idempotency_key | Send endpoint requires Idempotency-Key header |
| 400 | unsupported_field | The request carried a field OpenMail does not support — notably bcc, which is rejected rather than silently dropped. See Sender rules. |
| 401 | unauthorized | Invalid or missing API key |
| 402 | spend_cap_paused | Monthly spend limit reached; domain creation is paused |
| 403 | feature_requires_paid_plan | Paid-only feature used on free plan (e.g. external replyTo) |
| 403 | plan_limit | Custom domains require Pro or above |
| 403 | forbidden | A scoped key reached outside its pod or inbox, or attempted an action its scope doesn’t allow — including any /v1/policy call, or deleting / re-checking a domain |
| 403 | recipient_not_permitted | A to, cc, or replyTo address is not permitted by the inbox’s outbound sender rules. The refused address is in recipient, and the whole send is rejected. |
| 403 | inherited_rule | Attempted to delete a sender rule owned by a parent scope. Remove it at the scope that owns it. |
| 404 | not_found | Resource doesn’t exist or doesn’t belong to your account |
| 409 | address_taken | Mailbox name or address already in use |
| 409 | domain_exists | Domain already added on this account |
| 409 | domain_taken | Domain belongs to another account |
| 409 | identity_exists | Domain needs manual reconnection |
| 422 | invalid_domain | Domain is malformed, not verified, not yours, or scoped to a different pod |
| 422 | domain_blocked | Domain flagged as unsafe |
| 422 | domain_has_inboxes | Domain still has inboxes |
| 422 | recipient_suppressed | Recipient is on the suppression list |
| 422 | api_key_limit_reached | Pod or inbox already has 20 active API keys |
| 429 | rate_limit_exceeded | Too many requests - check Retry-After header |
| 429 | cold_outreach_limit | Cold send limit exceeded for new inbox |
| 502 | provider_error | Mail provider failed to set up or check the domain |