---
title: "List deliveries and their stored payloads"
method: GET
path: "/v1/webhooks/{endpoint_id}/deliveries"
tags: ["webhooks"]
---

# List deliveries and their stored payloads

`GET /v1/webhooks/{endpoint_id}/deliveries`

## Request

- Base URL: `https://api.octaneai.com`
- URL: `https://api.octaneai.com/v1/webhooks/{endpoint_id}/deliveries`
- Auth: HTTP bearer

The stored payloads of an endpoint created with include_pii carry contact details, so reading them needs profiles:read as well.

## Path parameters

- `endpoint_id` string, required

## Query parameters

- `cursor` string, nullable: From the previous page's nextCursor
- `limit` integer

## Response `200`

One page of the endpoint's deliveries, newest first, each with the payload as it was signed.

- DeliveryList
  - `data` DeliverySummary[], required: The deliveries, newest first
    - `id` string, required: The delivery: one event to one endpoint
    - `endpoint_id` string, required: The endpoint
    - `event_id` string, required: The event, the webhook-id header
    - `topic` string, required: quiz.started | quiz.finished | quiz.abandoned | identity.captured | quiz.published | experiment.started | experiment.ended | profile.created | profile.updated | export.completed | webhook.endpoint.disabled | ping
    - `status` 'pending' | 'retrying' | 'delivering' | 'delivered' | 'dead', required: pending | retrying | delivering | delivered | dead
    - `attempts` integer, required: How many times it was sent
    - `next_attempt_at` string, date-time, required: When it is sent next
    - `last_status_code` integer, nullable, required: The HTTP status of the last attempt; null when none was received
    - `last_response` string, nullable, required: The start of the last response body, at most 1024 bytes
    - `last_error` string, nullable, required: Why the last attempt failed without a status, or why the delivery died; null otherwise
    - `created_at` string, date-time, required: When the event was queued for this endpoint
    - `delivered_at` string, date-time, nullable, required: When it was delivered; null until then
    - `payload` DeliveryPayload, required
      - `id` string, required: The event id
      - `type` string, required: The topic: quiz.started | quiz.finished | quiz.abandoned | identity.captured | quiz.published | experiment.started | experiment.ended | profile.created | profile.updated | export.completed | webhook.endpoint.disabled | ping
      - `created` string, date-time, required: When the event happened
      - `api_version` 'v1', required: The payload version
      - `data` object, required: {object} exactly as it was signed and sent
  - `has_more` boolean, required: Whether another page follows
  - `next_cursor` string, nullable, required: Send as cursor for the next page; null on the last

## Other responses

- `401`: The key is missing, malformed, revoked or expired.
- `403`: The store's plan has no API access, or the key lacks the scope.
- `404`: Not found
- `422`: A request parameter is invalid.
- `429`: The key's or the store's bucket is full; Retry-After says when to try again.
- `504`: The request timed out.

---

[API](https://skmtc.dev/octaneai/apis/octane-ai-merchant-api.md) - [All operations](https://skmtc.dev/octaneai/apis/octane-ai-merchant-api/llms.txt) - [OpenAPI document](https://skmtc.dev/octaneai/apis/octane-ai-merchant-api/revisions/dc2d1aa2b7c6?raw)
