REST API

Email verification API

One POST request tells you whether an address is real, disposable, role-based, or a catch-all — before it reaches your database. JSON in, JSON out, no SDK required.

500 credits free · no credit card · keys work on the free tier

curl -X POST https://pingovo.com/api/v1/verify \
  -H "X-API-Key: $PINGOVO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

How do I verify an email address via API?

Send a POST request to https://pingovo.com/api/v1/verify with your API key in an X-API-Key header and a JSON body of {"email": "..."}. The response returns a status of valid, invalid, catch_all, risky, or unknown, along with every individual check that produced it. Each verification costs one credit; cached repeat lookups cost none.

Prefer to try it without writing code first? The free email verification tool runs the same checks in the browser, minus the SMTP step.

One verification request

POSThttps://pingovo.com/api/v1/verify

X-API-Key: $PINGOVO_API_KEY

Content-Type: application/json

{ "email": "[email protected]" }

200 OK{ "status": "valid", "credits_used": 1 }

Full response

What comes back

A single verification response. Every check that contributed to the status is included, so you can apply your own threshold rather than trusting one label.

{
  "success": true,
  "data": {
    "email": "[email protected]",
    "status": "valid",
    "syntax": { "isValid": true },
    "mx":     { "acceptsMail": true, "records": ["aspmx.l.google.com"] },
    "smtp":   { "isDeliverable": true, "mailboxConfirmed": true },
    "misc":   {
      "isDisposable":  false,
      "isRoleAccount": false,
      "isFreeEmail":   false,
      "hasCatchAll":   false
    },
    "verification_time_ms": 842,
    "cached": false
  },
  "credits_used": 1,
  "credits_remaining": 4999
}

Read smtp.mailboxConfirmed, not smtp.isDeliverable, when you need to know a mailbox is real. isDeliverable is the raw SMTP response code, and some servers return a positive one for addresses that do not exist. mailboxConfirmed is true only when the exchange actually proved it.

Endpoints

EndpointWhat it doesCost
POST/verifyVerify one address. Returns a status, every underlying check, and your remaining credit balance.1 credit
POST/verify/batchVerify up to 50 addresses in a single request. Returns one result object per address.1 credit per address
GET/creditsRead your remaining credits, lifetime verified count, and current plan.Free

Base URL https://pingovo.com/api/v1. All requests are authenticated with an X-API-Key header.

Result statuses

valid
The mailbox was confirmed to exist by the SMTP check. Safe to send.
invalid
The address cannot receive mail — bad syntax, no MX, or the server rejected the mailbox.
catch_all
The domain accepts every address, so existence could not be proven. Send with caution.
risky
Disposable, role-based, spamtrap-pattern, or otherwise unsafe to send to.
unknown
The check could not be completed — usually greylisting or a timeout. Retry later.
Full status reference

Errors

HTTP 401
Missing or invalid X-API-Key header.
HTTP 400
EMAIL_REQUIRED, INVALID_EMAIL, EMAILS_REQUIRED, EMPTY_ARRAY, or BATCH_LIMIT_EXCEEDED.
HTTP 402
INSUFFICIENT_CREDITS — the response includes how many were required and available.

Every error response carries success: false, a machine-readable error code, and a human-readable message.

Getting started in three steps

  1. Create a free account and an API key

    Sign up, open the API section of your dashboard, and generate a key. It is shown once — store it in your secrets manager, not in your repository.

  2. Send your first request

    Copy the cURL example above, replace the key, and run it. A 401 means the header name or key is wrong; a 402 means the account is out of credits.

  3. Wire it into your signup flow

    Verify at the point of capture so bad addresses never enter your list, and fall back to accepting the address on an unknown status rather than blocking a real user.

Email verification API FAQ

Send a POST request to https://pingovo.com/api/v1/verify with your API key in an X-API-Key header and a JSON body of {"email": "[email protected]"}. The response contains a status field (valid, invalid, catch_all, risky, or unknown), the result of every individual check, and your remaining credit balance. Each verification costs one credit.

Every request carries your key in an X-API-Key header. Keys are created in the API section of your dashboard, can be rotated or deactivated at any time, and are shown only once at creation. Keep the key server-side — it spends credits, so it must never ship in browser or mobile client code.

Yes. POST to https://pingovo.com/api/v1/verify/batch with {"emails": [...]}, up to 50 addresses per request. Each address costs one credit and the response returns a result object per address. For lists larger than a few thousand, the bulk CSV upload in the dashboard is faster and easier to resume.

A free Pingovo account needs no card to create, and API keys work as soon as you add credits or pick a plan. There is also a free browser-based checker that needs no account at all, though it does not run the SMTP mailbox step.

A typical single verification completes in under two seconds; repeat lookups of a recently seen address return from cache almost immediately and cost no credit. The exact time depends on the receiving mail server, since the SMTP step is a real conversation with it. Batch requests are processed sequentially, so budget accordingly.

Check the smtp.mailboxConfirmed flag rather than inferring existence from smtp.isDeliverable. isDeliverable reflects the raw SMTP response code, which some servers return for addresses that do not exist. mailboxConfirmed is only true when the exchange actually proved the mailbox is there.

Start with 500 free credits

Generate a key and make your first call in under a minute. No credit card required.

We use essential cookies to run this site, and optional functional/analytics cookies to improve it. See our Privacy Policy for details.