Trim hard-bounce bait before your sender touches it.
Reject role accounts, temp mail, and no-MX domains before they enter a campaign. Protect domain reputation without adding any LLM cost.
One address in. valid, risk, score, reasons out.
This API catches role inboxes, disposable domains, dead MX, free providers, and risky TLD patterns
before they touch your sender reputation or your signup flow.
/v1/account/usage
Cold-email products use it before queueing a send. E-commerce teams use it before creating a customer record. Internal ops teams use it to de-risk imports before an SDR or support workflow fans bad rows across the stack.
Reject role accounts, temp mail, and no-MX domains before they enter a campaign. Protect domain reputation without adding any LLM cost.
Score email quality at form submit time and branch the flow. Soft-warn free providers, hard-block dead or disposable domains, and keep support queues cleaner.
Pro and paid-credit keys unlock the bulk endpoint for up to 100 rows per call, so you can clean CSV imports before you spend more downstream.
The output is opinionated but inspectable. This is a gate, not a fake AI promise about inbox placement. You can see exactly why an address was flagged and keep your own policy layer on top.
Invalid local parts, broken domains, missing separators, and obvious typo forms die immediately.
info@, support@, sales@, noreply@, and the rest of the common high-bounce prefixes are called out explicitly.
Mailinator, YOPmail, 10 Minute Mail, TrashMail, Guerrilla Mail, and their aliases are treated as hard bad traffic.
Gmail, Yahoo, Outlook, and similar providers are not rejected, but they are marked so B2B teams can filter or score accordingly.
Cheap and frequently abused TLD families add risk without pretending every unusual domain is invalid.
Dead domains that still pass regex are the easiest way to torch a list. Live DNS catches them before your ESP does.
Keep the threshold simple. Many teams send only when valid=true and risk != "high".
Others allow medium-risk rows but downgrade them in enrichment or manual-review queues.
def should_send(result: dict) -> bool:
return result["valid"] and result["risk"] != "high"
The free key is enough to wire the contract. Pro keeps the same response shape and adds bulk plus the included monthly allowance. Prepaid packs exist for teams that prefer one-time spend over a subscription meter.
/v1/account/usageThe API is intentionally small: issue a key, hit one endpoint, and branch on a deterministic score. If you need more later, use the bulk path and the usage endpoint before you add any fancy wrapper.
Free keys are instant. Pro upgrades the key tied to your email, or creates one if you subscribe first.
GET /v1/keys/issue?email=you@company.com&tier=free
The contract is one email in, one JSON object out. No hidden background jobs or async polling.
curl \
-H "Authorization: Bearer vev_your_key" \
-H "Content-Type: application/json" \
-d '{"email":"ceo@targetcompany.com"}'
Every response carries usage headers now, and the usage endpoint exposes the current period overage count and amount.
curl \ -H "Authorization: Bearer vev_your_key"
The key is shown once. Save it immediately. Public copy promise stays strict: this API returns deterministic quality signals, not a fake guarantee that an address will convert or land in the inbox.