API Documentation

Everything you need to integrate MailKit API into your application.

Authentication

All API requests require a valid API key sent in the Authorization header as a Bearer token.

Authorization: Bearer ev_live_your_key_here

Create API keys from your dashboard. Keys are shown only once at creation — store them securely.

Verify an Email

GET/verify?email=john@gmail.com

Pass an email address as a query parameter. The API runs format validation, DNS and MX lookups, disposable domain checks, role account detection, and optionally SMTP verification.

Examples

curl

bash
curl "https://api.mailkitapi.com/verify?email=john@gmail.com" \
  -H "Authorization: Bearer ev_live_your_key_here"

Python

python
import requests

API_KEY = "ev_live_your_key_here"

response = requests.get(
    "https://api.mailkitapi.com/verify",
    params={"email": "john@gmail.com"},
    headers={"Authorization": f"Bearer {API_KEY}"},
)

data = response.json()
print(data["valid"])       # True
print(data["disposable"])  # False
print(data["result"])      # "valid"

JavaScript

javascript
const API_KEY = "ev_live_your_key_here";

const res = await fetch(
  "https://api.mailkitapi.com/verify?email=john@gmail.com",
  { headers: { Authorization: `Bearer ${API_KEY}` } }
);

const data = await res.json();
console.log(data.valid);      // true
console.log(data.disposable); // false
console.log(data.result);     // "valid"

Response

json
{
  "email": "john@gmail.com",
  "valid": true,
  "result": "valid",
  "format_valid": true,
  "domain_exists": true,
  "mx_found": true,
  "smtp_check": "skipped",
  "disposable": false,
  "role_account": false,
  "free_provider": true,
  "did_you_mean": null,
  "reason": null
}

Response Fields

FieldTypeDescription
emailstringThe normalized email address that was checked.
validbooleanWhether the email appears valid for receiving mail.
resultstring"valid", "invalid", "risky", or "unknown".
format_validbooleanWhether the email syntax is valid.
domain_existsbooleanWhether the domain has DNS records.
mx_foundbooleanWhether the domain has MX records for mail delivery.
smtp_checkstring"passed", "failed", "unknown", or "skipped".
disposablebooleanWhether the email uses a known disposable/temporary domain.
role_accountbooleanWhether the local part is a common role address (admin@, support@, etc.).
free_providerbooleanWhether the domain is a free email provider (Gmail, Yahoo, etc.).
did_you_meanstring | nullSuggested correction if a common domain typo was detected.
reasonstring | nullHuman-readable explanation when the email is invalid or risky.

Result Values

valid— Email format is correct, domain exists, MX records found.
invalid— Email is definitely not deliverable (bad format, non-existent domain, or SMTP rejection).
risky— Email may work but has risk signals (disposable domain, no MX records).
unknown— Could not determine validity (DNS timeout, etc.).

Error Codes

StatusDescription
401Missing or invalid API key.
422Missing or invalid email parameter.
429Plan usage limit exceeded. Upgrade your plan or wait until next month.
500Internal server error. Contact support if this persists.

Rate Limits

API requests are limited by your subscription plan:

  • Free: 1,000 requests/month
  • Starter ($9/mo): 10,000 requests/month
  • Pro ($29/mo): 100,000 requests/month

All plans include every verification check — format, DNS, MX, disposable detection, role accounts, free provider detection, and typo suggestions. Plans differ only in request volume and support level.

When you exceed your limit, the API returns a 429 status with details about your usage. Upgrade from your dashboard at any time.