Core concepts / Results & sub-results
Results & sub-results
Every verification returns a headline result (the decision) and a precise sub_result (the reason, mapped from what the mail server actually did). This is the layer other verifiers hide, so here it is in full.
The six results
| result | code | Meaning | Quality | Billing |
|---|---|---|---|---|
| ok | 1 | Mailbox exists and accepts mail. | good | billed |
| catch_all | 2 | Domain accepts every recipient; the exact mailbox cannot be isolated. | risky | billed |
| unknown | 3 | The server gave no usable answer (block, greylist, timeout, DNS). | risky | free |
| error | 4 | Something failed on our side; retry later. | n/a | free |
| disposable | 5 | Throwaway or temporary-inbox domain. | bad | billed |
| invalid | 6 | Mailbox provably does not exist. | bad | billed |
Sub-results the public value you receive
| sub_result | Under the hood | Meaning & what to do | Billing |
|---|---|---|---|
| Deliverable → result: ok | |||
| ok | RCPT accepted (250) | Mailbox accepts mail. On a catch-all domain, also reported here. Send. | billed |
| Could not determine → result: unknown | |||
| greylisted | 4xx deferral | Server asked us to retry. Real mailbox, temporary. Re-check soon. | free |
| ip_blocked | Policy / IP refusal | The domain blocked our sending IP or an anti-spam gateway. Not the mailbox's fault. | free |
| mailbox_full | 552 over quota | Mailbox exists but is out of space, a soft bounce. Risky, may clear later. | free |
| no_code_in_helo_response | Broken HELO | Server misbehaved at the handshake. Cannot judge the mailbox. | free |
| timeout | Connect / stage timeout | Server too slow or dropped us. Retry later. | free |
| dns_error | DNS lookup failed | The domain's DNS did not resolve during the probe. | free |
| unknown | Indeterminate | No usable signal at all. Treat as risky. | free |
| Undeliverable → result: invalid | |||
| no_mailbox | 550 "no such user" | The mailbox does not exist. Hard bounce, remove. | billed |
| invalid_syntax | Malformed address | Not a valid email format. Remove. | billed |
◈
Why so few public values? Internally we track dozens of sub-results for diagnostics, but the API collapses them onto this compact, stable vocabulary so your integration never has to handle them all. The full internal detail is in your dashboard's SMTP probe log.
Quality one word to segment a list
| quality | Maps from | What to do |
|---|---|---|
| good | ok | Safe to send. |
| risky | catch_all, unknown | Deliverable but unproven, send with care. |
| bad | invalid, disposable | Do not send. |