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 -X POST https://www.startuphub.ai/api/v1/email/validate \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "email": "[email protected]" }'How it works
One POST. Real-time mailbox check. Categorical verdict.
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.
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.
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.
| status | When you’ll see it |
|---|---|
deliverable | Mailbox confirmed real and accepting mail. Safe to send. |
not_deliverable | Mailbox does not exist or is rejecting all mail. Don't send. |
catch_all | Domain accepts everything. Address may or may not reach a real person — downgrade confidence. |
role_account | Generic address (info@, sales@, support@). Real, but unlikely to be a specific person. |
disposable | Address belongs to a temporary-mail provider (10minutemail, mailinator). Block on signup forms. |
unknown | Hardened 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.
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();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'{
"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.
| Provider | Their offering | StartupHub.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) |
| Kickbox | Pay-as-you-go from $0.01/verification | Daily plan caps + never-expiring credit packs |
| BriteVerify | Sales-led pricing, $40/mo entry tier | Self-serve API key in 30 seconds, free tier included |
| Mailgun Validations | Bundled with Mailgun email infra | Standalone — no email-sending lock-in |
| Bouncer | No MCP server, no AI-agent integration | MCP-native, works in Claude / Cursor / Windsurf |
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.
{
"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.
Try it free. No credit card.
50 validations/day on the free tier. Generate a key in 30 seconds.