Real-Time API

Catch the fake before it becomes a row.

One POST sits inline in your signup flow and turns away fakes, typos and disposables before they ever touch your database. Not a green light — an answer, with a confidence score you can branch on.

100 free verifications · no card · 0.3s median

bash
curl -X POST https://platform.emaillistchecker.io/api/v1/verify \
  -H "Authorization: Bearer elc_live_•••••" \
  -H "Content-Type: application/json" \
  -d '{ "email": "[email protected]" }'

# 200 OK
{
  "email": "[email protected]",
  "verdict": "valid",
  "confidence": 0.98,
  "checks": {
    "syntax": "pass",
    "mx": "pass",
    "smtp": "pass",
    "catch_all": false,
    "disposable": false,
    "role": false,
    "spam_trap": false
  },
  "credits_charged": 1,
  "latency_ms": 287
}
0.3s
median response
99.9%
uptime SLA
20+
checks per call
10B+
emails verified
Live verification

A real SMTP check, in a third of a second.

We don't guess from a static list. Every call runs syntax, MX and a live mailbox probe, then returns a verdict and a confidence score you can branch on — fast enough to sit inline in a signup form.

  • Verdict + confidence in the response — branch on valid, risky or invalid.
  • Catch-all graded, never just flagged — you decide the risk threshold.
  • Pay for answers. An unknown verdict costs you nothing.
elc verify · /usr/bin
$ elc verify --email [email protected]
→ resolving MX…           stripe.com ✓
→ SMTP handshake…         250 OK
→ catch-all probe…        not accept-all
→ disposable / role…      clean

VALID  confidence 0.98  mailbox confirmed

$ elc verify --email [email protected]
CATCH-ALL  confidence 0.55  accept-all domain

$ elc verify --email [email protected]
INVALID  confidence 0.04  domain typo → gmail.com?
Endpoints

A small, honest surface area.

REST over HTTPS, JSON in and out, predictable status codes. Single calls, batch jobs, the finder and inbox placement — that's the whole API.

MethodPathWhat it does
POST/v1/verifyVerify a single address in real time.
POST/v1/verify/batchSubmit up to 1M addresses; results via webhook.
GET/v1/verify/batch/{id}Poll a batch job's status and progress.
GET/v1/verify/batch/{id}/resultsStream verdicts for a finished batch.
POST/v1/finder/emailFind and verify an address from name + domain.
GET/v1/listsList your verified lists and download results.
GET/v1/creditsCheck your remaining credit balance.

Base URL https://platform.emaillistchecker.io/api/v1

SDKs & webhooks

Typed clients. Signed callbacks.

Install an official SDK and you're verifying in three lines — retries, pagination and idempotency handled for you. For big lists, submit a batch and we'll POST signed results to your webhook the moment they land.

  • Five official SDKs — Node, Python, PHP, Ruby and Go.
  • Signed webhooks for batch completion — verify the signature and trust the payload.
  • Idempotency keys make every retry safe — no double charges.
javascript
// Node — npm i @emaillistchecker/sdk
import { ELC } from "@emaillistchecker/sdk";

const elc = new ELC(process.env.ELC_API_KEY);

const { verdict, confidence } = await elc.verify(
  "[email protected]"
);

if (verdict === "invalid") {
  throw new Error("Please use a real email address.");
}
Built for developers

Boring in all the right ways.

The unglamorous things that make an API a pleasure to integrate — and keep it that way in production.

Every response

A verdict, not a guess.

VALIDcredits_charged1latency_ms287

Official SDKs

Node, Python, PHP, Ruby and Go — typed clients with retries and pagination built in.

nodepythonphprubygo

Webhooks

Fire a batch and forget it — we POST signed results to your endpoint the moment they're ready.

Bearer auth

Scoped, rotatable keys. Separate live and test keys; revoke any one in a click.

Idempotency keys

Safely retry any request — duplicates collapse to a single charge.

MCP server

The same tools your agents can call.

Model Context Protocol lets Claude Desktop and your own AI agents use EmailListChecker as a secure tool — scoped by API key, metered by credits, with the same confirm-first guardrails as the REST API. The email verifier you can actually talk to, in your own stack.

  • Drop-in config — npx @emaillistchecker/mcp
  • Tools mirror the API: verify, finder, credits
  • Scoped by key, metered by credit — nothing hidden.
json
// claude_desktop_config.json
{
  "mcpServers": {
    "emaillistchecker": {
      "command": "npx",
      "args": ["-y", "@emaillistchecker/mcp"],
      "env": { "ELC_API_KEY": "elc_live_•••••" }
    }
  }
}

// Your agent can now call:
//   verify · verify_batch · finder · credits
Rate limits

Generous ceilings, graceful 429s.

Every plan ships a real rate limit — and when you hit it you get a 429 with a Retry-Afterheader, never a silent drop. Need more headroom? It's a conversation, not a contract renegotiation.

PlanSustainedBurst
Free10 req/secburst 20
Pro50 req/secburst 100
Scale200 req/secburst 400
Use case

Stop fakes at the front door.

The highest-leverage place to verify is the signup form. A single POST /v1/verify in your handler keeps junk out of your database forever — no batch job, no cleanup later.

  • Block at submit. Reject invalid and disposable addresses inline, with a friendly message — before the row is ever written.
  • Catch costly typos. gmial.com and yaho.comget flagged so a real customer doesn't vanish into a typo.
  • Protect your sender score. Clean from the start and your deliverability never erodes from dead addresses piling up.
javascript
app.post("/signup", async (req, res) => {
  const { verdict } = await elc.verify(req.body.email);

  if (verdict === "invalid") {
    return res.status(422).json({
      error: "Please use a real email address."
    });
  }

  // verdict is valid or risky — create the user
  await createUser(req.body);
});
Questions

For the integration.

Median response is around 0.3 seconds for a single real-time verification, including the live SMTP check. For very large lists, submit a batch job and we'll webhook you the results so you never block a request.

Ship your first verified signup today.

Grab a key, drop in one request, and keep fakes out for good. 100 free verifications, no credit card — and credits never expire.