Quickstart
Docs index for AI agents: https://mailvalid.io/llms.txt. Every docs page is also available as Markdown: add
.mdto its URL.
Verify your first email with the MailValid API in under 2 minutes. MailValid checks syntax, domain, MX records and the SMTP mailbox, and flags disposable, role-based and catch-all addresses.
Base URL
https://mailvalid.io/api/v1
1. Get an API key
Create a free account at mailvalid.io/register (100 free credits, no credit card) and generate a key from Dashboard → API Keys. Send it in the X-API-Key header. See Authentication.
2. Verify an email
cURL
curl -X POST https://mailvalid.io/api/v1/verify/single \
-H "X-API-Key: mv_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"email": "john@company.com"}'
Python
import requests
API_KEY = "mv_live_your_key_here"
response = requests.post(
"https://mailvalid.io/api/v1/verify/single",
headers={"X-API-Key": API_KEY},
json={"email": "john@company.com"}
)
result = response.json()
print(f"Status: {result['result']['status']}") # valid, invalid, catch_all, unknown, do_not_mail
print(f"Valid: {result['result']['is_valid']}")
print(f"Confidence: {result['result']['confidence_score']}")
print(f"Reason: {result['result']['status_reason']}")
JavaScript (Node.js)
const API_KEY = "mv_live_your_key_here";
const response = await fetch(
"https://mailvalid.io/api/v1/verify/single",
{
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({ email: "john@company.com" })
}
);
const data = await response.json();
console.log(`Status: ${data.result.status}`); // valid, invalid, catch_all, unknown, do_not_mail
console.log(`Valid: ${data.result.is_valid}`);
console.log(`Confidence: ${data.result.confidence_score}`);
PHP
<?php
$apiKey = "mv_live_your_key_here";
$ch = curl_init("https://mailvalid.io/api/v1/verify/single");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"X-API-Key: " . $apiKey,
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode(["email" => "john@company.com"])
]);
$result = json_decode(curl_exec($ch), true);
echo "Status: " . $result['result']['status']; // valid, invalid, catch_all, unknown, do_not_mail
echo "Valid: " . ($result['result']['is_valid'] ? 'Yes' : 'No');
echo "Confidence: " . $result['result']['confidence_score'];
?>
Next steps
- Single email verification: full request and response reference
- Bulk verification: verify up to 10,000 emails per job
- Status values: what
valid,catch_all,unknownanddo_not_mailmean - MCP server: connect Claude, Cursor or VS Code to MailValid