Endpoints

Email

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

GET/email/{address}

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

FieldTypeDescription
emailstringThe address that was checked, normalised.
isValidSyntaxbooleanWhether the address is syntactically valid.
didYouMeanstring | nullA suggested correction for a likely typo (e.g. gmial → gmail), or null.
isDisposablebooleanWhether the domain is a known disposable / throwaway provider.
isFreeProviderbooleanWhether the domain is a free consumer provider (Gmail, Outlook, etc.).
isRoleAccountbooleanWhether the local part is a role address (info@, support@, etc.).
mxFoundbooleanWhether the domain publishes MX records able to receive mail.
smtpCheckstring | nullResult of the live SMTP probe against the mailbox, or null if not performed.
isCatchAllboolean | nullWhether the domain accepts mail to any address (so a mailbox cannot be individually confirmed), or null.
deliverabilitystringAggregated 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.