Single verification

POST or GET /verify: request shapes and every response field.

Two equivalent endpoints verify one address:

# POST with JSON body
curl -X POST "https://api.kavik.email/api/v1/verify" \
  -H "X-API-Key: eva_your_key" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane@acmecorp.com"}'

# GET with query parameter
curl "https://api.kavik.email/api/v1/verify?email=jane@acmecorp.com" \
  -H "X-API-Key: eva_your_key"

Repeat lookups for the same address may be served from a short-lived cache for speed; each call counts toward your usage once per call.

Response fields

Field Type Meaning
email string The address as submitted
score integer 0-100 Composite deliverability score
risk enum safe (70-100), risky (40-69), invalid (0-39), unknown (no definitive answer; never billed)
syntax_valid boolean RFC-correct address syntax
mx_found boolean The domain publishes MX records. false with smtp_check: undeliverable means no mail server answers anywhere RFC 5321 falls back to
smtp_check enum deliverable, undeliverable, risky, unknown
is_disposable boolean Known disposable provider
is_role_account boolean Role address (info@, sales@, …)
is_catch_all boolean Domain accepts every local part
is_free_provider boolean Free mailbox provider (Gmail, Outlook, …)
spam_trap_risk enum low, medium, high
suggested_correction string or null Did-you-mean suggestion when a domain typo is detected. Suggestion only: we never verify the corrected address on your behalf
mx_records array The domain’s MX hosts
is_security_gateway boolean Mail routes through Mimecast, Proofpoint, etc.
security_gateway string Gateway name or empty
has_gravatar boolean A Gravatar profile exists for the address
gravatar_url string Present when has_gravatar is true
catch_all_confidence integer 0-100 0 = definitively not catch-all, 100 = definitively catch-all

Batch verification

For up to 100 addresses in one call, use POST /api/v1/verify/batch with {"emails": ["a@x.com", "b@y.com"]}. Duplicates are removed before anything is charged.