Live sending is refused
Six refusals block a live send because of your domain or your account state. Match the error type to its cause, from an unverified domain to a suspended account.
Six checks refuse a send because of the sending domain or the account's state. The status and error type together identify which one:
| Status | type | Cause |
|---|---|---|
| 403 | unverified_domain_required | The org has no verified domain at all |
| 422 | validation_error, param: "from" | The from domain is not itself verified |
| 403 | account_suspended | Setup was never completed |
| 403 | account_rejected | A staff member declined the account |
| 403 | forbidden | The account is paused |
| 429 | account_under_review | A new account's live sending is bounded during review |
403 unverified_domain_required
The org-level gate: your organization has no verified domain at all.
{
"error": {
"type": "unverified_domain_required",
"message": "Your organization has no verified sending domain. Add and verify a domain before sending live email, or use test mode."
}
}
Fix: verify a domain, or send in test mode, which is exempt from this check.
422 on the from field
The per-send check: the from domain itself is not verified, even if some other domain on the org is. param is "from":
{
"error": {
"type": "validation_error",
"message": "The request was invalid.",
"param": "from"
}
}
Fix: verify that exact domain.
Why a parent domain is not enough
orders@mail.acme.com needs mail.acme.com itself verified. A verified acme.com does not cover it. See Subdomain or root domain for why the check works this way.
Check which domains are verified
GET /v1/domains returns each domain on the org alongside its current status:
curl https://api.mailfully.com/v1/domains \
-H "Authorization: Bearer mf_live_xxxxxxxxxxxx"
Read status per row; only verified domains pass the from check. See GET /v1/domains.
403 account_suspended
Setup was never completed. Verify a sending domain; this clears itself, no ticket needed.
403 account_rejected
A staff member declined the account. Only a human can undo this; contact support rather than retrying.
403 forbidden
The account is paused. Sending stays refused until the pause is lifted; do not retry automatically.
429 account_under_review
A new account's live sending is bounded while staff review it, and this is a review state rather than a quota. See New accounts for how long the review takes and why retrying on a timer doesn't help.
Test mode is exempt from the domain checks
Test mode skips both the org-level and per-send domain checks, so you can build and test your integration before DNS is in place.
