Skip to content

API overview

The EmailShield API lets your own tools do what the dashboard does: verify one address or a list, follow the job, and read the results. JSON in, JSON out.

Base URLhttps://app.emailshield.co/api
AuthenticationX-API-Key: evf_… header on every request
FormatJSON request and response bodies
Who can use itAny paid account — any plan, or a single top-up
EndpointWhat it does
POST /v1/verify/singleVerify one address and wait for the answer
POST /v1/verify/bulkSubmit up to 50,000 addresses as a job
GET /v1/jobs/{job_id}Job progress and totals — the endpoint to poll
GET /v1/jobs/{job_id}/resultsResults, page by page
GET /v1/jobsYour recent jobs
GET /v1/account, /v1/account/credits, /v1/subscriptionPlan and credit balance
DELETE /v1/keys/{key_id}Revoke an API key

Every endpoint, with request and response fields: API reference.

Create keys in the app under Profile → API. A key starts with evf_ and is shown once — copy it into your secret store straight away. To rotate a key, create a new one, update your integration, then revoke the old one.

Keep keys on your server. Never put one in a browser, a mobile app or a public repository.

The API uses the same credits as the dashboard: 1 credit per unique address, charged when the job is submitted, with Unknown results refunded when it finishes. Duplicates within one call are removed before charging. Reading jobs and results is free.

API allowances count verifications (addresses), not requests, and they’re shared by every key on your account. Polling and reading results never count.

PlanKeysPer hourPer day
Starter110,00010,000
Growth3No hourly limit50,000
Plus3No hourly limit100,000
Pro, Scale, Scale Max10UnlimitedUnlimited

Top-ups raise the allowance too, by the total you’ve ever bought: any top-up gives 1 key and 10,000 a day; 100,000+ gives 3 keys and 50,000 a day; 500,000+ is unlimited. If you have both a plan and top-ups, the more generous limit applies.

One bulk call carries up to 50,000 addresses. For bigger lists, split them into several calls, or upload the file in the dashboard (up to 2,000,000). The dashboard is never rate-limited.

Bulk jobs run in the background. Either:

  • Poll GET /v1/jobs/{job_id} every 10–30 seconds until terminal is true, then read the results; or
  • Pass a webhook_url when you submit, and we’ll POST a signed message to it when the job finishes. Webhooks →

Ready to try it? API quickstart →