What’s in a proof
Each response’sprysm.proof block looks like this:
How the hash is computed
Single-request proof (v1 — all non-agentic calls)
Theproof_hash is a SHA-256 digest over a canonical, sorted JSON payload binding the
request together:
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:
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.
Verify a trajectory locally (Node SDK)
Verify a trajectory locally (Python SDK)
Verifying a proof
Look up any proof by itsrequest_id. This endpoint is public (no auth) so a third
party — an auditor, a customer, a teammate — can independently confirm the record:
Response
404 proof_not_found.
Reading the proof from an SDK
Useextension() 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.