Email verification that keeps your lists clean

Verifoss checks whether an email address is real and deliverable before you hit send. Fewer bounces, a protected sender reputation, and no wasted sends — verified one at a time, in bulk, or straight from your signup flow.

No mailing list required — verify your first address in minutes.

How it works

Five layered checks, one clear answer

Every address runs through the full pipeline. The moment a check fails, you get the exact reason — no vague scores to interpret.

  1. 01

    Syntax

    Catches malformed addresses and typos before anything else runs.

  2. 02

    MX records

    Confirms the domain actually exists and is set up to receive mail.

  3. 03

    Disposable domains

    Flags throwaway inboxes that vanish right after signup.

  4. 04

    Role accounts

    Spots shared inboxes like info@ and sales@ that hurt engagement.

  5. 05

    SMTP probe

    Asks the receiving server whether the mailbox exists — without ever sending an email.

Verdicts

Three verdicts you can act on

Every result carries a cause-distinct reason code, so you always know why — not just what.

valid

The receiving server confirmed the mailbox exists. Safe to send.

mailbox_exists

invalid

A check failed — and the reason tells you which one. Remove it from your list.

invalid_syntax · no_mx_records · disposable_domain · role_account · mailbox_not_found

unknown

The mailbox couldn't be confirmed — greylisting, timeouts, or blocking servers. We tell you honestly instead of guessing.

smtp_timeout · smtp_blocked · mailbox_unverified

One platform

Clean the list you have. Protect the one you're building.

Bulk list cleaning

Upload a CSV, watch the batch progress, and export your cleaned list with a verdict and reason on every row. Cancel a running batch any time — you keep the credits for whatever didn't run.

  • CSV upload and export
  • Per-row verdicts and reason codes
  • Full verification history in your dashboard

Real-time API

Verify at the point of capture — signup forms, checkouts, lead imports — so bad addresses never make it into your list in the first place.

  • Single and batch endpoints
  • Idempotency keys — retries never double-charge
  • API keys managed from your dashboard

Built for developers

One request. A verdict you can branch on.

A clean REST API with predictable JSON: the verdict, the reason, and the result of every individual check. Cached verdicts are flagged, never hidden.

Request

curl -X POST https://verifoss.com/api/v1/verify \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane@acme.com"}'

Response

{
  "email": "jane@acme.com",
  "status": "completed",
  "verdict": "valid",
  "reason": "mailbox_exists",
  "checks": {
    "syntax": true,
    "mx": true,
    "disposable": true,
    "role": true,
    "smtp": true
  },
  "verified_at": "2026-09-15T09:30:00+00:00",
  "cached": false
}

Careful where it counts

No email is ever sent

The SMTP conversation stops before a message exists. The address owner never knows a check happened.

Greylist-aware retries

Servers that ask us to come back later get a scheduled retry — not a lazy "unknown".

Transparent caching

Recently confirmed verdicts return instantly and are marked cached: true, so you always know what you got.

Simple credits

One credit per verification, tracked in a ledger you can audit. No seats, no lock-in.

Frequently asked questions

Does verifying an address send an email to it?

No. Verifoss speaks to the receiving mail server just long enough to learn whether the mailbox exists, then disconnects — no message is ever composed or delivered.

What's the difference between invalid and unknown?

Invalid means a check definitively failed — bad syntax, no mail servers, a disposable domain, a role account, or a mailbox the server rejected. Unknown means the answer couldn't be confirmed (a timeout, a blocking server, or greylisting). We report unknown honestly rather than guessing either way.

What happens when a server greylists the check?

Greylisting is a server saying "try again later" — so that's exactly what we do. The retry is scheduled automatically and the verdict updates when it completes.

How do credits work?

One verification costs one credit, whether it runs from the dashboard, a bulk batch, or the API. Every movement is recorded in your credit ledger, and API retries with an idempotency key never charge twice.

Can I verify a whole list at once?

Yes — upload a CSV in the dashboard or submit a batch through the API, track its progress, and export the results with a verdict and reason for every address. Running batches can be cancelled at any time.

Fewer bounces. More inboxes.

Create an account, grab an API key, and verify your first address in minutes.

Get started free