---
title: "List deliveries for an endpoint"
method: GET
path: "/v1/webhooks/endpoints/{id}/deliveries"
tags: ["Webhooks - Deliveries"]
---

# List deliveries for an endpoint

`GET /v1/webhooks/endpoints/{id}/deliveries`

## Request

- Base URL: `https://api.0xarchive.io`
- URL: `https://api.0xarchive.io/v1/webhooks/endpoints/{id}/deliveries`
- Auth: API key in header `X-API-Key`

The endpoint's delivery log, newest first, with the event payload as sent, the attempt count, the status your receiver returned and the timing of the last attempt. One event and one endpoint share a single record for their whole life, so a repeat delivery rewrites that record rather than adding another. Authenticate with an API key or a signed-in dashboard session. Costs no credits.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `limit` integer

## Response `200`

The endpoint's delivery log

- ApiResponseWebhookDeliveryArray: API response containing an endpoint's delivery log.
  - `success` boolean, required
  - `data` WebhookDelivery[], required
    - `id` string, uuid, required: Delivery identifier.
    - `event_id` string, uuid, required: Event identifier, stable across retries and repeat deliveries. Deduplicate on this in your receiver.
    - `event_type` string, required: Event type delivered.
    - `state` 'pending' | 'delivered' | 'failed' | 'exhausted', required: `pending` is queued or waiting to retry, `delivered` landed, `failed` is the last attempt's result, and `exhausted` means the retry window closed without success.
    - `attempts` integer, required: Attempts made so far.
    - `last_status_code` integer, nullable: HTTP status your receiver returned on the last attempt.
    - `last_error` string, nullable: Why the last attempt failed. Null when it succeeded.
    - `last_latency_ms` integer, nullable: How long the last attempt took, in milliseconds.
    - `next_attempt_at` string, date-time, required: When the next attempt is due.
    - `delivered_at` string, date-time, nullable: When the delivery landed. Null until it does.
    - `created_at` string, date-time, required: When the delivery was queued. A repeat delivery resets this to the moment it was requested.
    - `payload` object, required: The event body as sent, including its `id`, `type`, `schema_version`, `observed_at` and `data`.
  - `meta` ResponseMeta, required: Response metadata. Every 2xx JSON response carries `meta.request_id`; list payloads add `count`; cursor-paged routes add `has_more` and, when another page follows, `next_cursor`; per-symbol routes add `symbol` and `venue`. Fields that do not apply to a route are omitted.
    - `count` integer: Number of records returned
    - `has_more` boolean: Cursor-paged routes: whether another page follows. `next_cursor` is present exactly when this is `true`. A final page can be empty when the previous page was exactly full; `has_more` is `false` on it.
    - `next_cursor` string: Opaque cursor for the next page, present exactly when `has_more` is `true`. Pass it back unchanged as `cursor` with the same filters. Do not parse or construct it.
    - `request_id` string, uuid, required: Unique request ID for support
    - `symbol` string: Per-symbol routes: the canonical public symbol the response describes (for example `BTC`, `xyz:TSLA`, `HYPE-USDC`, `#0`).
    - `venue` 'hyperliquid' | 'hip3' | 'hip4' | 'spot' | 'lighter' | 'rh-lighter': Per-symbol routes: the venue the response describes.
    - `coverage_from` string, date-time: Earliest coverage for the requested symbol and data type. Present only when the requested window ends before coverage begins.
    - `notice` string: Human-readable advisory about the response. Used when the requested window ends before coverage begins for the symbol, and on CVD responses that are one page of several; may carry other advisories in future.
    - `finalized_through` string, date-time: Two-tier datasets (Lighter trades): data at or before this instant is final; later data is preliminary.
    - `requested_end` string, date-time, nullable: The `end` the request asked for, echoed when it was clamped to `finalized_through`.
    - `clamped_to` string, date-time, nullable: The boundary the request's `end` was clamped to, when clamping occurred.
    - `preliminary_row_count` integer, nullable: Number of preliminary rows in this response, on routes that intentionally serve preliminary data (Lighter `/recent`).

## Other responses

- `400`: Invalid request: a parameter, symbol, interval, cursor or time range failed validation. See `error_code`.
- `401`: Authentication required: the API key is missing or invalid.
- `429`: Rate limit, concurrency limit or monthly credits exceeded. See `error_code`.
- `default`: Any other error. The body is an `ErrorResponse`; branch on `error_code`. A 503 (`upstream_unavailable`) carries `Retry-After`.

---

[API](https://skmtc.dev/0xarchive/apis/0xarchive-api-2.md) · [All operations](https://skmtc.dev/0xarchive/apis/0xarchive-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/0xarchive/apis/0xarchive-api-2/revisions/27076f55595f?raw)
