Email Validation API Docs

API Status

Getting Started

All API requests require authentication using an API key. You can find your API key in the dashboard.

Header: "x-api-key: your-api-key"

Single Verification

Verify a single email address or domain for validity, disposable status, privacy services, and deliverability.

Endpoint

GET /v1/verify

Parameters

NameTypeRequiredDescription
inputstringYesEmail address or domain to verify (e.g., [email protected] or example.com)

Response Fields

FieldDescription
validIndicates if the email/domain passes basic validation (format, deliverability). Not used for blacklist/whitelist decisions.
blockRecommendation to block this email/domain. For blacklist/whitelist use only this field: blacklist → true; whitelist → false; not in whitelist (when whitelist enabled) → true. E.g. gmail.com can be valid: true, block: true when not in whitelist.
disposableDetermines if the email address is a temporary or disposable email address
privacyDetermines if the mail server is utilizing an email alias or forwarder
applePrivateEmailIndicates if the email is an Apple Private email address
deliverableChecks if the mailbox exists and can receive emails
domainThe domain part of the email address
email_addressThe email address
catch_allIndicates if the domain has a catch-all email configuration that accepts all incoming emails regardless of the recipient address
mx_foundIndicates if the domain has valid mail servers (MX records)
remaining_creditsThe number of API credits remaining in your account

Blacklist / Whitelist: Only the block field reflects list membership. Blacklist → block: true; whitelist → block: false; not in whitelist (when enabled) → block: true. Do not use valid to decide whether to block based on lists.

Example Response

{
  "valid": true,
  "block": false,
  "disposable": false,
  "privacy": false,
  "applePrivateEmail": false,
  "deliverable": true,
  "domain": "example.com",
  "email_address": "[email protected]",
  "catch_all": false,
  "mx_found": true,
  "error": null,
  "remaining_credits": 99
}

Code Examples

curl "https://api.verify-email.app/v1/[email protected]" \
  -H "X-API-Key: your-api-key"

Try it out

You need an API key to test the endpoints.

Batch Verification

Verify multiple email addresses or domains in a single request (max 100 items).

Endpoint

POST /v1/verify/batch

Parameters

NameTypeRequiredDescription
inputsarray of stringsYesArray of email addresses or domains to verify

Code Examples

curl -X POST "https://api.verify-email.app/v1/verify/batch" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-api-key" \
  -d '{
    "inputs": [
      "[email protected]",
      "[email protected]"
    ]
  }'

Try it out

You need an API key to test the endpoints.

Try with different domains:

Deliverable-Only Check

Fast email deliverability check using MX and SMTP verification without external API calls. Returns only deliverability-related fields for faster response times.

Endpoint

GET /v1/verify/deliverable

Parameters

NameTypeRequiredDescription
inputstringYesEmail address to check deliverability (e.g., [email protected]). Domain-only input is not supported for this endpoint.

Response Fields

FieldDescription
validIndicates if the email/domain passes basic validation (format, deliverability). Not used for blacklist/whitelist decisions.
deliverableChecks if the mailbox exists and can receive emails
mx_foundIndicates if the domain has valid mail servers (MX records)
catch_allIndicates if the domain has a catch-all email configuration that accepts all incoming emails regardless of the recipient address
email_addressThe email address
remaining_creditsThe number of API credits remaining in your account

Example Response

{
  "valid": true,
  "deliverable": true,
  "mx_found": true,
  "catch_all": false,
  "email_address": "[email protected]",
  "remaining_credits": 99
}

Code Examples

curl "https://api.verify-email.app/v1/verify/[email protected]" \
  -H "X-API-Key: your-api-key"

Try it out

You need an API key to test the endpoints.

Whitelist & Blacklist

Control which emails and domains get blocked using per-user blacklist and whitelist rules. These lists directly control the block field in every verification response.

{}

The block field

Every verification response includes a block field. Look at this field to determine if the email/domain should be blocked based on your lists:

trueEmail or its domain is in the blacklist → block: true. Adding a domain blocks all emails on it.
trueWhitelist is enabled but the email/domain is not in it → block: true.
falseWhitelist is enabled and the email or its domain is in it → block: false.
Neither list applies → block follows the normal verification result.

Overview

Blacklist

Always block specific emails or entire domains. For example, adding example.com to the blacklist means any email @example.com will return block: true — no matter what the verification result is.

Whitelist

Only allow specific emails or entire domains. When the whitelist is enabled, only listed entries get block: false — everything else gets block: true. For example, adding gmail.com means any @gmail.com email is allowed, but [email protected] would be blocked. When disabled, the whitelist has no effect.

You can add a full email ([email protected]) or a whole domain (example.com). Adding a domain applies to every email on it. Values are case-insensitive.

How it works

Order of evaluation

1
Blacklist firstIf the email address or its domain is in your blacklist, the result is block: true. No further list logic is applied.
2
Whitelist (if enabled)If the email/domain is in the whitelist → block: false. If not → block: true.
3
Whitelist disabledOnly the blacklist and normal verification apply.

Blacklist always wins. A blacklisted address stays blocked even if it is also on the whitelist.

What gets matched

Email verification — The API checks both the full email address and its domain against both lists. A match on either applies the list rule.
Domain verification — Only the domain is checked against the blacklist and (if enabled) the whitelist.

Quick reference

Whitelist enabledIn blacklistIn whitelistblock value
NoYestrue
NoNoNormal
YesYesAnytrue
YesNoYesfalse
YesNoNotrue

List API endpoints

All list endpoints require header: X-API-Key: your-api-key

Blacklist

GET/v1/blacklist
List all blacklist entries
POST/v1/blacklist
Add an email or domain · { "value": "..." }
DELETE/v1/blacklist
Remove an entry · value=...

Whitelist

GET/v1/whitelist
List all whitelist entries
POST/v1/whitelist
Add an email or domain · { "value": "..." }
DELETE/v1/whitelist
Remove an entry · value=...
GET/v1/whitelist/enabled
Get whitelist enabled state · { "enabled": boolean }
PUT/v1/whitelist/enabled
Set whitelist enabled / disabled · { "enabled": true | false }

Value format

Invalid values are rejected with 400. Entries are stored normalized. Duplicates are upserted as a single entry.

Where lists are applied

List rules are applied after verification. Single and batch email verification and domain verification responses already include the user's blacklist and whitelist in the block field.

MCP Server (AI Agent Integration)

Integrate email verification directly into AI agents like Cursor and Claude Desktop using the Model Context Protocol (MCP). Your AI assistant can verify emails, check domains, and validate syntax without leaving the editor.

Setup

Add the following configuration to your .cursor/mcp.json or Claude Desktop config file:

{
  "mcpServers": {
    "email-checker": {
      "url": "https://api.verify-email.app/mcp",
      "headers": {
        "X-API-Key": "your-api-key"
      }
    }
  }
}

Available Tools

ToolDescriptionInputCredits
verify_emailFull email verification including syntax, MX, SMTP, disposable, privacy, and deliverability checks{ email: string }1
verify_domainFull domain verification including MX records, disposable, privacy, and catch-all detection{ domain: string }1
check_deliverabilityFast deliverability-only check using MX and SMTP verification without external API calls{ email: string }1
verify_batchBatch verification for up to 100 emails or domains in a single request{ inputs: string[] }1 per item
validate_email_syntaxQuick local syntax validation against RFC 5322 with no network calls{ email: string }0 (free)