GET /v1/receipts/:id
Fetch a receipt by id. The exact response depends on the receipt’s visibility and the caller’s identity.
See the Receipts concept for the full schema.
Request
GET /v1/receipts/<id>
Authorization: Bearer prxy_xxx # optional for non-private receipts
Accept: application/json
Response
200 — full or redacted receipt body, depending on visibility:
| Visibility | Public response | Authenticated owner response |
|---|---|---|
private | 404 | full schema |
public_demo | redacted (sandbox subset) | full schema |
public_minimal | redacted (handle + counters) | full schema |
public_redacted | redacted by redaction_policy | full schema |
public_full | full schema | full schema |
The signature stays valid in every case — the canonical body matches what was signed.
Public_demo redaction (sandbox)
Public_demo receipts retain only the fields a public verifier needs:
receipt_id,verifiedstatus,provider,model_id,status,http_status.input_tokens,output_tokens,cache_read_tokens,cache_write_tokens,cost_estimated_usd,cost_estimate_confidence.module_chain,cache_status,policy_decision,payload_capture,environment.signing_algorithm,signing_key_id,signature, four canonical hashes.
Hidden: tenant_id, project_id, agent_id, customer_id, api_key_id, user_id, iam_principal, aws_account_id, IP-like fields, provider trace ids, provider_request_id.
Errors
| Status | Code | Cause |
|---|---|---|
| 404 | receipt_not_found | Receipt does not exist OR is private and the caller cannot see it. |
| 410 | receipt_redacted_only | Receipt was deliberately redacted; only the public fields remain. |
GET /v1/receipts/:id/outcomes
GET /v1/receipts/<receipt_id>/outcomes
Authorization: Bearer prxy_xxx
Returns the append-only outcome rows for a receipt. See POST /v1/outcomes.
Headers on inference responses
Every successful BYOK or MPP call returns three headers pointing at the receipt:
Payment-Receipt: https://receipts.prxy.monster/r/<receipt_id>
Payment-Receipt-Digest: sha-256=:<base64-digest>: (RFC 9530)
Payment-Receipt-Kid: prxy-receipt-2026-q2
Streaming calls additionally get Payment-Receipt-Provisional: true at stream open and the finalized triple at stream close.