Skip to main content
Every PRYSM completion ships with a PrysmProof: a cryptographic receipt that records exactly what happened — which model and provider ran, in which mode, over which input and output — as a SHA-256 hash you can store and later verify. When routing is automatic, “which model actually answered this?” stops being a matter of trust. PrysmProof makes each decision auditable: an immutable record for compliance, debugging, billing disputes, and reproducibility.

What’s in a proof

Each response’s prysm.proof block looks like this:

How the hash is computed

Single-request proof (v1 — all non-agentic calls)

The proof_hash is a SHA-256 digest over a canonical, sorted JSON payload binding the request together:
Because the prompt and response are folded in as fingerprints, any change to the input or output produces a different hash. The receipt is bound to the exact exchange, not just to “a call happened.”
The proof commits to fingerprints of your prompt and response, not the raw text — so the receipt is verifiable without PRYSM having to expose your content in the proof itself.

Trajectory proof (v2 — agentic multi-step runs)

For agentic runs (POST /v1/agent/run), PrysmProof v2 produces a Merkle-rooted trajectory proof that binds every step of the run into a single, tamper-evident receipt. Each step proof chains the previous step’s hash to the current:
The trajectory root binds all step proofs into a Bitcoin-style SHA-256 Merkle tree (odd nodes are duplicated to make pairs), then folds in the run metadata:
The trajectory_root field in the agent response is the canonical receipt for the entire run. Any step modification (changed model, altered output, inserted step) produces a different root — the tree makes tampering both detectable and localizable.
Use Agents.verify(trajectory) in the Node or Python SDK to verify a trajectory proof locally, with no network round-trip. The SDK recomputes the full Merkle chain and compares the root.
Verify a trajectory locally (Node SDK)
Verify a trajectory locally (Python SDK)

Verifying a proof

Look up any proof by its request_id. This endpoint is public (no auth) so a third party — an auditor, a customer, a teammate — can independently confirm the record:
Response
If no record matches the ID, the endpoint returns 404 proof_not_found.

Reading the proof from an SDK

Use extension() to pull the proof off a response:

Use cases

Compliance & audit

Keep an immutable record of which model handled regulated or sensitive work.

Billing disputes

Reconcile usage and cost against verifiable per-request receipts.

Debugging

Reproduce a routing decision exactly — model, mode, and reason are all recorded.

Trust for agents

Prove to downstream consumers what an autonomous agent actually ran.
Set log_proofs: true in your BRAIN.md to emit a PrysmProof for every request by default.