---
title: "Read a Decision Record audit chain"
method: GET
path: "/api/decision/chains/{chain_id}"
tags: ["Audit Chain"]
---

# Read a Decision Record audit chain

`GET /api/decision/chains/{chain_id}`

## Request

- Base URL: `https://www.decide.fyi`
- URL: `https://www.decide.fyi/api/decision/chains/{chain_id}`
- Auth: API key in header `x-api-key`

Returns decision_chain_v1 head metadata, retained chain links, rolling Merkle root, and verification checks for the caller API-key scoped audit chain. Reads fail with 503 when the authoritative chain store is unavailable rather than reporting a missing chain.

## Path parameters

- `chain_id` string, required

## Query parameters

- `limit` integer

## Response `200`

Decision chain report

- DecisionChain
  - `ok` boolean, required
  - `decision_chain_version` 'decision_chain_v1', required
  - `chain_id` string, required
  - `chain_size` integer, required
  - `merkle_strategy` 'rolling_sha256_pair_v1'
  - `merkle_root` string, nullable, required
  - `head_link_hash` string, nullable
  - `updated_at` string
  - `head` DecisionChainLink, required
    - `decision_chain_version` 'decision_chain_v1', required
    - `chain_id` string, required
    - `chain_position` integer, required
    - `previous_link_hash` string, nullable
    - `previous_merkle_root` string, nullable
    - `leaf_hash` string, required
    - `merkle_root` string, required
    - `merkle_strategy` 'rolling_sha256_pair_v1'
    - `link_hash` string, required
    - `entry_type` string
    - `decision_id` string, required
    - `record_hash` string, required
    - `receipt_hash` string, nullable
    - `policy_id` string, nullable
    - `policy_version` string, nullable
    - `created_at` string
    - `verify_url` string
    - `chain_url` string
  - `retained_links` DecisionChainLink[], required
    - `decision_chain_version` 'decision_chain_v1', required
    - `chain_id` string, required
    - `chain_position` integer, required
    - `previous_link_hash` string, nullable
    - `previous_merkle_root` string, nullable
    - `leaf_hash` string, required
    - `merkle_root` string, required
    - `merkle_strategy` 'rolling_sha256_pair_v1'
    - `link_hash` string, required
    - `entry_type` string
    - `decision_id` string, required
    - `record_hash` string, required
    - `receipt_hash` string, nullable
    - `policy_id` string, nullable
    - `policy_version` string, nullable
    - `created_at` string
    - `verify_url` string
    - `chain_url` string
  - `verification` object, required

## Other responses

- `401`: API key missing, invalid, inactive, or unauthorized
- `403`: Requested chain does not match caller scope
- `404`: Decision chain not found
- `503`: Decision storage or the upstream decision engine timed out or is temporarily unavailable

---

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