Email Verification API

Validate any email address in real time and get a deliverability verdict, risk score, and domain intelligence.

GET POST
https://verifyemail.io/api/email

Request Parameters

Parameter Type Required Description
email string Yes* The full email address to verify (e.g., user@example.com).
domain string No* Alternatively, pass just the domain name to verify domain-level deliverability without checking the local part. Use email or domain, not both.
apikey string No Your API key. Can also be sent via the Authorization: Bearer header (preferred). See Authentication.

* Either email or domain must be provided.

Authentication

Pass your API key using one of these methods:

Bearer Header (Preferred)

Authorization: Bearer YOUR_API_KEY

Query Parameter (Legacy)

?apikey=YOUR_API_KEY

Response Fields

Field Type Description
EMAIL string The email address that was verified.
VERDICT string Deliverability verdict: Valid, Invalid, or Risky.
SCORE number Confidence score from 0 (definitely invalid) to 1 (definitely valid).
LOCAL string The local part of the email (before the @).
DOMAIN string The domain part of the email (after the @).
DOMAIN_VERDICT string Verdict for the domain itself (e.g., whether the domain accepts mail).
MX string The MX (mail exchange) record for the domain.
HAS_SUSPECTED_BOUNCES boolean true if the address has been associated with suspected bounces.
LOCAL_PART_IS_SUSPECTED_ROLE_ADDRESS boolean true if the local part appears to be a role address (e.g., info@, admin@, support@).
HAS_KNOWN_BOUNCES boolean true if the address has confirmed bounces in our database.
DOMAIN_IS_SUSPECTED_DISPOSABLE_ADDRESS boolean true if the domain is a known disposable/temporary email provider.
SUGGESTION string A suggested correction if a common typo is detected (e.g., gmial.comgmail.com). Empty if no suggestion.

Example Response

JSON Response
{ "EMAIL": "test@gmail.com", "VERDICT": "Valid", "SCORE": 0.95, "LOCAL": "test", "DOMAIN": "gmail.com", "DOMAIN_VERDICT": "Valid", "MX": "gmail-smtp-in.l.google.com", "HAS_SUSPECTED_BOUNCES": false, "LOCAL_PART_IS_SUSPECTED_ROLE_ADDRESS": false, "HAS_KNOWN_BOUNCES": false, "DOMAIN_IS_SUSPECTED_DISPOSABLE_ADDRESS": false, "SUGGESTION": "" }

Code Examples

cURL
curl -X GET "https://verifyemail.io/api/email?email=user@example.com" \
  -H "Authorization: Bearer YOUR_API_KEY"
JavaScript (Fetch)
const API_KEY = 'YOUR_API_KEY';
const email = 'user@example.com';

const response = await fetch( `https://verifyemail.io/api/email?email=${encodeURIComponent(email)}`, {
  headers: { 'Authorization': `Bearer ${API_KEY}` }
});

const data = await response.json();
console.log(data.VERDICT); // "Valid", "Invalid", or "Risky"
Python
import requests

API_KEY = "YOUR_API_KEY"
email = "user@example.com"

response = requests.get(
  "https://verifyemail.io/api/email",
  params={"email": email},
  headers={"Authorization": f"Bearer {API_KEY}"}
)

data = response.json()
print(data["VERDICT"]) # "Valid", "Invalid", or "Risky"
PHP
$apiKey = 'YOUR_API_KEY';
$email = 'user@example.com';

$ch = curl_init();
curl_setopt_array($ch, [
  CURLOPT_URL => "https://verifyemail.io/api/email?email=" . urlencode($email),
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer " . $apiKey
  ]
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo $data['VERDICT']; // "Valid", "Invalid", or "Risky"

Rate Limits

Access Level Limit
Unauthenticated 1 request per day per IP address
Authenticated (default plan) 100 requests per month
Paid plans Based on your subscription tier. See Pricing.

Rate limit headers are included in every response. See Rate Limits for details.