API reference · Receipts
Get a provenance report
GET/v1/provenance/{attestation_id}
A signed report of everything the feed had delivered to you for an event up to the moment you acted.
On this page
Auth. An API token: Authorization: Bearer lb_… (create one). Signed-in web sessions work too.
Limits. Counts against your plan's API requests (60, 600 or 3,000 a minute on Free, Builder and Standard).
Parameters
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
attestation_id | string | yes | One of your attestations (att_…). |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
format | string | no | json or jsonl. Default json. |
Request
curl "https://api.langbot.ai/v1/provenance/att_01K7Q" \
-H "Authorization: Bearer $LANGBOT_API_TOKEN"import os
import httpx
r = httpx.get(
"https://api.langbot.ai/v1/provenance/att_01K7Q",
headers={"Authorization": f"Bearer {os.environ['LANGBOT_API_TOKEN']}"},
)
print(r.json())const res = await fetch("https://api.langbot.ai/v1/provenance/att_01K7Q", {
headers: { Authorization: `Bearer ${process.env.LANGBOT_API_TOKEN}` },
});
console.log(await res.json());Response
200 OK
{
"v": 1,
"report": "provenance",
"id": "att_01K7Q…",
"event_id": "ev_nvda_q3_2026",
"attestation": { "id": "att_01K7Q…", "evt_id": "evt_01K7Q…A2", "t_acted": 1760050125000 },
"fact": { "event": { "id": "evt_01K7Q…A2", "hash": "5d0e05c3…" }, "chain": { "chain_seq": 2, "prev_hash": "b6e26232…" }, "hash_matches_attestation": true, "rights": "licensed" },
"known_before": [ { "evt_id": "evt_01K7Q…A2", "channel": "socket", "t_delivered": 1760050124100 } ],
"known_before_count": 1,
"checkpoint": { "chain_seq": 2, "signature": "cEf385IN…" },
"generated_at": 1760050130000,
"key_id": "56475aa75463474c",
"signature": "…"
}Signed over the whole body; check it with Verify events (reports) or offline. Evidence, not a judgement of the action.
Errors
| Status | code | When |
|---|---|---|
| 404 | not_found | No attestation with that id on your account. |
| 401 | auth_required | No token was sent. |
| 401 | token_invalid | The token was not recognised (mistyped, revoked or expired). |
| 422 | validation_error | A parameter failed validation; detail[].loc names it. |
| 429 | rate_limited | Over your request budget; wait Retry-After seconds. |
Every error body is {"detail": …, "code": "…"}; branch on code. All codes: Errors.