ZeroBounce · AsyncAPI Specification
Zerobounce Webhooks
Version
View Spec
View on GitHub
Email ValidationEmail DeliverabilityEmail VerificationMarketingLead ScoringAnti-SpamData QualityEmail FinderDeliverability MonitoringDMARCAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-13'
method: searched
source: >-
https://www.zerobounce.net/docs/email-validation-api-quickstart/v2-send-file/ and
https://www.zerobounce.net/docs/email-validation-api-quickstart/greylist-api-processing
docs: https://www.zerobounce.net/docs/email-validation-api-quickstart/v2-file-management-api
asyncapi_spec_published: false
asyncapi_note: >-
ZeroBounce publishes NO AsyncAPI document. Probed every host for /asyncapi.yaml,
/asyncapi.json and an event catalog; nothing served. What exists is a real but small
callback surface — two caller-registered completion callbacks — captured here as a
webhook catalog rather than fabricated as an AsyncAPI spec.
summary: >-
ZeroBounce has no event bus, no subscription management and no event catalog. It has
two fire-and-forget completion callbacks, both registered per-request as a URL
parameter on the call that starts the work, both delivered once when a long-running job
finishes. There is no signature, no shared secret, no retry policy and no replay — and
the provider states plainly that duplicate requests produce duplicate callbacks, each
of which is charged.
model: per-request callback URL
subscription_management: none
signing: none
signature_header: null
replay: none
delivery_guarantee: at-most-once, no documented retry
webhooks:
- id: bulk_validation_complete
name: Bulk validation file complete
registered_on: 'POST https://bulkapi.zerobounce.net/v2/sendfile'
parameter: return_url
required: false
method: POST
content_type: application/json
description: >-
POSTed to the caller's return_url when a bulk email-validation file finishes
processing. Carries only the job handle — results must then be pulled with
GET /v2/getfile?file_id=...
payload_example_verbatim: |
{
"file_id": "aaaaaaa-zzzz-xxxx-yyyy-5003727fffff",
"file_name": "Your file name.csv",
"upload_date": "2023-04-28T15:25:41Z"
}
payload_fields:
- name: file_id
type: string
format: uuid-like
description: Job handle returned by sendfile; use it against filestatus/getfile.
- name: file_name
type: string
description: Original uploaded file name.
- name: upload_date
type: string
format: date-time
description: ISO 8601 UTC timestamp of the original upload.
follow_up:
- 'GET https://bulkapi.zerobounce.net/v2/getfile?api_key=...&file_id=...'
- id: bulk_ai_scoring_complete
name: Bulk AI scoring file complete
registered_on: 'POST https://bulkapi.zerobounce.net/v2/scoring/sendfile'
parameter: return_url
required: false
method: POST
content_type: application/json
description: >-
Same completion callback shape as bulk validation, for the AI scoring file pipeline.
The MCP server exposes this as the `returnUrl` argument on
bulk_ai_scoring_send_file.
payload_fields:
- name: file_id
type: string
- name: file_name
type: string
- name: upload_date
type: string
format: date-time
payload_confidence: >-
medium — the scoring pipeline mirrors the validation pipeline and the MCP tool
exposes the identical returnUrl argument, but ZeroBounce publishes the verbatim
payload example only on the validation sendfile page.
follow_up:
- 'GET https://bulkapi.zerobounce.net/v2/scoring/getfile?api_key=...&file_id=...'
- id: greylist_processing_complete
name: Greylist re-validation complete
registered_on: 'GET /v2/validate (with greylist_processing=true)'
parameter: callback_url
required: false
method: not documented
description: >-
When a greylisted address is re-validated asynchronously, ZeroBounce sends an HTTP
request to callback_url with the result. ZeroBounce treats the callback as delivered
when the receiver answers 200 or 201.
success_criteria: Receiver must return HTTP 200 or 201.
payload_fields: not documented
payload_note: >-
The greylist page does not publish the callback payload shape or an example — an
integrator cannot write the receiver from the docs alone.
billing_note_verbatim: >-
"duplicate requests are allowed. If you make the same request twice, you can expect
two callbacks. Each callback will be charged."
receiver_requirements:
- Publicly reachable HTTPS URL.
- Return 200 or 201 (greylist callback explicitly; the file callbacks do not publish a
success criterion).
- >-
Deduplicate on file_id yourself. ZeroBounce documents duplicate delivery as expected
behaviour and charges for it.
- >-
Do not trust the callback body as authenticated. There is no signature, so treat it
strictly as a hint to go pull the result with your own API key.
gaps:
- No AsyncAPI, no event catalog, no channel documentation.
- No webhook signing or verification mechanism of any kind.
- No retry, backoff or dead-letter policy published.
- No webhook management endpoints — URLs are per-request only, so there is nothing to
list, rotate or disable after the fact.
- Greylist callback payload undocumented.
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/zerobounce-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.