REST + MCP. Free tier. Real mailbox check.

Email Validation API

POST any email address. Get a categorical verdict in under a second. Verifies the actual mailbox, not just DNS. Catch-all, role-account, disposable, and hardened-domain aware.

curl
POST /api/v1/email/validate
curl -X POST https://www.startuphub.ai/api/v1/email/validate \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "email": "[email protected]" }'
50Free credits/day
<1sMedian latency
6+Edge cases handled
1 creditCost per call

How it works

One POST. Real-time mailbox check. Categorical verdict.

1

Send the address

POST { email } to /api/v1/email/validate with your Bearer key. Or call validate_email via MCP from Claude / Cursor — same endpoint, same response shape.

2

Real-time mailbox check

Verifies the actual mailbox, not just DNS. Catch-all behavior, role accounts, and disposable-mail providers are flagged inline so your code knows when to downgrade confidence. Hardened corporate domains where pattern-only tools fail return a usable verdict, not a false positive.

3

Get a categorical verdict

Response: { email, valid, status, confidence_score }. status is one of deliverable / not_deliverable / unknown / catch_all / role_account / disposable. No probability scores — just the verdict your downstream code can switch on.

Six possible statuses

A switch statement’s worth of clarity. No fuzzy probability scores.

statusWhen you’ll see it
deliverableMailbox confirmed real and accepting mail. Safe to send.
not_deliverableMailbox does not exist or is rejecting all mail. Don't send.
catch_allDomain accepts everything. Address may or may not reach a real person — downgrade confidence.
role_accountGeneric address (info@, sales@, support@). Real, but unlikely to be a specific person.
disposableAddress belongs to a temporary-mail provider (10minutemail, mailinator). Block on signup forms.
unknownHardened receiving server returns no signal either way. Could not determine. Treat as risky.

Drop into any stack

Plain HTTPS + JSON. CORS-enabled. Works browser-side too.

Node.js / TypeScript
const r = await fetch('https://www.startuphub.ai/api/v1/email/validate', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sk_live_...',
    'Content-Type':  'application/json',
  },
  body: JSON.stringify({ email: '[email protected]' }),
});
const { valid, status, confidence_score } = await r.json();
if (status === 'deliverable') sendCampaign();
Python
import requests

r = requests.post(
    'https://www.startuphub.ai/api/v1/email/validate',
    headers={'Authorization': 'Bearer sk_live_...'},
    json={'email': '[email protected]'},
)
data = r.json()
print(data['status'])  # → 'deliverable'
Response
{
  "email":            "[email protected]",
  "valid":            true,
  "status":           "deliverable",
  "confidence_score": 95
}

What’s in the box

Edge-case handling, bulk endpoints, and MCP — all included.

Real mailbox verification

Goes beyond DNS to confirm the address is actually accepting mail at the recipient end. Hardened corporate domains return a confident verdict instead of a generic "valid" that bounces in production.

Catch-all detection

Catch-all domains accept everything — validating against them gives a false positive. We test for catch-all behavior and flag it in the response so your code can downgrade confidence accordingly.

Role-account + disposable flagging

info@, sales@, noreply@, and 2,000+ disposable domains (10minutemail, mailinator, etc.) are detected and surfaced separately. Useful for SaaS signup gates that want to block low-intent users.

Bulk validation endpoint

POST an array of up to 1,000 emails to /api/v1/email/bulk. Each is validated in parallel; results stream back. Pro Lite and above. Per-row credit billing.

MCP server for AI agents

Same endpoint exposed as the validate_email MCP tool. Drop one URL into Claude.ai, Cursor, or Windsurf and your agent can verify addresses inside any chat workflow.

CORS-enabled — works in browsers

Validate emails directly from a signup form's onBlur handler without proxying through your backend. Same Bearer auth, same response.

Built for these workflows

Real production patterns from teams using the API today.

Signup form gate

Validate an address on form blur before letting the user submit. Block typos ("@gnail.com"), disposable inboxes, and dead mailboxes before they pollute your user table.

Pre-send list cleaning

Batch-validate 50k addresses before a campaign. Drop the dead ones to protect your sender reputation. NeverBounce-class accuracy at fraction of the price.

CRM hygiene

Re-validate lead emails on a schedule. Mark expired ones inactive automatically. Stop SDRs from emailing addresses that bounce.

Agent workflows

Built into agent loops via MCP. "Verify this list of investor emails before I draft outreach." One tool call, deliverability-checked addresses returned.

vs. the incumbents

Comparable accuracy. Lower price. MCP support nobody else ships.

