AsyncAPI Specification
generated: '2026-11-11'
method: searched
generator: extract-docs-artifacts.py (local)
source: https://hail.so/docs/webhooks
sources:
- https://hail.so/docs/webhooks
- https://hail.so/blog/ai-outbound-calls#read-the-result-statuses-and-webhooks
- https://hail.so/docs/api/create_subscription_v1_webhooks_post
- https://hail.so/docs/api/delete_subscription_v1_webhooks__sub_id__delete
description: Hail posts a signed JSON payload to the subscriber URL for each subscribed event. Deliveries include several Hail‑specific headers
and are retried on non‑2xx responses.
events:
- event: email.received
description: A message arrived, and Hail accepted it.
- event: email.received.suppressed
description: A message arrived, but Hail held back fan‑out/forwarding; one event fires per suppression reason.
- event: email.delivered
description: SES accepted the message for delivery.
- event: email.delivery_delayed
description: SES reports a transient delay.
- event: email.bounced
description: The recipient mail server rejected the message (permanent or soft bounce).
- event: email.complained
description: The recipient marked the message as spam.
- event: email.opened
description: The recipient opened the message (image tracked, approximate; only for HTML emails).
- event: email.clicked
description: The recipient clicked a tracked link (only for HTML emails).
- event: email.send_failed
description: An outbound email failed to send.
- event: sms.received
description: An inbound SMS arrived, and Hail accepted it.
- event: sms.delivered
description: The carrier confirmed delivery.
- event: sms.undelivered
description: The carrier reported the message was not delivered.
- event: sms.failed
description: The send failed (transport error or carrier rejection).
- event: call.received
description: An inbound call reached one of your numbers and an agent is about to answer.
- event: call.answered
description: The other side is on the line (call entered in‑progress).
- event: call.completed
description: The call ended normally.
- event: call.failed
description: The call failed (setup error, trunk/media failure, force‑closed, or inbound refusal).
- event: call.busy
description: The callee was busy or rejected the call.
- event: call.no_answer
description: The callee did not answer.
- event: call.transferred
description: The agent handed the live call to a person; sent once when the transferred party has spoken for 10 seconds.
delivery:
signature: HMAC‑SHA256 over "{timestamp}.{raw_body}" using the secret; provided in the X‑Hail‑Signature header (format t=<unix>,v1=<hex>).
retries: Hail retries a non‑2xx response (or a timeout) on a fixed ladder.
note: All deliveries also include X‑Hail‑Event, X‑Hail‑Delivery, X‑Hail‑Subscription, and optionally X‑Hail‑Email‑Domain headers.
docs: https://hail.so/docs/webhooks
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/hail-so-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.