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.
-
01
Syntax
Catches malformed addresses and typos before anything else runs.
-
02
MX records
Confirms the domain actually exists and is set up to receive mail.
-
03
Disposable domains
Flags throwaway inboxes that vanish right after signup.
-
04
Role accounts
Spots shared inboxes like info@ and sales@ that hurt engagement.
-
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.
The receiving server confirmed the mailbox exists. Safe to send.
mailbox_exists
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
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