---
title: "Retrieve a webhook delivery"
method: GET
path: "/api/v1/webhooks/deliveries/{deliveryId}"
tags: ["webhooks"]
---

# Retrieve a webhook delivery

`GET /api/v1/webhooks/deliveries/{deliveryId}`

## Request

- Base URL: `https://api.trigger.dev`
- URL: `https://api.trigger.dev/api/v1/webhooks/deliveries/{deliveryId}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/triggerdotdev/apis/trigger-dev-v3-rest-api/docs/api/v1/webhooks/deliveries/:deliveryId/get.ts> (a function with typed inputs; its response is checked against the schema)

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.

## Response `200`

Successful request

- WebhookDeliveryObject
  - `id` string, required: The delivery's id.
  - `endpoint` object, nullable, required: The endpoint the delivery arrived on, or `null` if it has since been removed.
    - `id` string, required
    - `declaredId` string, required
  - `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.
  - `externalDeliveryId` string, required: The provider's id for the delivery, such as a Stripe event id or GitHub's `X-GitHub-Delivery` header.
  - `isTest` boolean, required: Whether the request carried an `x-trigger-test` header, as test sends from the dashboard do.
  - `createdAt` string, date-time, required
  - `processedAt` string, date-time, nullable, required
  - `idempotencyKey` string, required: The key the delivery was deduplicated on.
  - `event` unknown, required
  - `headers` object, nullable, required: The request headers, with credentials such as signatures removed.
  - `rawBodyHash` string, nullable, required: A hash of the raw request body.
  - `error` string, nullable, required: For a `failed` delivery, the error and the subscriber it came from.
  - `filterReason` string, nullable, required: For a `filtered` delivery, why no subscriber took it.
  - `targets` WebhookDeliveryTarget[], required: One entry per subscriber, plus a `waiter` entry when the delivery matched waiting runs.
    - `id` string, required: The subscriber id, or `waiters` for the waiting-runs summary.
    - `type` 'task' | 'session' | 'waiter', required
    - `status` 'pending' | 'succeeded' | 'failed' | 'filtered', required
    - `reason` string, nullable, required: For a `filtered` target, the filter clause that failed and the value it saw.
    - `error` string, nullable, required
    - `runId` string, nullable, required: The run the subscriber started.
    - `sessionId` string, nullable, required: The session the event was routed into, for a `session` subscriber.
    - `waiters` object, nullable, required: For the `waiter` summary, how many waiting runs matched, were resumed, and failed to resume.
      - `matched` integer, required
      - `resumed` integer, required
      - `failed` integer, required
  - `updatedAt` string, date-time, required

## Other responses

- `401`: Unauthorized request
- `404`: Delivery not found

## Changes

- **2026-10-15** `f44b1ec886c8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/triggerdotdev/apis/trigger-dev-v3-rest-api/changes/api/v1/webhooks/deliveries/:deliveryId/get.md)

---

[API](https://skmtc.dev/triggerdotdev/apis/trigger-dev-v3-rest-api.md) - [All operations](https://skmtc.dev/triggerdotdev/apis/trigger-dev-v3-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/triggerdotdev/apis/trigger-dev-v3-rest-api/revisions/441161111493?raw)
