> ## Documentation Index
> Fetch the complete documentation index at: https://developers.fastdrop.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List Deliveries

> Delivery history for your webhooks — what we sent, and what your server said

Every webhook delivery is recorded with the response your server gave. Use this to answer "did the webhook for job X fire?" and to find events worth [replaying](/api-reference/retry-delivery).

Covers both registered endpoints and per-request `webhook_url` deliveries.

### Query parameters

<ParamField query="webhook_id" type="string">
  Only deliveries to this endpoint.
</ParamField>

<ParamField query="job_id" type="string">
  Only deliveries about this job. The fastest way to check whether a specific job's event was sent.
</ParamField>

<ParamField query="event" type="string">
  Only this event type, e.g. `job.completed`.
</ParamField>

<ParamField query="status" type="string">
  One of `pending`, `delivered`, `failed`. `failed` is what you want when reconciling.
</ParamField>

<ParamField query="before" type="string">
  ISO 8601 timestamp. Returns deliveries created strictly before it — pass the previous page's `next_cursor`.
</ParamField>

<ParamField query="limit" type="integer" default="25">
  1–100.
</ParamField>

### Response (200 OK)

<ResponseField name="deliveries" type="object[]">
  Newest first.

  <Expandable title="properties">
    <ResponseField name="id" type="string">Delivery UUID. Pass to [Get Delivery](/api-reference/get-delivery) or [Retry](/api-reference/retry-delivery).</ResponseField>
    <ResponseField name="event" type="string">Event type.</ResponseField>
    <ResponseField name="event_id" type="string | null">The `evt_...` id in the payload. Stable across retries and replays.</ResponseField>
    <ResponseField name="status" type="string">`pending`, `delivered`, or `failed`.</ResponseField>
    <ResponseField name="webhook_id" type="string | null">Registered endpoint, or `null` for a per-request `webhook_url` delivery.</ResponseField>
    <ResponseField name="target_url" type="string | null">Where it was sent.</ResponseField>
    <ResponseField name="job_id" type="string | null">The job this event describes, when it describes one.</ResponseField>
    <ResponseField name="attempts" type="integer">Attempts made so far.</ResponseField>
    <ResponseField name="max_attempts" type="integer">Always 3.</ResponseField>
    <ResponseField name="response_status" type="integer | null">HTTP status your server returned.</ResponseField>
    <ResponseField name="response_body" type="string | null">First 500 characters of your response — usually where the reason is.</ResponseField>
    <ResponseField name="error" type="string | null">Our summary of the failure (e.g. `HTTP 502`, a timeout, a TLS error).</ResponseField>
    <ResponseField name="created_at" type="string">When the delivery was queued.</ResponseField>
    <ResponseField name="last_attempt_at" type="string | null">Most recent attempt.</ResponseField>
    <ResponseField name="next_retry_at" type="string | null">When the next automatic retry fires, if any.</ResponseField>
    <ResponseField name="delivered_at" type="string | null">When your server accepted it.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="next_cursor" type="string | null">
  Pass as `before` for the next page. `null` on the last page.
</ResponseField>

<RequestExample>
  ```bash Failed deliveries theme={null}
  curl "https://api.fastdrop.io/api/v1/webhooks/deliveries?status=failed" \
    -H "X-API-Key: fd_live_your_key_here"
  ```

  ```bash One job's deliveries theme={null}
  curl "https://api.fastdrop.io/api/v1/webhooks/deliveries?job_id=a1b2c3d4-5678-90ab-cdef-1234567890ab" \
    -H "X-API-Key: fd_live_your_key_here"
  ```

  ```python Python theme={null}
  import httpx

  resp = httpx.get(
      "https://api.fastdrop.io/api/v1/webhooks/deliveries",
      params={"status": "failed", "limit": 100},
      headers={"X-API-Key": "fd_live_your_key_here"},
  )
  for d in resp.json()["deliveries"]:
      print(f"{d['event']} -> {d['response_status']} {d['error']} (job {d['job_id']})")
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "deliveries": [
      {
        "id": "8c7d6e5f-4a3b-2c1d-0e9f-8a7b6c5d4e3f",
        "event": "job.completed",
        "event_id": "evt_9f2c4a7b1e8d40a3b6c5d2e1f0a9b8c7",
        "status": "failed",
        "webhook_id": "3f9a1c22-8e4b-4d7a-9c11-77d2f0b5a8e3",
        "target_url": "https://your-server.com/webhooks/fastdrop",
        "job_id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
        "attempts": 3,
        "max_attempts": 3,
        "response_status": 502,
        "response_body": "Bad Gateway",
        "error": "HTTP 502",
        "created_at": "2026-08-15T12:01:15Z",
        "last_attempt_at": "2026-08-15T12:11:45Z",
        "next_retry_at": null,
        "delivered_at": null
      }
    ],
    "next_cursor": null
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.