webhooks

Retrieve a webhook delivery

Changed on

Retrieve one delivery: its status and error, the event body and headers it carried, and a targets entry per subscriber with the run or session it started or why its filter skipped the event. When the delivery resumed waiting runs, one more entry summarizes them.

get/api/v1/webhooks/deliveries/{deliveryId}

Request

Response

Successful request

idstring required

The delivery's id.

status'pending' | 'processing' | 'succeeded' | 'failed' | 'filtered' | 'unmatched' required

pending is waiting to be routed (including after a retryable error), processing is being routed, succeeded reached at least one subscriber or waiting run with nothing failed, failed means a subscriber failed after its retries, filtered means no subscriber's filter took it, and unmatched means runs were waiting on the endpoint but none matched and no subscriber took it.

externalDeliveryIdstring required

The provider's id for the delivery, such as a Stripe event id or GitHub's X-GitHub-Delivery header.

isTestboolean required

Whether the request carried an x-trigger-test header, as test sends from the dashboard do.

createdAtstring date-time required
processedAtstring date-time nullable required
idempotencyKeystring required

The key the delivery was deduplicated on.

eventunknown required
headersobject nullable required

The request headers, with credentials such as signatures removed.

rawBodyHashstring nullable required

A hash of the raw request body.

errorstring nullable required

For a failed delivery, the error and the subscriber it came from.

filterReasonstring nullable required

For a filtered delivery, why no subscriber took it.

updatedAtstring date-time required

Example response

{
  "id": "whd_1234",
  "endpoint": {
    "id": "wh_cm1a2b3c4d5e6f",
    "declaredId": "stripe"
  },
  "externalDeliveryId": "evt_1PqR2s3T4u5V6w",
  "targets": [
    {
      "id": "process-checkout",
      "runId": "run_cm1a2b3c4d5e6f"
    }
  ]
}

Changes