Email validation API

Validate an address in one request.

Emvali checks syntax, disposable and role signals, and MX records, then returns a risk score and a status. The hosted API is api.emvali.com.

500 free / month · $12 / 5k · $29 / 25k · overage about $0.004

POST /v1/validate
curl -s -X POST https://api.emvali.com/v1/validate \
  -H "Authorization: Bearer $EMVALI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"ada@example.com"}'
{
  "email": "ada@example.com",
  "format_valid": true,
  "disposable": false,
  "mx_found": true,
  "role_account": false,
  "free_provider": false,
  "catch_all": null,
  "risk_score": 0,
  "status": "valid"
}

What comes back

Every authenticated call counts toward the monthly quota, including addresses Emvali marks invalid. A 400 does not.

Pricing

Included validations reset each month. Past that, overage is about $0.004 per validation.

Free

$0

500 / month

Enough to wire the API and try a real list.

Starter

$12

5,000 / month

For signup forms and a steady stream of checks.

Overage is about $0.004 per validation after the included amount. These are catalog prices. This page does not start a charge, and Emvali is not sold through a marketplace checkout.

Docs

The contract is OpenAPI 3.1. Three paths cover health, validation, and the current plan.

Read the OpenAPI document

GET /health
No API key. Reports that Emvali is up.
POST /v1/validate
Bearer key. Body is {"email":"..."}.
GET /v1/account
Plan, monthly limit, usage, and the overage rate.

Get started

Call the hosted API at https://api.emvali.com. Keys are bearer tokens. Nothing here collects a card.

  1. Get an API key

    Request a key for the hosted API, or run Emvali yourself and set DEV_API_KEY.

  2. POST the address

    Send Authorization: Bearer and a JSON body to /v1/validate.

  3. Branch on status

    Use status and risk_score. Check GET /v1/account for remaining quota.