ProviderTheir offeringStartupHub.ai Validation API
NeverBounce$0.008/email at low volume, $0.003 at 1M+
$0 first 50/day. ~$0.005 on credit packs, free if under daily plan cap.
ZeroBounce$15/mo for 2,000 credits ($0.0075/email)
500/day on Pro Lite at $30/mo (~$0.002/email at full use)
KickboxPay-as-you-go from $0.01/verification
Daily plan caps + never-expiring credit packs
BriteVerifySales-led pricing, $40/mo entry tier
Self-serve API key in 30 seconds, free tier included
Mailgun ValidationsBundled with Mailgun email infra
Standalone — no email-sending lock-in
BouncerNo MCP server, no AI-agent integration
MCP-native, works in Claude / Cursor / Windsurf
MCP Server

Use it inside Claude. Or Cursor. Or any agent.

Same Validation API exposed as the validate_email MCP tool. One URL into your AI client and your assistant gains the ability to verify any address as part of a chat workflow.

Claude DesktopClaude.ai webCursorWindsurfClaude CodeCodex CLI
claude_desktop_config.json
{
  "mcpServers": {
    "startuphub": {
      "url": "https://www.startuphub.ai/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_..."
      }
    }
  }
}

Pricing

Daily caps reset at midnight UTC. Volume credit packs available — never expire.

Free
$0
50/day validate
5/day discover
Pro Lite
$30/mo
500/day validate
50/day discover
Pro
$50/mo
2,000/day validate
200/day discover
Pro+
$90/mo
10,000/day validate
1,000/day discover

Try it free. No credit card.

50 validations/day on the free tier. Generate a key in 30 seconds.

Frequently asked questions

How do I validate an email address programmatically?
POST to https://www.startuphub.ai/api/v1/email/validate with a JSON body like { "email": "[email protected]" } and an Authorization: Bearer sk_live_... header. The response is { email, valid (boolean), status, confidence_score }. status is one of deliverable / not_deliverable / unknown / catch_all / role_account / disposable. Costs 1 credit per call regardless of result.
Is there a free email validation API?
Yes. The free tier gets 50 validations per day (50 validate / 5 discover), no credit card required. Generate a key at /my-account?tab=api in 30 seconds. Paid tiers scale to 10,000/day on Pro+.
How accurate is your email validation?
We verify the actual mailbox, not just whether the domain exists. Catch-all domains, role accounts, and disposable-mail providers are flagged separately so your code can decide what to do with them. Hardened corporate domains that block naïve checks come back as status:unknown rather than reported as deliverable — false positives there are precisely what kills sender reputation, so we'd rather say "we don't know" than guess.
How fast is real-time validation?
Median 200–800ms for a single validation, P95 under 2 seconds. Bulk validation (up to 1,000 emails per call) runs in parallel and streams results — first results land in under a second.
Does it handle catch-all domains?
Yes. Catch-all domains accept any address — pattern-only validators silently report them as deliverable, then your campaign bounces. We detect the catch-all behavior and flag the result with status:catch_all so your code can decide what to do (treat as risky, ask for re-confirmation, send anyway with downgraded confidence).
What's the difference between this API and the email finder API?
Validation answers "does this address exist?" Discovery answers "what's the address for this person at this company?" Validation costs 1 credit, discovery costs 3 credits and only debits on success. The email finder API runs validation internally on every candidate, so you don't need to chain a separate validate call after a successful discover.
Can I validate a list of emails in bulk?
Yes. POST an array (up to 1,000 emails per call) to /api/v1/email/bulk. Available on Pro Lite and above. Each row is billed individually — typically a 1,000-email batch costs 1,000 validate credits.
Does it work in Claude, Cursor, or other AI agents?
Yes — MCP server at https://www.startuphub.ai/api/v1/mcp exposes validate_email as an MCP tool. Drop the URL with ?key=YOUR_KEY into Claude.ai's connector and your agent can verify addresses in any chat. Cursor and Claude Desktop accept Bearer headers in their config files.
Will this hurt my sender reputation?
No. Validation never sends mail — only checks whether an address would be accepted. We respect per-provider rate limits and rotate egress so the mailbox provider sees a routine inquiry, not delivery traffic. Safe to run before every campaign.
How does this compare to NeverBounce, ZeroBounce, Kickbox?
NeverBounce charges $0.008/email at low volume. ZeroBounce is $15/mo for 2,000 credits ($0.0075/email). Kickbox is $0.01/verification. We're free for the first 50/day; on credit packs we're ~$0.005/email; under a paid plan you can hit $0.002/email at full daily use. Comparable accuracy, MCP support those vendors don't ship, and unified pricing with our discovery API (one credit pool, two products).