✓ API Live — Self-serve keys available
Generate your API key in Dashboard → Settings and start verifying in seconds. Free tier: 10,000 verifications/month.
Get your API keyQuick Start
Verify a single email with any of these snippets:
cURL
curl -X POST https://kaijuverifier.com/api/validate-email \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"email":"user@example.com","use_smtp":true}'
JavaScript (fetch)
const r = await fetch('https://kaijuverifier.com/api/validate-email', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({ email: 'user@example.com', use_smtp: true })
});
const data = await r.json();
console.log(data.status, data.score, data.grade);
Python (requests)
import requests
r = requests.post(
'https://kaijuverifier.com/api/validate-email',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={'email': 'user@example.com', 'use_smtp': True}
)
print(r.json())
PHP (cURL)
$ch = curl_init('https://kaijuverifier.com/api/validate-email');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer YOUR_API_KEY'
],
CURLOPT_POSTFIELDS => json_encode(['email' => 'user@example.com', 'use_smtp' => true])
]);
$data = json_decode(curl_exec($ch), true);
Response fields
| Field | Type | Description |
|---|---|---|
email | string | Original email input. |
normalized | string | Lowercased + plus-addressing stripped for Gmail. |
is_valid | bool | Safe-to-send decision. |
status | string | One of: valid, invalid, risky, unknown. |
reason | string | Machine-readable detail (e.g. user_unknown, catch_all, domain_no_mx, disposable). |
confidence | int | 0–100 confidence in the decision. |
score | int | Deliverability score 0–100. |
grade | string | Letter grade A–F based on score. |
suggestion | string|null | Typo correction if detected (e.g. user@gmail.com for user@gmial.com). |
checks | object | Sub-checks: syntax, dns, mx{count,providers,grade}, smtp, catch_all, role_based, is_disposable. |
Status codes & rate limits
200— Verification completed.400— Missing or malformedemailfield.401— Invalid or missing API key.429— Rate limit exceeded.
Rate limits: 20 req/min for anonymous IPs (50 SMTP probes/day). Authenticated keys inherit their plan quota (Free 10k/mo, Starter 100k/mo, Pro 1M/mo).
API Overview
The Kaiju Email Verification API allows developers to integrate our industry-leading email cleaning capabilities directly into their applications, CRMs, or registration forms. Verify emails in real-time to prevent fake signups or process bulk lists programmatically.
Authentication
All API requests require authentication using a Bearer Token. You can generate and manage your API keys in your dashboard settings.
Authorization Header
Authorization: Bearer YOUR_API_KEY_HERE
Base URL
All API endpoints are relative to the following base URL:
https://api.kaijuverifier.com/v1
API Endpoints
POST /api/v1/verify
Verify a single email address in real-time. Ideal for registration forms and lead capture.
Parameters (JSON Body)
| Parameter | Type | Required | Description |
|---|---|---|---|
email |
string | Yes | The email address to verify. |
use_smtp |
boolean | No | Enable/disable SMTP check (default: true). |
Example Request
curl -X POST "https://api.kaijuverifier.com/api/v1/verify" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"use_smtp": true
}'
POST /api/v1/batch
Verify a batch of email addresses. Optimized for high throughput.
Request Body
{
"emails": [
"user1@example.com",
"user2@example.com",
"invalid@domain.com"
],
"use_smtp": true
}
Code Examples
curl -X POST "https://api.kaijuverifier.com/api/v1/batch" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"emails": ["user1@example.com", "user2@example.com"],
"use_smtp": true
}'
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.kaijuverifier.com/api/v1/batch");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
"emails" => ["test@example.com"],
"use_smtp" => true
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer YOUR_KEY",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
?>
import requests
response = requests.post(
"https://api.kaijuverifier.com/api/v1/batch",
headers={"Authorization": "Bearer YOUR_KEY"},
json={
"emails": ["test@example.com"],
"use_smtp": True
}
)
print(response.json())
Response Object
The API returns a JSON object with the verification results. Understanding these fields is key to handling the data correctly.
{
"email": "user@example.com",
"status": "valid",
"score": 0.95,
"details": {
"is_disposable": false,
"is_role_account": false,
"has_mx_records": true,
"smtp_connect": true
}
}
| Field | Type | Description |
|---|---|---|
status |
string | valid, invalid, or unknown. |
score |
float | Quality score from 0.0 to 1.0. |
is_disposable |
boolean | True if the domain is a known temporary email provider. |
Error Codes
Standard HTTP status codes are used to indicate success or failure.
| Code | Description |
|---|---|
200 |
OK - Request processed successfully. |
400 |
Bad Request - Invalid parameters or JSON format. |
401 |
Unauthorized - Invalid or missing API key. |
429 |
Too Many Requests - Rate limit exceeded. |
500 |
Internal Server Error - Something went wrong on our end. |
Integration Best Practices
- Timeout Handling: Set a timeout of at least 5 seconds for single verification requests to account for DNS lookups.
- Asynchronous Processing: For bulk requests, consider using a background job queue to avoid blocking your main application thread.
- Caching: Cache verification results for 24-48 hours to save API credits and improve performance.