---
title: "Verify a stored decision"
method: GET
path: "/api/decision/{decision_id}/verify"
tags: ["Verification"]
---

# Verify a stored decision

`GET /api/decision/{decision_id}/verify`

## Request

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

## Path parameters

- `decision_id` string, required

## Response `200`

Ledger verification result

- VerificationResult
  - `ok` boolean, required
  - `decision_id` string
  - `source` string
  - `verified` boolean, required: True only when both integrity_valid and authenticity_valid are true.
  - `integrity_valid` boolean: True when the supplied hashes, signature bytes, fingerprints, and optional input links are internally consistent.
  - `authenticity_valid` boolean: True when the receipt signature validates against a trusted server, registry, pinned-key, or HMAC trust anchor.
  - `key_source` 'public_key' | 'key_registry' | 'environment' | 'request_body' | 'record' | 'none': Where the verification key came from. request_body and record are diagnostic sources, not authenticity trust anchors.
  - `checks` object, required
  - `expected` object
  - `actual` object
  - `policy_bundle` PolicyBundle
    - `id` string
    - `version` string
    - `hash` string
    - `hash_algorithm` string
    - `canonicalization` string
    - `source` string
    - `status` string
    - `effective_at` string
    - `deprecated_at` string
    - `changelog` string
    - `content_hash` string
  - `record_hash` string, nullable
  - `receipt_hash` string, nullable

## Other responses

- `401`: API key missing, invalid, inactive, or unauthorized
- `404`: Decision not found in the authenticated caller scope

---

[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)
