Skip to content
Docs

Verify a single address in real time.

Base URLhttps://api.emailit.com/v2AuthenticationErrorsRate limits

Verify an address

Verifies one email address and returns the result in the response. Each verification costs 5 credits, charged before the check runs. To verify many addresses at once, create a verification list. Requires an API key with full scope.

POST/email-verifications

Request body

emailstringRequired

Address to verify. A value that isn’t a valid address still returns 200, with result: "invalid" and a score of 0, and is charged.

modestring

fast (default) checks syntax, disposable and role-based addresses, free providers, gibberish, MX records and domain age. full also connects to the recipient’s mail server to check whether the mailbox exists, is disabled or is full, and whether the domain accepts all addresses. In fast mode, the mailbox checks are null.

Returns

Returns 200 OK with an email_verification object. Emailit also sends an email_verification.created webhook event.

Status When
400 email is missing or mode isn’t fast or full (standard validation error).
402 The workspace doesn’t have 5 credits left. The body is {"error": {"message": "…", "code": 402}}.

Result

result Meaning
safe Passed every check and scored 70 or more.
invalid The syntax is invalid or the domain has no MX records, so it can’t receive email.
disposable The domain belongs to a disposable email service.
disabled The mailbox exists but is disabled. full mode only.
inbox_full The mailbox is full. full mode only.
role A role-based address such as info@ or support@.
unknown No check failed, but the score is below 70.

Score and risk

score runs from 0 to 100. risk is high when the syntax is invalid, the domain has no MX records, the address is disposable or the mailbox is disabled. Otherwise it follows the score: low from 80, medium from 50, and high below 50.

Fields

statusstring

completed for single verifications.

checksobject

Individual checks: valid_syntax, disposable, role_account, free_email, gibberish and has_mx_records (booleans), domain_age (age of the domain in days, or null if unknown), and the full-mode checks smtp_connect, deliverable, disabled, inbox_full and catch_all (null in fast mode).

addressobject

The address split into mailbox, domain, suffix (the part after +, or null) and root (the address without the suffix).

did_you_meanstring | null

Suggested correction for a likely typo, for example ada@gmail.com for ada@gmial.com.

mx_recordsobject[]

The domain’s MX records, each with priority and exchange.

POST/email-verifications
Terminal
curl -X POST https://api.emailit.com/v2/email-verifications \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"email": "ada@example.com"}'
JSON
{
  "id": "ev_2xLd4Wq8Bn1Ys6Pk3Rm9Tc0Fh5a",
  "object": "email_verification",
  "email": "ada@example.com",
  "status": "completed",
  "score": 100,
  "risk": "low",
  "result": "safe",
  "mode": "fast",
  "checks": {
    "valid_syntax": true,
    "disposable": false,
    "role_account": false,
    "inbox_full": null,
    "deliverable": null,
    "disabled": null,
    "catch_all": null,
    "free_email": false,
    "smtp_connect": null,
    "has_mx_records": true,
    "domain_age": 10957,
    "gibberish": false
  },
  "address": {
    "mailbox": "ada",
    "domain": "example.com",
    "suffix": null,
    "root": "ada@example.com"
  },
  "did_you_mean": null,
  "mx_records": [
    { "priority": 10, "exchange": "mx1.example.com" }
  ],
  "created_at": "2026-10-01T10:20:31.118000+00:00",
  "updated_at": "2026-10-01T10:20:31.118000+00:00"
}

Was this page helpful?

Thanks for the feedback.

Thanks, we read every message.