> ## Documentation Index
> Fetch the complete documentation index at: https://tfstudio.truefan.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List webhook deliveries

> See delivery history for a webhook endpoint — useful for debugging

Every attempted delivery to an endpoint — successful, retrying, or dead — is recorded here. Use this to debug a missed event instead of guessing whether TrueFan ever sent it.

<ParamField path="endpoint_id" type="string" required />

<ParamField header="Authorization" type="string" required>
  `Bearer {api_key}`
</ParamField>

<ParamField query="page" type="integer" default="1" />

<ParamField query="page_size" type="integer" default="50">
  Capped at 100.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://dev-backend-ai.truefans.in/api/external/v1/webhooks/{endpoint_id}/deliveries/?page=1&page_size=50" \
    -H "Authorization: Bearer $TRUEFAN_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "deliveries": [
      {
        "delivery_id": "1a2b3c4d-...",
        "event_type": "bulk_job.completed",
        "status": "delivered",
        "attempt_count": 1,
        "last_attempted_at": "2026-08-21T10:02:15Z",
        "last_response_code": 200,
        "created": "2026-08-21T10:02:14Z"
      },
      {
        "delivery_id": "5e6f7a8b-...",
        "event_type": "bulk_job.completed",
        "status": "dead",
        "attempt_count": 6,
        "last_attempted_at": "2026-08-21T11:30:00Z",
        "last_response_code": 503,
        "created": "2026-08-21T10:00:00Z"
      }
    ],
    "pagination": { "page": 1, "page_size": 50, "total": 2, "total_pages": 1 }
  }
  ```
</ResponseExample>

## Response fields

<ResponseField name="status" type="string">
  `pending`, `delivered`, `retrying`, or `dead`. `dead` means every retry (up to 6 attempts, over roughly an hour) failed — see [Webhooks guide](/docs/guides/webhooks#delivery-and-retries).
</ResponseField>

<ResponseField name="last_response_code" type="integer | null">
  The HTTP status your endpoint returned on the most recent attempt.
</ResponseField>

<Tip>
  If a delivery is `dead`, the event itself isn't lost — fetch the current state directly via [Get bulk job status](/docs/api-reference/status/get-bulk-job-status) using the `bulk_job_id` from the delivery's original payload.
</Tip>
