---
title: "List a route's delivery history, keyset newest-first"
method: GET
path: "/buzz-project-event-routes/v1/{buzz_project_event_route_id}/deliveries"
tags: ["Buzz Control Plane"]
---

# List a route's delivery history, keyset newest-first

`GET /buzz-project-event-routes/v1/{buzz_project_event_route_id}/deliveries`

## Request

- Base URL: `https://api.run402.com`
- URL: `https://api.run402.com/buzz-project-event-routes/v1/{buzz_project_event_route_id}/deliveries`
- Auth: one of:
  - API key in header `SIGN-IN-WITH-X`
  - HTTP bearer

## Path parameters

- `buzz_project_event_route_id` string, required

## Query parameters

- `limit` integer
- `cursor` string
- `delivery_id` string

## Response `200`

Delivery rows including dead letters; the signed envelope is never included

- object
  - `buzz_project_event_deliveries` BuzzProjectEventRouteDelivery[], required
    - `buzz_project_event_delivery_id` string, required
    - `kind` 'event' | 'test', required
    - `status` 'queued' | 'retryable' | 'delivered' | 'suppressed' | 'dead_letter' | 'cancelled', required: dead_letter rows ARE the dead letters — there is no separate ledger. The stored signed envelope is never returned.
    - `event_type` string, required
    - `project_id` string, required
    - `project_event_id` integer, nullable, required: null for kind test.
    - `occurred_at` string, date-time, required
    - `nostr_event_id` string, nullable, required
    - `projection_hash` string, nullable, required: SHA-256 of the exact community-facing projection content.
    - `signing_generation` integer, nullable, required
    - `attempt_count` integer, required
    - `next_attempt_at` string, date-time, nullable, required
    - `last_error` string, nullable, required
    - `suppressed_reason` string, nullable, required
    - `created_at` string, date-time, required
    - `delivered_at` string, date-time, nullable, required
    - `terminal_at` string, date-time, nullable, required
    - `release_id` string, nullable, required: The release this delivery belongs to; deliveries thread by (route, release).
    - `thread_root_delivery_id` string, nullable, required: Public id of the thread root delivery, for replies.
    - `thread_position` 'root' | 'reply', nullable, required
    - `signer` 'installation_identity' | 'project_bot', required: Who signed the envelope: the installation identity, or the project's attested bot.
  - `has_more` boolean, required
  - `next_cursor` string: Present only when has_more is true.

## Other responses

- `403`: Canonical Buzz control-plane error. Authorization is existence-obscuring; proof failures never consume a challenge or partially create authority.
- `404`: Canonical Buzz control-plane error. Authorization is existence-obscuring; proof failures never consume a challenge or partially create authority.
- `422`: Canonical Buzz control-plane error. Authorization is existence-obscuring; proof failures never consume a challenge or partially create authority.

---

[API](https://skmtc.dev/run402/apis/run402-api.md) · [All operations](https://skmtc.dev/run402/apis/run402-api/llms.txt) · [OpenAPI document](https://skmtc.dev/run402/apis/run402-api/revisions/893607557f50?raw)
