Postio email validation goes past a regex: it checks syntax, resolves MX records and runs a live SMTP probe, then rolls the signals into one deliverability verdict — with flags for disposable, role and free-provider addresses.
Validate an email
Billable on a result. Pass the address in the path (URL-encoded). The SMTP probe means this endpoint is an order of magnitude slower than an address lookup — validate at the point of capture, not on every keystroke.
curl "https://api.postio.co.uk/v1/email/jane%40example.com" \
-H "x-api-key: pk_..."{
"success": true,
"results": [
{
"email": "jane@example.com",
"isValidSyntax": true,
"didYouMean": null,
"isDisposable": false,
"isFreeProvider": false,
"isRoleAccount": false,
"mxFound": true,
"smtpCheck": "deliverable",
"isCatchAll": false,
"deliverability": "deliverable"
}
],
"meta": { "countResults": 1, "requestId": "..." }
}The email result object
| Field | Type | Description |
|---|---|---|
| string | The address that was checked, normalised. | |
| isValidSyntax | boolean | Whether the address is syntactically valid. |
| didYouMean | string | null | A suggested correction for a likely typo (e.g. gmial → gmail), or null. |
| isDisposable | boolean | Whether the domain is a known disposable / throwaway provider. |
| isFreeProvider | boolean | Whether the domain is a free consumer provider (Gmail, Outlook, etc.). |
| isRoleAccount | boolean | Whether the local part is a role address (info@, support@, etc.). |
| mxFound | boolean | Whether the domain publishes MX records able to receive mail. |
| smtpCheck | string | null | Result of the live SMTP probe against the mailbox, or null if not performed. |
| isCatchAll | boolean | null | Whether the domain accepts mail to any address (so a mailbox cannot be individually confirmed), or null. |
| deliverability | string | Aggregated verdict — the single field to branch on for accept / review / reject. |
How to use the verdict
Branch on deliverability for your accept / review / reject decision, and use the individual flags to tune it: block isDisposable at signup, route isRoleAccount addresses to a shared-inbox flow, and surface didYouMean to the user to catch typos before they cost you a bounce. Treat a isCatchAlldomain as “cannot confirm the individual mailbox” rather than “bad”.
FAQ
- How does Postio verify an email address?
- Postio checks the syntax, resolves the domain’s MX records, and runs a live SMTP probe against the mailbox. It combines these into a single deliverability verdict and adds flags for disposable domains, role accounts, free providers, catch-all domains and likely typos.
- Can Postio detect disposable email addresses?
- Yes. The email result includes an isDisposable boolean that is true when the address belongs to a known disposable or throwaway provider — useful for blocking throwaway signups.
- Why is email validation slower than address lookup?
- Email validation performs a live SMTP probe against the receiving mail server, which involves a network round-trip to a third party. That makes it an order of magnitude slower than an address lookup, so validate at the point of capture rather than on every keystroke.