Syntax, MX, disposable-domain, free-provider, role-based and typo checks in a single GET. Built for signup forms, list cleaning and CRM hygiene: no black-box scoring, every check visible, free tier with no card.
Every response field is documented and deterministic — no opaque scores.
That was the real API, no signup needed — free tier is 50 checks/day per IP (resets 00:00 UTC). See the docs for the full reference.
# verdict, score, suggestion and per-check detail in one GET — no key needed curl "https://validmail.dev/v1/[email protected]"
Free tier: 50 validations/day per IP, no signup, no card. Full reference in the docs below.
Catch typos and throwaways at the door, before they enter your users table.
Clean newsletter lists before you sendFlag dead domains and throwaway signups before your sender reputation pays for them.
Keep CRM contact data cleanNormalize and verify contacts at import time instead of paying for them forever.
Filter contact-form spamThrowaway addresses in your contact form usually mean throwaway messages.
Qualify SaaS trial signupsKnow at signup whether a trial is a business inbox or a burner.
Verify purchased marketing listsAudit a list's quality before you spend a campaign on it.
invalid fails hard (bad syntax, no MX, or a disposable domain). risky is deliverable-looking but worth a second look — role mailboxes, typo suggestions, transient DNS errors. valid passed everything.
Yes — pass allow_disposable=true and disposable domains downgrade from invalid to risky instead of hard-failing.
No. Usage logging stores the request path only — never the query string, never the address. Rate limiting uses a one-way hash of your IP, never the raw address.
Not right now. The free tier is 50 checks/day per IP, open to everyone. Accounts and keys (for higher volumes and attribution) come later — the endpoint already accepts optional x-api-key headers, so you can adopt one without changing your integration.
Damerau-Levenshtein distance (transpositions count as one edit, like real typing), then same-TLD candidates, then provider popularity. Same input, same answer — always.