Skip to main content
Dialbird delivers events to your server using the REST Hooks model: one subscription per event type per URL. Manage subscriptions with the api:webhooks scope.

Event types

Subscribing

Create a subscription with a target_url (HTTPS) and a single event_type.
The response includes the plaintext signing_secret (prefixed whsec_) once. Store it immediately — it is never returned again. Listing subscriptions never includes it.

Delivery payload

Every delivery is an event envelope:
  • id — globally unique, prefixed evt_. Use it as a dedup key, since deliveries may be retried.
  • occurred_at — when the event occurred, not when it was delivered.
  • data — the event-specific payload (message/conversation/contact for message events; call/contact/user for call events).
Deliveries also carry X-Dialbird-Event-Id and X-Dialbird-Event-Type headers.
For call.*.completed events, recording_url, voicemail_url, and transcript are always null — recordings and voicemails are produced asynchronously after the call ends. They will be delivered via a dedicated call.recording.completed event (correlated by call id) in a future v1.x release.

Verifying signatures

Each delivery is signed with the X-Dialbird-Signature header:
The v1 value is an HMAC-SHA256, computed over ${t}.${raw_body} using your subscription’s signing_secret. Verify it against the raw request body before parsing JSON.
Reject any delivery whose signature does not match.

Acknowledging and retries

Respond with any 2xx to acknowledge a delivery. Respond with 410 Gone to permanently disable the subscription. A subscription’s status reflects its delivery health: listSubscriptions exposes consecutive_failures, last_delivered_at, and last_failed_at to help you monitor health.