Email Validation
Validate email addresses for deliverability before sending
Validate one or more email addresses to check syntax, MX records, SMTP reachability, and disposable/role-account status before adding contacts or sending campaigns.
Authentication
Email validation requires an API key with the validate or send scope. Base URL: https://api.misar.io/mail.
Endpoints
| Method | Path | Description |
|---|---|---|
POST | /api/v1/validate | Validate one or more email addresses |
GET | /api/v1/validate | Get a cached validation result by email |
Validate emails
/mail/v1/validateValidate a single email address or a batch of up to 100 addresses. Provide either email for a single address or emails for a batch.
Request body
emailstringbodyA single email address to validate.
emailsstring[]bodyA batch of up to 100 email addresses to validate.
Response fields
successbooleantrue when the request succeeded.
resultobjectValidation result for a single email. Includes email, status, score, and a checks object (syntax, mx, smtp, disposable, role_account, free_provider).
resultsArray<object>Validation results for a batch request. Each entry has the same shape as result.
summaryobjectBatch summary counts: total, valid, risky, invalid, unknown.
curl -X POST https://api.misar.io/mail/v1/validate \
-H "Authorization: Bearer msk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "email": "[email protected]" }'{
"success": true,
"result": {
"email": "[email protected]",
"status": "valid",
"score": 92,
"checks": {
"syntax": true,
"mx": true,
"smtp": true,
"disposable": false,
"role_account": false,
"free_provider":true
}
}
}curl -X POST https://api.misar.io/mail/v1/validate \
-H "Authorization: Bearer msk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"emails": [
"[email protected]",
"[email protected]",
"[email protected]"
]
}'{
"success": true,
"results": [
{
"email": "[email protected]",
"status": "valid",
"score": 95,
"checks": { "syntax": true, "mx": true, "smtp": true, "disposable": false, "role_account": false, "free_provider": false }
},
{
"email": "[email protected]",
"status": "invalid",
"score": 10,
"checks": { "syntax": true, "mx": true, "smtp": false, "disposable": true, "role_account": false, "free_provider": false }
},
{
"email": "[email protected]",
"status": "risky",
"score": 40,
"checks": { "syntax": true, "mx": true, "smtp": true, "disposable": false, "role_account": true, "free_provider": false }
}
],
"summary": {
"total": 3,
"valid": 1,
"risky": 1,
"invalid": 1,
"unknown": 0
}
}Get cached result
/mail/v1/validateRetrieve a cached validation result for an email address. Returns the most recent result within the last 30 days, if available. Returns 404 if no cached result exists — use POST /api/v1/validate to run a fresh check.
Query parameters
emailstringqueryrequiredURL-encoded email address to look up.
Response fields
successbooleantrue when the request succeeded.
cachedbooleantrue when the result was served from cache.
resultobjectCached validation result: email, status, score, and checked_at.
curl "https://api.misar.io/mail/v1/validate?email=test%40example.com" \
-H "Authorization: Bearer msk_YOUR_API_KEY"{
"success": true,
"cached": true,
"result": {
"email": "[email protected]",
"status": "valid",
"score": 92,
"checked_at": "2026-04-01T10:00:00Z"
}
}Status Values
| Status | Score Range | Meaning |
|---|---|---|
valid | 70–100 | Safe to send — address is deliverable |
risky | 30–69 | Proceed with caution — role account, catch-all, or low confidence |
invalid | 0–29 | Do not send — disposable, no MX, or SMTP rejected |
unknown | — | Check inconclusive (SMTP timeout or catch-all domain) |
Checks Reference
| Check | Description |
|---|---|
syntax | Valid RFC 5322 email format |
mx | Domain has valid MX DNS records |
smtp | SMTP server accepts the address |
disposable | Known disposable/temporary email domain |
role_account | Generic role address: info@, noreply@, admin@ etc. |
free_provider | Gmail, Yahoo, Outlook, etc. |
Validation consumes email-verification credits on Pro and Max plans. Free plan accounts cannot use email validation. See Plan Limits.