Ledger and proof verification
Every tenant has an append-only Merkle audit ledger. Decision events are hashed into leaves, sealed under signed checkpoints, and provable with standard inclusion and consistency proofs. Use these endpoints when your team needs to inspect recorded history or verify a specific record cryptographically.
All endpoints authenticate with X-Vault-API-Key and operate on your tenant's ledger only.
Which endpoint to use
| Field | Type | Required | Description |
|---|---|---|---|
| GET/ledger | History | No | List recent decision events for your tenant, including receipt payloads and signatures. |
| GET/ledger/checkpoints | History | No | List signed Merkle checkpoints: root hash, previous checkpoint hash, signer key, tree size, export status. |
| GET/ledger/verify | Verification | No | Server-side verification: recompute event hashes, receipt signatures, and the checkpoint chain. |
| GET/ledger/verification-summary | Verification | No | Summary form of the same verification. |
| GET/ledger/proof/bundle | Verification | No | The recommended per-record bundle: event, inclusion proof, checkpoint(s), and key material. |
| GET/ledger/proof/inclusion | Verification | No | RFC 6962-style inclusion proof for one record. |
| GET/ledger/proof/consistency | Verification | No | Append-only consistency proof between two checkpoints. |
| GET/ledger/encrypted | Advanced | No | The ledger list wrapped in a tenant-transport-key encrypted envelope. |
The recommended verification path
Start with a proof bundle rather than the individual primitives:
GET /ledger/proof/bundle?request_id=8ee2d480-4e23-49c5-9869-a0247e806e1c HTTP/1.1
Host: vault.example.com
X-Vault-API-Key: sk_prod_exampleThe bundle contains everything an independent verifier needs:
event— the full record, includingreceipt_payload,receipt_signature,receipt_key_id, andreceipt_algorithm.inclusion—event_hash,leaf_hash,leaf_index,tree_size, the siblingpath, and the sealingcheckpoint.consistency— optionally, a proof that a later checkpoint extends an earlier one.keys— the public JWKs (with key IDs, algorithms, and validity) to check the signatures.
Verification is arithmetic over the bundle plus the published keys — it does not require Definite to stay available. The same keys are served publicly at /.well-known/jwks.json.
Checkpoints and external witnessing
Checkpoints chain to each other by hash, are signed (EdDSA or ES256), can carry an RFC 3161 timestamp-authority countersignature, and are exported to object storage as an external witness, so a rolled-back or forked ledger is externally detectable. GET /ledger/checkpoints reports each checkpoint's export status.
Practical rules
- Keep the
request_idof records you may need to prove later; it is the lookup key for bundles. - Use
/ledger/verifyfor routine integrity checks and proof bundles for record-level evidence. - Treat ledger and proof APIs as audit surfaces, not as an application data path. Rule-level evidence for reporting checks lives in receipts, which carry their own chain and signatures.