Real-Time Email Verification
Catch invalid, disposable, and mistyped emails at the point of entry — not on your next campaign. One inline API call returns a verdict in under 100ms.
What Mailbeam checks
Every verification runs 7 checks in parallel and returns a structured result in under 100ms.
Sub-100ms p99 latency
Fast enough to run synchronously on a signup form without users noticing. No spinner, no blocking the submit button.
Typo suggestions inline
When someone types 'gmal.com', return 'gmail.com' so they fix it before the account is created — recovering conversions you would otherwise lose.
Disposable detection on submit
Reject throwaway inboxes at registration instead of discovering them when your welcome email hard-bounces.
Role-account flagging
Identify info@ and admin@ shared inboxes so you can route or gate them differently from personal addresses.
Structured verdict, not a boolean
Every response carries a deliverable/risky/undeliverable status and a 0-100 score, so you decide the threshold instead of us.
Graceful timeout handling
If an unknown mail server is slow, the API returns an 'unknown' status quickly rather than hanging your form submission.
How it works
User submits the form
Your frontend POSTs the typed address to your backend, or calls Mailbeam directly with a publishable key.
Parallel checks fire
Syntax, MX, SMTP, disposable, role, and free-provider checks run concurrently — not sequentially — to hold the sub-100ms budget.
A verdict returns inline
You receive a status and score before the request completes, so the decision happens inside the same round-trip.
You act on the result
Accept the signup, show a typo suggestion, or soft-block a disposable address — all before the user leaves the page.
Integrate in minutes
// Verify inline on submit — fail open if the API is unreachable.
export async function verifyOnSignup(email: string) {
try {
const res = await fetch("https://api.mailbeam.dev/v1/verify", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.MAILBEAM_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ email }),
signal: AbortSignal.timeout(1000),
});
const { status, score, suggestion } = await res.json();
if (suggestion) return { action: "suggest", suggestion };
if (status === "undeliverable" || score < 40) return { action: "block" };
return { action: "allow" };
} catch {
return { action: "allow" }; // fail open, re-verify via batch later
}
}When to use it
Signup and registration
The highest-value moment to verify: a bad email here poisons every downstream email you send that user.
Checkout email fields
A mistyped address means the order confirmation never arrives and a support ticket does.
Waitlist and lead capture
Keep launch lists clean from day one so your first send lands in the inbox, not the spam folder.
In-app email changes
Re-verify when a user updates their address to avoid silently breaking their notifications.
Frequently asked questions
Ready to integrate?
Free tier includes 1,000 verifications/month. No credit card required.