{"uid":"cap_3t68B__6Yl0UbqCyiWpPC","slug":"bulk-email-validation-api-x402-gateway-blackwoodstate8-workers-dev-30a99863","name":"Bulk Email Validation API (x402-gateway.blackwoodstate8.workers.dev)","description":"Use when you need bulk email validation, email list verification or to verify email lists before a send or import. Do not use for one address (email-check is cheaper), proving a mailbox exists (no SMTP probe) or sending email. Returns JSON checking up to 20 email addresses in one call: syntax, MX records, disposable, free and role flags, SPF, DMARC and a verdict each, plus counts by verdict for 0.02 USDC per call. Typical response time 2500 ms (p95). Category: Data.","url":"https://x402-gateway.blackwoodstate8.workers.dev/v1/email-batch?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body"],"properties":{"body":{"type":"object","required":["emails"],"properties":{"emails":{"type":"array","items":{"type":"string","maxLength":320},"maxItems":20,"minItems":1,"description":"Email addresses to check, 1 to 20, e.g. [\"jane@example.com\", \"info@ietf.org\"]"}}},"type":{"type":"string","const":"http"},"method":{"enum":["POST"],"type":"string"},"bodyType":{"enum":["json","form-data","text"],"type":"string"}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","required":["count","domains","summary","results"],"properties":{"next":{"type":"object","required":["service","tool","method","url","useWhen","sample"],"properties":{"url":{"type":"string","description":"Paid route of the next call"},"tool":{"type":"string","description":"MCP tool name of the same call"},"method":{"enum":["GET","POST"],"type":"string"},"sample":{"type":"string","description":"Free fixed sample of the whole family"},"service":{"type":"string","description":"Service id of the suggested next paid call"},"useWhen":{"type":"string","description":"When the next call is the right one"}},"description":"Suggested next paid call in the same family (call it in a loop when the task continues)","additionalProperties":false},"count":{"type":"number"},"domains":{"type":"number"},"results":{"type":"array","items":{"type":"object","required":["email","normalized","syntaxValid","domain","disposable","freeProvider","roleAccount","domainExists","mx","acceptsMail","spf","dmarc","dmarcPolicy","verdict","reasons","smtpChecked"],"properties":{"mx":{"type":"array","items":{"type":"object","required":["priority","host"],"properties":{"host":{"type":"string"},"priority":{"type":"number"}},"additionalProperties":false}},"spf":{"type":["string","null"]},"dmarc":{"type":["string","null"]},"email":{"type":"string"},"domain":{"type":["string","null"]},"reasons":{"type":"array","items":{"type":"string"}},"verdict":{"enum":["deliverable_domain","risky","undeliverable","invalid","unknown"],"type":"string"},"disposable":{"type":"boolean"},"normalized":{"type":["string","null"]},"acceptsMail":{"type":"boolean"},"dmarcPolicy":{"type":["string","null"]},"roleAccount":{"type":"boolean"},"smtpChecked":{"type":"boolean"},"syntaxValid":{"type":"boolean"},"domainExists":{"type":["boolean","null"]},"freeProvider":{"type":"boolean"}},"additionalProperties":false}},"summary":{"type":"object","required":["deliverable_domain","risky","undeliverable","invalid","unknown"],"properties":{"risky":{"type":"number"},"invalid":{"type":"number"},"unknown":{"type":"number"},"undeliverable":{"type":"number"},"deliverable_domain":{"type":"number"}},"additionalProperties":false}},"additionalProperties":false}}}}},"responseSchema":{"type":"json","example":{"count":4,"domains":3,"results":[{"mx":[{"host":"mx.ietf.org","priority":0}],"spf":"v=spf1 ip4:166.84.6.31 ip4:166.84.7.238 ip6:2602:f977:800:f7f6::/64 ip4:166.84.7.34 ip6:2602:f977:800::e276:63ff:fe66:3400 include:_spf.google.com include:spf.hostedrt.com ~all","dmarc":"v=DMARC1; p=none; rua=mailto:dmarc_agg@vali.email,mailto:dmarc-report@ietf.org","email":"postmaster@ietf.org","domain":"ietf.org","reasons":["role_account"],"verdict":"deliverable_domain","disposable":false,"normalized":"postmaster@ietf.org","acceptsMail":true,"dmarcPolicy":"none","roleAccount":true,"smtpChecked":false,"syntaxValid":true,"domainExists":true,"freeProvider":false},{"mx":[{"host":"mail.mailinator.com","priority":1},{"host":"mail2.mailinator.com","priority":1}],"spf":"v=spf1 -all","dmarc":"v=DMARC1;p=reject;sp=reject;aspf=s;pct=100","email":"test@mailinator.com","domain":"mailinator.com","reasons":["disposable"],"verdict":"risky","disposable":true,"normalized":"test@mailinator.com","acceptsMail":true,"dmarcPolicy":"reject","roleAccount":false,"smtpChecked":false,"syntaxValid":true,"domainExists":true,"freeProvider":false},{"mx":[],"spf":"v=spf1 -all","dmarc":"v=DMARC1;p=reject;sp=reject;adkim=s;aspf=s","email":"info@example.com","domain":"example.com","reasons":["null_mx","role_account"],"verdict":"undeliverable","disposable":false,"normalized":"info@example.com","acceptsMail":false,"dmarcPolicy":"reject","roleAccount":true,"smtpChecked":false,"syntaxValid":true,"domainExists":true,"freeProvider":false},{"mx":[],"spf":null,"dmarc":null,"email":"not-an-email","domain":null,"reasons":["syntax"],"verdict":"invalid","disposable":false,"normalized":null,"acceptsMail":false,"dmarcPolicy":null,"roleAccount":false,"smtpChecked":false,"syntaxValid":false,"domainExists":null,"freeProvider":false}],"summary":{"risky":1,"invalid":1,"unknown":0,"undeliverable":1,"deliverable_domain":1}}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.02","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"registry","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.02/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_G_w-ucLay0uPxivhaZNPP","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.02","costPer":"request","priority":0,"asset":null,"unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Validates up to 20 email addresses per call, checking syntax, MX records, disposable/free/role flags, SPF, DMARC, and returning a verdict for each address.","exampleAgentPrompt":"Before I import these emails into my CRM, can you batch-verify them for me — check syntax, whether the domains accept mail, and flag any disposable or role-based addresses: alice@example.com, info@widgets.io, bob@tempmail.com, jane@gmail.com, support@acme.org?","exampleUseCases":[{"title":"Pre-send email list scrub","prompt":"I'm about to send a marketing campaign to these 15 addresses — can you verify them all for deliverability and flag any disposable, role-based, or invalid ones before I hit send? Here's the list: [alice@example.com, info@acme.com, noreply@widgets.io ...]"},{"title":"New user signup fraud check","prompt":"We just got 12 new signups and I want to make sure they're not using throwaway or fake emails — can you validate all of them at once and tell me which ones look suspicious or disposable?"},{"title":"CRM import quality gate","prompt":"Before we import this batch of 18 prospect emails into our CRM, run them through validation and tell me which ones have bad syntax, missing MX records, or belong to free email providers so we can clean the list first."}],"resultDescription":"Returns a JSON object with a results array (one entry per email address) containing: normalized email, syntax validity, domain, MX records, disposable/free provider/role account flags, domain existence, SPF and DMARC records and policy, a per-address verdict, reasons for the verdict, and whether SMTP was checked. Also includes aggregate summary counts by verdict and the number of unique domains checked.","failureModes":["More than 20 emails submitted — returns validation error","Invalid email string format in array — individual entry marked syntax invalid","Domain with no MX records — mx array empty, acceptsMail false","DMARC/SPF lookup timeout — fields may be null","Network timeout for DNS lookups within the 2500ms p95 window","Payment not attached or insufficient — x402 payment required error"],"whenToPreferThis":"Use this endpoint when you need to validate between 2 and 20 email addresses in a single call and want comprehensive checks including syntax, DNS/MX, disposable detection, role-account flagging, SPF and DMARC analysis. Prefer this over single-address email-check endpoints when working with lists; it is more cost-efficient per address at scale. Do not use this if you need SMTP probing to confirm a specific mailbox exists, if you need to send email, or if you only have one address (a cheaper single-check endpoint may be preferable).","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-23T00:30:49.902Z","isFirstParty":false,"canonicalSlug":"bulk-email-validation-api-x402-gateway-blackwoodstate8-workers-dev-30a99863"}