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.
Create API keys from your dashboard. Keys are shown only once at creation — store them securely.
Verify an Email
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
curl "https://api.mailkitapi.com/verify?email=john@gmail.com" \
-H "Authorization: Bearer ev_live_your_key_here"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
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
{
"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
| Field | Type | Description |
|---|---|---|
| string | The normalized email address that was checked. | |
| valid | boolean | Whether the email appears valid for receiving mail. |
| result | string | "valid", "invalid", "risky", or "unknown". |
| format_valid | boolean | Whether the email syntax is valid. |
| domain_exists | boolean | Whether the domain has DNS records. |
| mx_found | boolean | Whether the domain has MX records for mail delivery. |
| smtp_check | string | "passed", "failed", "unknown", or "skipped". |
| disposable | boolean | Whether the email uses a known disposable/temporary domain. |
| role_account | boolean | Whether the local part is a common role address (admin@, support@, etc.). |
| free_provider | boolean | Whether the domain is a free email provider (Gmail, Yahoo, etc.). |
| did_you_mean | string | null | Suggested correction if a common domain typo was detected. |
| reason | string | null | Human-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
| Status | Description |
|---|---|
| 401 | Missing or invalid API key. |
| 422 | Missing or invalid email parameter. |
| 429 | Plan usage limit exceeded. Upgrade your plan or wait until next month. |
| 500 | Internal 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.