Email verification API
Verify addresses from your sign-up form, CRM or scripts. JSON over HTTPS with a bearer key; each address uses one credit.
Authentication
Create a key on your account page and send it in the Authorization header. Keys start with eft_.
Verify one address
GET /api/v1/verify?email=… (or POST with a JSON body {"email": "…"}). Typically 1–5 seconds; up to 30 for slow mail servers.
Reasons
| accepted | The mail server confirmed this mailbox exists. |
| accepted_unconfirmed | The mail server accepted this address; we couldn’t test whether it accepts every address. |
| invalid_syntax | This isn’t a valid email address. |
| domain_not_found | The domain doesn’t exist. |
| no_mail_server | The domain doesn’t accept email (no mail server). |
| mailbox_not_found | The mail server says this mailbox doesn’t exist. |
| mailbox_disabled | The mailbox exists but is disabled. |
| mailbox_full | The mailbox is full, so mail would bounce for now. |
| accept_all | The domain accepts mail for every address, so this mailbox can’t be confirmed. |
| disposable | This is a disposable (temporary) email address. |
| possible_typo | The domain looks like a typo of a common provider. |
| greylisted | The mail server asked us to try again later (greylisting or rate limit). |
| probe_blocked | The mail server refused our check, so the mailbox couldn’t be tested. |
| smtp_unreachable | We couldn’t reach the domain’s mail server. |
| dns_error | DNS didn’t answer, so the domain couldn’t be checked. |
| mailbox_not_checked | Domain and syntax are fine; the mailbox itself wasn’t tested. |
Verify a list
POST /api/v1/bulk with up to 50,000 addresses. Credits are charged for unique addresses when the job is created.
Poll GET /api/v1/bulk/{id} until status is done, then fetch GET /api/v1/bulk/{id}/results. Add ?filter=deliverable, safe (deliverable + risky), undeliverable or all, and &format=csv for CSV.
Domain diagnostics
GET /api/v1/domain/{domain} returns MX, SPF, DKIM and DMARC results. Free (no credits).
Account
GET /api/v1/account returns your plan and remaining credits.
Errors and limits
| 401 unauthorized | Missing or revoked key. |
| 402 insufficient_credits | Not enough credits left this month. |
| 400 invalid_request | Missing email, empty list or more than 50,000 addresses. |
| 429 rate_limited | More than 10 requests a second per key. |