prxy.monster API-key BYOK is live. Start free

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:

VisibilityPublic responseAuthenticated owner response
private404full schema
public_demoredacted (sandbox subset)full schema
public_minimalredacted (handle + counters)full schema
public_redactedredacted by redaction_policyfull schema
public_fullfull schemafull 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:

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

StatusCodeCause
404receipt_not_foundReceipt does not exist OR is private and the caller cannot see it.
410receipt_redacted_onlyReceipt 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.

See also