Email Validation
Validate email addresses for deliverability before sending
Email Validation
Validate one or more email addresses to check syntax, MX records, SMTP reachability, and disposable/role-account status before adding contacts or sending campaigns.
Auth scope: validate or send
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 |
POST /api/v1/validate
Validate a single email address or a batch of up to 100 addresses.
Single email
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]" }'
Response
{
"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
}
}
}
Batch validation
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]"
]
}'
Response
{
"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 /api/v1/validate
Retrieve a cached validation result for an email address. Returns the most recent result within the last 30 days, if available.
curl "https://api.misar.io/mail/v1/validate?email=test%40example.com" \
-H "Authorization: Bearer msk_YOUR_API_KEY"
Query Parameters
| Param | Type | Required | Notes |
|-------|------|----------|-------|
| email | string | ✓ | URL-encoded email address to look up |
Response
{
"success": true,
"cached": true,
"result": {
"email": "[email protected]",
"status": "valid",
"score": 92,
"checked_at": "2026-04-01T10:00:00Z"
}
}
Returns 404 if no cached result exists — use POST /api/v1/validate to run a fresh check.
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 Hunter Verification credits on Pro and Max plans. Free plan accounts cannot use email validation. See Plan Limits.