Sign inGet Started

Get a webhook endpoint

GET
/v1/webhooks/{webhook_id}
const endpoint = await bird.webhooks.get("whk_01krdgeqcxet5s7t44vh8rt9mg");
console.log(endpoint.url, endpoint.events);
Response200
{
  "id": "whk_01krdgeqcxet5s7t44vh8rt9mg",
  "url": "https://example.com/webhook",
  "description": "Production webhook endpoint",
  "filter": null,
  "events": [
    "email.delivered",
    "email.bounced"
  ],
  "status": "active",
  "destination": {
    "type": "webhook"
  },
  "created_at": "2026-05-20T09:14:52Z",
  "updated_at": "2026-05-25T16:42:01Z"
}

Returns one webhook endpoint's configuration and current delivery status, including its URL and subscribed event types. The signing secret is never included; if you lost it, mint a new one with Rotate webhook signing secret.

Parameters

webhook_idstring

ID of the webhook endpoint (whk_ prefix), as returned when it was created.

Response Payload

id
string
required

Unique identifier for the endpoint (whk_ prefix). Accepted as webhook_id by every /v1/webhooks/{webhook_id} operation.

url
string
required

HTTPS URL where the API delivers events for this endpoint.

description
string

Human-readable label for the endpoint.

filter
nullable object
required

Mailbox scope configured through filter, or null.

Show child attributes
filter.mailbox_id
string
required

Mailbox to receive events for. Must belong to this workspace; a mailbox outside it returns 422.

events
array of string
required

Event types this endpoint is subscribed to; only matching events are delivered. Change the set with Update a webhook endpoint.

status
string
required

Delivery state of the endpoint.

  • active: The initial state; events are being delivered normally.
  • degraded: Recent deliveries are failing. We keep delivering and retrying, and the endpoint returns to active automatically once deliveries succeed again.
  • paused: All delivery is stopped, either because an update set status to paused or automatically after sustained delivery failures. A paused endpoint never resumes on its own: re-enable it with Update a webhook endpoint, then Replay failed deliveries to recover the deliveries that failed before the pause. Events that arrived while it was paused were never attempted, so a replay does not reach them.

Possible values: active, degraded, paused

destination
object

How each delivery to the endpoint is built.

Show child attributes

Posts the signed event to the endpoint's url unchanged.

destination.type
string
required

Value: webhook

created_at
string
required
updated_at
string
required