API 10 · Runs on Vercel
Email Validation
Validates syntax, then resolves MX, A/AAAA, SPF and DMARC records to produce domain-level deliverability indicators. Flags disposable providers, role accounts and likely typos of major providers. It never connects to mail servers or probes individual mailboxes.
POST https://dev.itsozy.lol/api/v1/email/validateRuns on Vercel. Fully served by the Rust function on Vercel (DNS only).
Authentication
Send Authorization: Bearer ozy_… with an API key that includes the email permission (or *). Signed-in dashboard sessions work in the playground. Each call costs 1 unit.
Parameters
| Name | Type | Description | |
|---|---|---|---|
email | string | required | Address to validate |
Example request
curl -X POST https://dev.itsozy.lol/api/v1/email/validate \
-H "Authorization: Bearer $OZY_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "someone@gmial.com"}'
Example response (illustrative)
{
"deliverability": "domain_has_no_mail_records",
"did_you_mean": "someone@gmail.com",
"disposable": false,
"dmarc_record": false,
"domain": "gmial.com",
"email": "someone@gmial.com",
"mailbox_verified": false,
"mx_records": [],
"role_account": false,
"spf_record": false,
"syntax_valid": true
}
Errors
Errors use one envelope: {"error": {"code": "…", "message": "…"}}.
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_input | A parameter is missing or invalid |
| 401 | unauthorized | No valid API key or session |
| 403 | permission_denied | The key does not include this API's permission |
| 429 | quota_exceeded | Free-tier quota reached (20 units/min, 100 units/day) |
| 503 | database_unavailable | Persistent storage is temporarily unavailable |
Rate limits
20 units per minute and 100 units per day per account; outbound fetches to the same host are spaced at least one second apart. Exceeding a limit returns 429.