Private betaMailbeam is in private beta — the public API isn't live yet.Join the waitlist

Mailbeam
API · Scoring

Catch-All Email Verification API

Corporate domains often accept all email. Mailbeam detects that behaviour explicitly and tells you the verdict is unverifiable, with a capped 0–100 score, instead of reporting a confident pass it cannot back.

What Mailbeam checks

Every verification runs 7 checks in parallel and returns a structured result in under 100ms.

Catch-all domain detection

In the same connection as the real address, Mailbeam probes a random mailbox on the domain. If that is accepted too, the server accepts everything — so the acceptance of the real address proves nothing, and we say so.

Quality score 0–100

The score is additive from a fixed set of signals — syntax, mail route, probe result, disposable, role, catch-all — with published weights and caps. A catch-all address is capped at 70, because no probe can confirm it. No black box, and every point is traceable.

Explainable reason field

The `reason` field returns `catch_all_unverifiable` for these addresses, and `status` comes back as `risky` rather than `deliverable`. Your application can treat 'we could not confirm this' differently from 'this mailbox does not exist'.

Configurable thresholds

The score is yours to interpret. Set threshold ≥ 70 for strict B2B forms, ≥ 40 for broad list acceptance. The API returns the data; your logic applies the policy.

Enterprise domain accuracy

Large enterprise domains are frequently catch-all. Because Mailbeam reports them as risky-but-unverifiable rather than undeliverable, you can accept them on a threshold instead of turning away legitimate enterprise leads.

Combines with SMTP and MX checks

Catch-all detection runs alongside the full verification suite. You get the MX check, SMTP result, disposable flag, score and reason in a single API response.

How it works

1

SMTP probe sent to mail server

Mailbeam probes the mail server with a RCPT TO command. If the server accepts all addresses regardless of mailbox existence, the domain is flagged as catch-all.

2

Signals are combined into a score

Syntax, mail route, probe outcome, disposable and role signals are combined with published weights. Catch-all applies a cap rather than a penalty, because the issue is missing evidence, not evidence of a problem.

3

Confidence score generated

A 0–100 score comes back with the verdict. A catch-all address cannot score above 70 however clean everything else looks, which is the honest ceiling for an address no probe can confirm.

4

Score and reason returned

The `score`, `catch_all`, and `reason` fields are included in the standard verify response. Use them to apply your own threshold logic in your application.

Integrate in minutes

TypeScriptTypeScript
// No SDK yet — the 12-line wrapper from /docs/quickstart.
import { verifyEmail } from "@/lib/mailbeam";

type Decision = "accept" | "review" | "reject";

function evaluate(result: Awaited<ReturnType<typeof verifyEmail>>): Decision {
  if (!result.valid || result.disposable) return "reject";

  if (result.catch_all) {
    // Apply tiered threshold for catch-all addresses
    if (result.score >= 70) return "accept";
    if (result.score >= 40) return "review";
    return "reject";
  }

  // Standard address: use binary valid check + score floor
  return result.score >= 30 ? "accept" : "review";
}

export async function handleLeadSubmission(email: string) {
  const result = await verifyEmail(email);
  const decision = evaluate(result);

  if (decision === "reject") {
    throw new Error("Email address could not be verified.");
  }

  await db.leads.create({
    email,
    score: result.score,
    catchAll: result.catch_all,
    queue: decision === "review" ? "manual_review" : "active",
  });
}

When to use it

B2B demo request and lead capture forms

Corporate email addresses are disproportionately on catch-all domains. Blanket-rejecting them on B2B forms turns away real enterprise leads. Use the score and the catch_all_unverifiable reason to set your own threshold.

Sales CRM import and enrichment

When importing B2B prospect lists, many addresses come from catch-all corporate domains. Score-based acceptance rather than binary rejection dramatically improves usable lead rates.

Cold outreach list preparation

For outbound sales sequences, use a higher score threshold (≥ 70) to include only high-confidence catch-all addresses — protecting your sending domain while maximising reachable prospects.

Enterprise SaaS product signups

Enterprise users often have corporate email on catch-all domains. A blanket catch-all rejection on your signup form turns away enterprise customers. Score-based acceptance fixes this.

Frequently asked questions

Ready to integrate?

Free tier includes 1,000 verifications/month. No credit card required.