Bird · AsyncAPI Specification

Messagebird Bird Webhooks

Version

View Spec View on GitHub CommunicationsSMSEmailWhatsAppVoiceMessagingOmnichannelCustomer EngagementVerificationCPaaSWebhookAgentsTelecommunicationsAsyncAPIEvents

AsyncAPI Specification

Raw ↑
generated: '2026-09-17'
method: searched
source: https://bird.com/docs/guides/webhooks
spec_type: Webhooks
asyncapi_published: false
asyncapi_note: >-
  Bird documents a full webhook event surface but publishes no AsyncAPI document. /asyncapi.yaml,
  /asyncapi.json and the docs host were checked; the OpenAPI carries no `webhooks:` object
  either (webhook endpoints are managed through 9 REST operations under the `webhooks` tag).
  The catalog below is the captured webhook contract, not a generated AsyncAPI.
standard: Standard Webhooks (https://www.standardwebhooks.com)
envelope:
  shape: '{"type": "...", "timestamp": "...", "data": {...}}'
  note: Payloads are compact and recipient-scoped, not the full resource. Fetch by ID for more context.
signing:
  algorithm: HMAC-SHA256
  signed_string: '{webhook-id}.{webhook-timestamp}.{raw request body}'
  key_derivation: strip the whsec_ prefix and base64-decode the remainder
  headers:
  - name: webhook-id
    meaning: Identifies the event delivery; retries and replays reuse the same value
  - name: webhook-timestamp
    meaning: Unix seconds of this delivery attempt
  - name: webhook-signature
    meaning: 'v1,<base64 HMAC-SHA256>; possibly several space-delimited signatures during rotation'
  timestamp_tolerance_seconds: 300
  secret_prefix: whsec_
  secret_shown: once, at endpoint creation
delivery:
  content_type: application/json
  batching: none — one event per POST
  response_budget_seconds: 15
  success: any 2xx
  ordering: not ordered — sort by the payload `timestamp`, never arrival order
  guarantee: at-least-once — deduplicate on webhook-id
  retries:
  - attempt: 1
    delay: 5 seconds
  - attempt: 2
    delay: 5 minutes
  - attempt: 3
    delay: 30 minutes
  - attempt: 4
    delay: 2 hours
  - attempt: 5
    delay: 5 hours
  - attempt: 6
    delay: 10 hours
  - attempt: 7
    delay: 10 hours
  total: 8 attempts over roughly 27.5 hours, +/-20% jitter
  note: A 429 or connection timeout waits at least 60s; a Retry-After on your response is honored. There is no status code that stops delivery early.
endpoint_rules:
- URLs must be HTTPS, at most 2048 characters, and publicly reachable; private/loopback/link-local addresses are rejected with 422.
- The events array lists up to 100 types from the catalog. Wildcards such as sms.* are refused with 422.
- Existing subscriptions do not expand when new types become available.
- status can be set to paused to stop deliveries temporarily; delete is permanent and cannot be undone.
scopes: [webhooks:read, webhooks:write]
event_catalog:
- group: email
  docs: https://bird.com/docs/guides/email/events
  types: [email.accepted, email.processed, email.delivered, email.deferred, email.bounced, email.complained, email.rejected, email.opened, email.clicked, email.unsubscribed, email.list_unsubscribed, email.canceled]
  base_data_fields: [email_id, recipient_id, workspace_id, recipient, recipient_role, tags, metadata, broadcast_id]
- group: sms
  docs: https://bird.com/docs/guides/sms/events
  types: [sms.accepted]
  note: 'Bird documents "the message lifecycle from sms.accepted to a terminal status"; the per-type list lives on the SMS events page and was not enumerated here.'
- group: whatsapp
  docs: https://bird.com/docs/guides/whatsapp/events
  types: [whatsapp.accepted, whatsapp.delivered, whatsapp.read, whatsapp.failed, whatsapp.rejected, whatsapp.received, whatsapp.reacted]
- group: verify
  docs: https://bird.com/docs/guides/verify/events
  types: [verify.verification.created, verify.verification.verified, verify.attempt.sent, verify.attempt.delivered, verify.attempt.undelivered]
- group: preference
  docs: https://bird.com/docs/guides/webhooks#preference-events
  types: [preference.granted, preference.revoked, preference.deleted]
  data_fields: [preference_id, transition_id, channel, handle, sender_scope, topic_id, coverage, contact_id]
operations:
  create: createWebhook
  list: listWebhooks
  get: getWebhook
  update: updateWebhook
  delete: deleteWebhook
  rotate_secret: rotateWebhookSecret
  test: testWebhook
  replay: createWebhookReplay
  attempts: listWebhookAttempts
  spec: openapi/messagebird-bird-api-openapi.yml
stability: Event names are never renamed; new types are added as products ship. Write handlers to ignore unrecognized types.

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.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/messagebird-bird-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.