Bulk Email Verification API
Submit a list of up to 100,000 addresses in a single API call. Get back per-address scores, status classifications, and delivery flags — without a connection timeout.
What Mailbeam checks
Every verification runs 7 checks in parallel and returns a structured result in under 100ms.
100K addresses per batch job
A single POST to /v1/batch accepts up to 100,000 email addresses. Jobs are queued and processed asynchronously — no HTTP timeout, no partial results.
Webhook notification on completion
Include a webhookUrl in your batch request. When the job finishes, Mailbeam fires a POST to your endpoint with the job ID. Fetch full results from /v1/batch/{jobId}.
Per-address scoring
Every address in the batch receives the same 7-check treatment as the single verify endpoint: syntax, MX, SMTP, disposable, role, catch-all, and AI quality score.
Deliverable / Risky / Undeliverable segmentation
Results include a status field for each address. Filter the JSON output by status to create send-ready, review, and suppression segments.
Progress polling
Poll /v1/batch/{jobId} at any time to check completion percentage. Or just wait for the webhook — whichever fits your workflow.
Rate-limit aware SDK
The official Node.js, Python, PHP, Ruby, and Go SDKs handle batch job creation, polling, and webhook verification for you.
How it works
POST the email array
Send a JSON body with an `emails` array (up to 100,000 strings) and an optional `webhookUrl` to /v1/batch. The response returns a `jobId` immediately.
Async processing begins
Mailbeam processes each address independently: syntax check, DNS/MX lookup, SMTP probe, disposable database check, role detection, and AI catch-all scoring.
Webhook fires (or poll)
When all addresses are processed, your webhook receives a POST with the completed `jobId`. Alternatively, poll /v1/batch/{jobId} for progress and results.
Retrieve and segment results
Fetch the full results object. Each entry includes `email`, `status`, `score`, `valid`, `disposable`, `role`, and individual check flags. Filter by status to build your segments.
Integrate in minutes
import Mailbeam from "@mailbeam/sdk";
const mb = new Mailbeam({ apiKey: process.env.MAILBEAM_KEY! });
// Submit a batch job
const job = await mb.batch.create({
emails: ["alice@example.com", "bob@company.io", /* up to 100,000 */],
webhookUrl: "https://yourapp.com/webhooks/mailbeam",
});
console.log(`Job ${job.id} queued — ${job.total} addresses`);
// Retrieve results when webhook fires (or poll)
const results = await mb.batch.get(job.id);
const deliverable = results.filter((r) => r.status === "deliverable");
const suppressed = results.filter((r) => !r.valid || r.disposable);
console.log(`Send: ${deliverable.length} | Suppress: ${suppressed.length}`);When to use it
Pre-campaign list cleaning
Run every email list through the batch API before sending a campaign. Suppress Undeliverable addresses to keep bounce rates below the 2% ISP threshold.
CRM import validation
Verify contacts before importing them from trade show exports, spreadsheets, or third-party lead sources. Clean data enters your CRM; invalid data never does.
Quarterly database re-verification
B2B email addresses decay at ~25% annually. Schedule a quarterly batch job against your full user or contact database to identify addresses that have lapsed.
Re-engagement campaign prep
Inactive segments have the highest decay rate. Verify before any win-back send to suppress invalid addresses and avoid the bounce-triggered deliverability damage.
Frequently asked questions
Ready to integrate?
Free tier includes 1,000 verifications/month. No credit card required.