POST /v1/verify

Verify a single email address synchronously. Returns under 100ms for most requests.

POSThttps://api.mailbeam.dev/v1/verify

Core verification endpoint. Returns verdict, quality score, and per-check breakdown.

Request body

Parameters

NameTypeRequiredDescription
emailstringrequiredEmail to verify. RFC 5321 format, max 254 chars.
timeout_msintegeroptional (default: 3000)SMTP probe timeout in ms. Range: 100–5000.
include_checksbooleanoptional (default: true)Include per-check breakdown in response.

Response schema

Response fields

NameTypeRequiredDescription
validbooleanrequiredtrue if the email passed all critical checks.
scoreinteger (0–100)requiredQuality score. Recommend accepting >= 60.
disposablebooleanrequiredtrue if from a known temporary provider.
catchAllbooleanrequiredtrue if the domain accepts all addresses.
mxbooleanrequiredtrue if domain has valid, reachable MX records.
reasonstring | nullrequirednull when valid. Machine-readable reason otherwise.
latency_msintegerrequiredServer-side processing time in ms.

Response examples

Response200 OK
{
  "valid": true,
  "score": 94,
  "disposable": false,
  "catchAll": false,
  "mx": true,
  "reason": null,
  "latency_ms": 82
}
Response — disposable email422 Unprocessable Entity
{
  "error": "validation_failed",
  "data": {
    "valid": false,
    "score": 3,
    "disposable": true,
    "reason": "disposable_domain",
    "latency_ms": 41
  }
}
Response — unauthorized401 Unauthorized
{
  "error": "invalid_api_key",
  "message": "The API key is invalid or revoked.",
  "request_id": "req_01hx9abc123"
}

Code examples

import Mailbeam from "@mailbeam/sdk";
const mb = new Mailbeam({ apiKey: process.env.MAILBEAM_KEY });
const { valid, score, reason } = await mb.verify("user@example.com");
if (!valid || score < 60) throw new Error(reason);

Try it out

Interactive playground — coming soon

Endpoint: /v1/verify