Products

Email Verification API with mailbox-level SMTP checks

Send a list of addresses and get back a verdict for each one: deliverable, undeliverable, risky, disposable, invalid or unknown, with the reason. The check talks to the mail server the way a sending server would, then stops before any message is sent.

POST/v1/emails/verify

200POST /v1/emails/verify
{
  "data": [
    {
      "email": "hello@locomint.io",
      "status": "deliverable",
      "reason": "mailbox_exists",
      "syntax_valid": true,
      "mx_found": true,
      "disposable": false,
      "role_account": true,
      "catch_all": false,
      "smtp_checked": true
    },
    {
      "email": "nobody@mailinator.com",
      "status": "disposable",
      "reason": "disposable_domain"
    }
  ],
  "meta": {
    "credits_used": 2,
    "source": "verifier"
  }
}

What you get

Every field in the response.

FieldMeaning
statusdeliverable, undeliverable, risky (catch-all domain), disposable, invalid, unknown, or valid when the server could not be asked
reasonmailbox_exists, mailbox_not_found, no_mail_server, domain_accepts_mail, bad_syntax and others
syntax_valid, mx_foundRFC 5322 shape and whether the domain has a mail server
disposable, free_provider, role_accountFlags for temporary-mail domains, webmail providers and role mailboxes
catch_all, smtp_checked, smtp_codeWhether the domain accepts anything, whether the mailbox was probed, and the server's answer

How it works

What happens between your request and the response.

Cheap checks first

Syntax, domain, MX records, disposable and free-provider lists. Most bad addresses fail here without touching a mail server.

One conversation per server

EHLO, MAIL FROM, RCPT TO, QUIT. At most two connections per mail server, catch-all detected once per domain, and no DATA command ever.

Honest unknowns

When a server greylists or refuses to answer, the row is unknown with the SMTP code, not a guess.

Deduplicated

Duplicate addresses in one call are checked and charged once.

Pricing

One credit system for every endpoint.

One credit per address, up to 100 per call. A call that would exceed your monthly quota is refused before any work and costs nothing.

See all plans

Questions

Things people ask about the Email Verification API.

Does verification send an email to the address?

No. The check ends after the server answers RCPT TO, before any message data is sent. The mailbox owner sees nothing.

What does risky mean?

The domain accepts mail for any address (catch-all), so the server cannot confirm this particular mailbox exists. Send to risky addresses in small batches and watch bounces.

How long does a call take?

Cheap checks are instant. Mailbox probes depend on the mail servers involved; a list of 100 addresses across many domains usually finishes in under a minute, and the call stops at 90 seconds with a 504 and nothing charged.