---
title: "List witness receipts for a (kid, session_id)"
method: GET
path: "/v1/witness/checkpoints"
tags: ["Audit"]
---

# List witness receipts for a (kid, session_id)

`GET /v1/witness/checkpoints`

## Request

- Base URL: `https://api.headlessoracle.com`
- URL: `https://api.headlessoracle.com/v1/witness/checkpoints`
- Auth: none declared

Returns at most 500 receipts ordered by count, then last_entry_hash, strictly after the pair in after. next_after is present only when more exist; clients MUST follow it. An unknown pair returns 200 with an empty list. Public, no auth.

## Query parameters

- `kid` string, required
- `session_id` string, required
- `after` string

## Response `200`

Receipts page

- object
  - `kid` string, required
  - `session_id` string, required
  - `receipts` WitnessReceipt[], required
    - `type` 'witness.checkpoint/1', required
    - `witness` 'headlessoracle.com', required
    - `received_at` string, date-time, required
    - `kid` string, required
    - `session_id` string, required
    - `count` string, required: Decimal string.
    - `last_entry_hash` string, required
    - `checkpoint_ts` string, required
    - `checkpoint_sha256` string, required: sha256:<hex> over the JCS bytes of the full signed checkpoint, sig included.
    - `fork` 'true' | 'false', required: Best effort at issue time; detect forks by comparing receipts.
    - `public_key_id` string, required
    - `signature` string, required: Lowercase hex, 128 chars.
  - `next_after` string: Present only when more receipts exist.

## Other responses

- `400`: bad_request: a missing or malformed parameter
- `429`: RATE_LIMITED; see Retry-After
- `503`: witness_unavailable

---

[API](https://skmtc.dev/headlessoracle/apis/headless-oracle.md) · [All operations](https://skmtc.dev/headlessoracle/apis/headless-oracle/llms.txt) · [OpenAPI document](https://skmtc.dev/headlessoracle/apis/headless-oracle/revisions/4e82fe332f29?raw)
