POST /v1/verify
Verify one email address.
Request
request
POST /v1/verify
Authorization: Bearer mxp_live_...
Content-Type: application/json
Idempotency-Key: 2f8c... (optional)
{
"email": "jeff@amazon.com",
"validation_mode": "fast"
}email— required, any RFC 5322 address. Normalised to lowercase.validation_mode—fast(default).deepreturnsdeep_mode_disableduntil it ships.
Response 200
response.json
{
"email": "jeff@amazon.com",
"is_valid": true,
"status": "valid",
"sub_status": null,
"validation_mode": "fast",
"confidence": "high",
"score": 85,
"checks": {
"syntax_valid": true,
"domain_valid": true,
"mx_found": true,
"smtp_valid": null,
"is_disposable": false,
"is_role_based": false,
"is_catch_all": null,
"is_free_provider": false
},
"cached": false,
"response_time_ms": 41
}Status and sub_status
| status | sub_status | meaning |
|---|---|---|
| valid | null | Syntax OK, domain has MX, not disposable, not role-based. |
| invalid | invalid_syntax | Not an email address. |
| invalid | no_mx_record | Domain doesn't receive mail (NXDOMAIN or no MX). |
| risky | disposable | Domain is a known throwaway provider. |
| risky | role_based | Local part is a role (info, admin, support, …). |
| unknown | dns_temporary_failure | Resolver timed out. Not cached; retry later. |
Caching
Definitive results are cached (24 h for valid, 1 h for invalid) and returned with cached: true. Cached responses still cost one credit.