Email Verification API — REST, PHP, Python, cURL | KaijuVerifier | Kaiju Email Verifier Skip to main content
KAIJU EMAIL VERIFIER
Home Bulk Cleaner Free Checker Pricing Insights Company Log in Get Started Dashboard

Email Verification API Docs

Integrate Kaiju's powerful verification engine directly into your applications.

✓ 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 key

Quick 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

FieldTypeDescription
emailstringOriginal email input.
normalizedstringLowercased + plus-addressing stripped for Gmail.
is_validboolSafe-to-send decision.
statusstringOne of: valid, invalid, risky, unknown.
reasonstringMachine-readable detail (e.g. user_unknown, catch_all, domain_no_mx, disposable).
confidenceint0–100 confidence in the decision.
scoreintDeliverability score 0–100.
gradestringLetter grade A–F based on score.
suggestionstring|nullTypo correction if detected (e.g. user@gmail.com for user@gmial.com).
checksobjectSub-checks: syntax, dns, mx{count,providers,grade}, smtp, catch_all, role_based, is_disposable.

Status codes & rate limits

  • 200 — Verification completed.
  • 400 — Missing or malformed email field.
  • 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.

Security Note: Keep your API keys secure. Do not expose them in client-side code (browsers). Always route API requests through your own backend server.

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.