Email Validation API
Deep email validation with 500+ disposable domain detection, deliverability scoring, SPF/DMARC checks, and mail provider identification.
/api/v1/email/validateNo API key required. This endpoint is publicly accessible — you can call it without authentication. Unauthenticated requests are rate-limited to 10 requests/minute per IP address. To unlock higher limits, authenticate with Authorization: Bearer <YOUR_API_KEY>.
Unauthenticated Access Limits
When called without an API key, this endpoint enforces a per-minute rate limit keyed by client IP address:
- 10 requests/minute per IP
- Exceeding the limit returns HTTP
429 Too Many Requestswith aRetry-Afterheader - Authenticated requests (with API key) use your plan's limits instead
POST requests: send the email in a JSON body — { "email": "[email protected]" }
Try it out
/api/v1/email/validateParameters
Code
curl -X GET "https://khaleejiapi.dev/api/v1/email/validate?email=test%40gmail.com" \ -H "Authorization: Bearer your_api_key"Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Required | Email address to validate |
Response Fields
valid, deliverabilityScore
Boolean validity and 0–100 deliverability confidence score
checks
Individual check results: syntax, disposable, mx, role, freeProvider, autoGenerated, plusAddressing, spf, dmarc
domain, localPart, mailProvider
Parsed email components and detected mail provider (Google, Microsoft, etc.)
mx
MX record data with records array and count
suggestion
Typo correction suggestion when a likely misspelling is detected (e.g. gmial.com → gmail.com)
Rate Limits
| Plan | Requests/Month | Rate Limit |
|---|---|---|
| Unauthenticated (no API key) | — | 10 req/min / IP |
| Free | 1,000 | 10 req/min |
| Starter | 10,000 | 60 req/min |
| Professional | 100,000 | 300 req/min |
| Business | 500,000 | 1,000 req/min |
Debugging & Support
Include X-Request-ID when contacting support
Every response from KhaleejiAPI includes an X-Request-ID header — a unique identifier that lets our support team pull the exact log entry for your request within seconds. Always share it when reporting an unexpected error or unexpected result.
How to capture it
JavaScript / fetch
const res = await fetch("https://khaleejiapi.dev/api/v1/...", {
headers: { Authorization: "******" },
});
const requestId = res.headers.get("x-request-id");
console.log("Request ID:", requestId);
// → e.g. "req_01j9xkz4vp8..."cURL
curl -si "https://khaleejiapi.dev/api/v1/..." \ -H "Authorization: ******" | grep -i x-request-id # → x-request-id: req_01j9xkz4vp8...
Browser DevTools
Open DevTools (F12) → Network tab → click the failing request → scroll to the Response Headers section → copy the value next to x-request-id.
For a full list of error codes and guidance on common issues, see the Troubleshooting guide.