API

Check addresses from your own app. Create a key under API keys (sign in with Google) and send it in the X-API-KEY header.

POST/api/verify_email

One address. Answers in a moment for domain-level problems; a mailbox check can take a few seconds.

curl -X POST https://kajuka.duckdns.org/api/verify_email \
  -H "X-API-KEY: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"email": "someone@example.com"}'
{
  "Email": "someone@example.com",
  "Status": "Verified",
  "Detail": "250 2.1.5 OK",
  "Score": 100,
  "Cached": false
}

Errors: 401 missing or wrong key, 400 no email given, 429 too many requests.

POST/api/verify_emails_batch

Up to 100 different addresses. Starts a job and returns at once.

curl -X POST https://kajuka.duckdns.org/api/verify_emails_batch \
  -H "X-API-KEY: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"emails": ["a@example.com", "b@example.com"]}'
# {"job_id": "…", "status": "started"}

GET/api/check_status/<job_id>

Progress and the results so far. status is pending, running, complete or error.

GET/api/download_results/<job_id>

The full results as JSON, once the job is complete. Jobs are deleted after 3 days.

What the answers mean

StatusMeaningScore
✓ VerifiedThe mail server accepts this mailbox.95–100
! RiskyA mistyped provider domain, or the server delayed its answer.10–65
✕ InvalidNot an address, a throwaway provider, a domain that cannot receive mail, or a mailbox the server says does not exist.0–10
? UnknownThe server could not be asked or keeps its answers private.40

Good practice for sign-up forms: turn an address away only for Disposable Email, Syntax Error, Domain Invalid / No MX Records and Potential Typo. Big mail providers often refuse or throttle mailbox checks, and some domains accept every address, so a mailbox-level Invalid or Unknown should be a warning, not a block. If this service is slow or down, let the person through.

Limits

  • Each key has its own per-minute and per-hour limit, plus 1 request per second.
  • The page's single check allows 10 per minute per visitor.
  • Results are kept for 7 days, so a repeated check is answered at once.