---
title: "Verify a decision chain"
method: GET
path: "/api/v1/audit/chains/{chainID}/verify"
tags: ["Audit Verification"]
---

# Verify a decision chain

`GET /api/v1/audit/chains/{chainID}/verify`

## Request

- Base URL: `https://agent.getaxonflow.com`
- URL: `https://agent.getaxonflow.com/api/v1/audit/chains/{chainID}/verify`
- Auth: none declared. Required headers: `Authorization`
- TypeScript: <https://skmtc.dev/getaxonflow/apis/axonflow-agent-api/docs/api/v1/audit/chains/:chainID/verify/get.ts> (a function with typed inputs; its response is checked against the schema)

Re-verifies an entire decision chain: the `prev_hash` linkage across all
of its records (ordering / completeness) and every per-record Ed25519
signature (authorship). Read-only; never mutates the chain.

The chain is resolved by id **only within the authenticated caller's
organization** (RLS-scoped); the org is taken from the request
credentials, never from a path or query parameter. `chainID` is the
decision id (a UUID).

Inspect `authorship_proven` for the strong non-repudiation claim (every
record signed and all signatures + linkage verify). `valid` only means
no integrity violation was detected and can be `true` for a chain with
zero signed records, so do not gate non-repudiation on `valid` alone.

**Authority (#2914).** Authentication alone is not enough: this route
requires COMPLIANCE READ AUTHORITY over the organization. Present a
validated per-user token (`X-User-Token`, or `Authorization: Bearer`)
whose role is `admin`, `owner` or `policy_admin`, or call from an
internal service asserting `X-Axonflow-Admin-Authority: true`. A
Community-mode deployment is exempt: it has no authentication and
resolves every caller to one local operator. Anything else is `403`.

**Community SaaS (`try.getaxonflow.com`) refuses these routes, by
design.** The hosted evaluation stack runs with authentication enabled,
so the Community-mode exemption above does not apply to it, and its
evaluator accounts hold no entitled role. Verification there is a `403`.
Granting evaluators access would widen, on a public shared stack, the
exact exposure this change closes. Verify audit records on a deployment
you operate.

## Path parameters

- `chainID` string, uuid, required

## Headers

- `Authorization` string, required

## Response `200`

Verification result (the chain exists in your organization)

- ChainVerificationResult: Outcome of verifying an entire decision chain's prev_hash linkage and every per-record Ed25519 signature.
  - `chain_id` string, uuid, required
  - `org_id` string, required
  - `total_records` integer, required
  - `valid` boolean, required: True when no integrity violation was detected (linkage holds and every signature that exists verifies). Can be true for a chain with zero signed records. Use `authorship_proven` for the strong claim.
  - `authorship_proven` boolean, required: True only when every record is signed AND all signatures + linkage verify. Gate non-repudiation on this flag.
  - `linkage_valid` boolean, required
  - `signatures_valid` boolean, required
  - `signed_records` integer
  - `unsigned_records` integer
  - `first_broken_seq` integer: Sequence of the first detected break (omitted when valid).
  - `first_broken_record_id` string: Record id of the first detected break (omitted when valid).
  - `break_reason` string: Why the chain broke (omitted when valid).
  - `signing_key_id` string: Identifier of the tracker's current signing key.
  - `public_key` string: Base64 Ed25519 public key for offline re-verification.
  - `verified_at` string, date-time, required

## Other responses

- `400`: chainID is not a valid UUID
- `401`: Missing authenticated org context
- `403`: Authenticated, but without compliance read authority over this organization (#2914). See the authority note in the description.
- `404`: No decision chain found for this id in your organization
- `500`: Verification failed (internal error)

---

[API](https://skmtc.dev/getaxonflow/apis/axonflow-agent-api.md) - [All operations](https://skmtc.dev/getaxonflow/apis/axonflow-agent-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getaxonflow/apis/axonflow-agent-api/revisions/34d30fcb7fa1?raw)
