Email Status Values
Docs index for AI agents: https://mailvalid.io/llms.txt. Every docs page is also available as Markdown: add
.mdto its URL.
MailValid uses industry-standard status codes, the same ones ZeroBounce and NeverBounce use. The status field holds the verification result. The status_reason field gives the specific machine-readable reason.
Status codes
| Status | is_valid | Description | Action |
|---|---|---|---|
valid |
true | SMTP confirmed the mailbox exists. Safe to send (under 2% bounce rate). | Safe to send |
invalid |
false | Address will bounce: bad syntax, no domain, or mailbox not found | Do not send |
catch_all |
false | Domain accepts all addresses. Cannot confirm the individual mailbox | Send with caution |
unknown |
false | Could not determine validity (provider blocked SMTP, timeout). Free: 0 credits charged | Retry later or use the bounce webhook |
do_not_mail |
false | Address may work but is risky: disposable, role-based (info@, support@), or spam complaint | Do not send marketing |
Sub-status reasons
The status_reason field gives the specific reason behind the status:
| status_reason | Status | Meaning |
|---|---|---|
mailbox_confirmed |
valid |
SMTP server confirmed the mailbox exists (250 response) |
historical_delivery_confirmed |
valid |
Email was previously delivered successfully (from bounce webhook data) |
mailbox_not_found |
invalid |
SMTP server rejected the recipient (550 response) |
failed_syntax_check |
invalid |
Email address format is invalid |
no_dns_entries |
invalid |
Domain does not exist (no DNS records) |
no_mx_records |
invalid |
Domain exists but has no MX records configured |
historical_hard_bounce |
invalid |
Email previously hard-bounced (from bounce webhook data) |
accept_all |
catch_all |
Domain accepts all addresses; individual mailbox cannot be confirmed |
failed_smtp_connection |
unknown |
Provider blocks SMTP verification (Microsoft, Apple) |
antispam_system |
unknown |
Anti-spam system blocked the verification attempt |
greylisted |
unknown |
Server uses greylisting and temporarily rejected the check |
mail_server_temporary_error |
unknown |
Mail server returned a temporary error |
disposable |
do_not_mail |
Disposable/temporary email domain (e.g. mailinator.com) |
role_based |
do_not_mail |
Role-based address (info@, support@, admin@) |
historical_complaint |
do_not_mail |
Recipient previously filed a spam complaint (from bounce webhook data) |
Confidence score
Every result includes a confidence_score from 0 to 100 that shows how confident MailValid is in the result:
| Range | Meaning |
|---|---|
| 90–100 | Very high confidence: SMTP confirmed, historical hard bounce, or syntax/domain failure |
| 70–89 | High confidence: historical delivery data, trusted provider response |
| 40–69 | Medium confidence: catch-all domain, DNS-only verification |
| 0–39 | Low confidence: provider blocked verification, timeout |
Billing by status
valid, invalid, catch_all and do_not_mail cost 1 credit each, whether fresh or cached. unknown results are free.