The single verification endpoint lets you verify one email address per request. It's ideal for real-time verification in sign-up forms, CRMs, or any workflow where you need instant results.
POST /api/v1/verifyHeaders:
Header | Required | Description |
|---|---|---|
Authorization | Yes |
|
Content-Type | Yes |
|
Idempotency-Key | No | UUID for retry safety (cached 24 hours) |
Body:
{
"email": "user@example.com"
}Success (200):
{
"email": "user@example.com",
"status": "deliverable",
"reason": "valid_mailbox",
"isDeliverable": true,
"isDisposable": false,
"isRoleBased": false,
"isCatchAll": false
}Response fields:
Field | Type | Description |
|---|---|---|
string | The email address that was verified | |
status | string |
|
reason | string | Detailed reason for the status |
isDeliverable | boolean | Whether the email can receive messages |
isDisposable | boolean | Whether the email is from a disposable email service |
isRoleBased | boolean | Whether the email is a role-based address (info@, admin@, etc.) |
isCatchAll | boolean | Whether the domain accepts all email addresses |
400 Bad Request — Invalid email format:
{
"error": "Invalid email address"
}401 Unauthorized — Invalid or missing API key:
{
"error": "Invalid API key"
}402 Insufficient Credits:
{
"error": "Insufficient credits"
}429 Rate Limit Exceeded:
{
"error": "Rate limit exceeded",
"retryAfter": 1
}const response = await fetch('https://api.emailkit.dev/api/v1/verify', {
method: 'POST',
headers: {
'Authorization': 'Bearer ek_your_api_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({ email: 'user@example.com' }),
});
const result = await response.json();
console.log(result.status); // "deliverable"import requests
response = requests.post(
'https://api.emailkit.dev/api/v1/verify',
headers={
'Authorization': 'Bearer ek_your_api_key',
'Content-Type': 'application/json',
},
json={'email': 'user@example.com'}
)
result = response.json()
print(result['status']) # "deliverable"$ch = curl_init('https://api.emailkit.dev/api/v1/verify');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ek_your_api_key',
'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['email' => 'user@example.com']));
$response = curl_exec($ch);
$result = json_decode($response, true);
echo $result['status']; // "deliverable"Use idempotency keys when retrying failed requests to avoid duplicate charges
Handle rate limits with exponential backoff (start at 1 second, double each retry)
Cache results on your side — an email's deliverability rarely changes within a few hours
Validate email format before sending to the API to avoid wasting credits on obviously invalid addresses