API reference · Trust Fabric
Check whether a recorded decision has been altered since it was written
GET /fabric/decisions/{decision_id}/integrity
Last reviewed 2026-11-06
GET /fabric/decisions/{decision_id}/integrity
Recompute the record's digest and compare it with the stored one.
Answers three distinct states rather than a boolean, because they mean different things to whoever is asking: intact=true the record is byte-for-byte what was written intact=false the row has been altered since it was recorded verifiable=false the record predates digests and cannot be checked
Tamper-EVIDENT, not tamper-proof: whoever can write the row can recompute the digest. Making that impossible requires a key this process does not hold or an append-only log outside this database, and neither exists yet.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
decision_id required | path | string |
Responses
| Status | Meaning | Body |
|---|---|---|
200 | Successful Response | JSON |
401 | The X-API-Key header is missing, or the key is unknown, revoked or replaced. | Error |
403 | The key is valid but may not do this (for example an agent key approving its own held action). | Error |
422 | Validation Error | HTTPValidationError |
429 | Rate limit or monthly quota reached. Wait for the number of seconds in Retry-After when it is sent. | Error |
Try it
The request goes from your browser straight to this site. Your key is not stored unless you tick the box, and then only in this tab's session storage.
Code
curl -sS -X GET 'https://cainstudio.online/fabric/decisions/<decision_id>/integrity' \
-H "X-API-Key: $CAIN_API_KEY"import json, os, urllib.request
req = urllib.request.Request('https://cainstudio.online/fabric/decisions/<decision_id>/integrity', method='GET',
headers={"X-API-Key": os.environ["CAIN_API_KEY"]})
with urllib.request.urlopen(req, timeout=60) as r:
print(r.status, json.load(r))const res = await fetch("https://cainstudio.online/fabric/decisions/<decision_id>/integrity", {
method: "GET",
headers: {
"X-API-Key": process.env.CAIN_API_KEY!,
},
});
console.log(res.status, await res.json());Schemas used
Error · HTTPValidationError · ValidationError
← Why this decision came out the way it did, and which run it belongs to · all 81 Trust Fabric calls · SCITT cryptographic Merkle inclusion receipt for a decision →
Try CAIN-42 on your own agents
Create a free account and every new account starts with a 30-day trial of the full platform. Or try the sandbox first, with no account at all.
Create a free account → · Try the sandbox · See the whole ecosystem