---
title: "The receipt chain for an operation, with the result of recomputing it."
method: GET
path: "/v1/operations/{operation_id}/receipts"
tags: ["Receipts"]
---

# The receipt chain for an operation, with the result of recomputing it.

`GET /v1/operations/{operation_id}/receipts`

## Request

- Base URL: `https://api.fidren.net`
- URL: `https://api.fidren.net/v1/operations/{operation_id}/receipts`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

## Path parameters

- `operation_id` string, required

## Response `200`

The chain and its verdict.

- ReceiptChain
  - `operation_id` string, required
  - `receipts` Receipt[], required
    - `id` integer, required
    - `operation_id` string, required
    - `address` string, required
    - `chain` string, required
    - `side` 'PAYER' | 'PAYEE', required
    - `counterparty_address` string, nullable, required
    - `status` 'REQUESTED' | 'ACCEPTED' | 'DELIVERED' | 'CONCLUDED' | 'FAILED' | 'DISPUTED' | 'REFUNDED', required
    - `amount_cents` integer, nullable, required
    - `currency` string, nullable, required
    - `tx_hash` string, nullable, required
    - `occurred_at` string, date-time, required
    - `prev_hash` string, nullable, required
    - `hash` string, required
    - `signature` string, nullable, required: The reporter's signature over this receipt, or null. Non-null means it was checked and matched: anyone holding this row can recompute the hash, rebuild the statement and recover the signer without trusting Fidren or the key that submitted it.
    - `signed` boolean, required: Whether authorship rests on a signature from the address rather than on the API key that submitted the report.
    - `corroboration` object: The operation's corroboration verdict as it stands after this receipt was written — the same verdict `GET /v1/operations/{operation_id}/receipts` reports. Present on every `POST /v1/receipts` response; absent from the receipts listed inside a `ReceiptChain`, which carries the verdict once at its top level. `CONTRADICTED` is adverse evidence, not an error to reconcile.
      - `state` 'SINGLE_SIDED' | 'CORROBORATED' | 'CONTRADICTED', required
      - `disagreements` string[], required
      - `both_signed` boolean, required
    - `signature_error` string: Why the supplied `signature` was not accepted. Present on a `POST /v1/receipts` response only when a signature was sent and did not match `address` when checked; absent when none was sent or it matched. The receipt is still recorded — with `signature: null` and `signed: false`, attributed to the API key rather than to the address. Prose; do not parse it.
  - `verification` object, required: The result of recomputing the hash chain. A valid chain shows the sequence has not been reordered or edited since it was written. It shows nothing about whether the reported events happened.
    - `valid` boolean, required
    - `reason` string
    - `index` integer
  - `verification_by_side` object, required: The same verdict per side, since each end keeps its own chain. Null for a side that has not reported.
  - `corroboration` object, required: How the two ends' accounts compare. `CONTRADICTED` is not an error to be reconciled — it is adverse evidence, and the one signal that cannot be manufactured by the party it is about.
    - `state` 'SINGLE_SIDED' | 'CORROBORATED' | 'CONTRADICTED', required
    - `disagreements` string[], required
    - `both_signed` boolean, required

## Other responses

- `400`: The request was rejected by validation.
- `401`: No usable access path. Either a key was presented and is not valid, or no key was presented, the free allowance is spent, and x402 charging is off. A presented key never falls back to the free tier or to being charged.
- `403`: The API key is valid, but its organization is not currently permitted to make this request. Do not rotate the key: it is not the problem.
- `404`: No such resource.
- `429`: Rate limit exceeded. Retry after the number of seconds in `Retry-After`.
- `503`: A required dependency is unavailable. Safe to retry.

---

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