PEAC-Receipt: rcpt_01HZY3Z3V7C7
Accept: application/peac-receipt+json
Content-Type: application/peac-receipt+json
{
"jws": "<detached JWS compact serialization>",
"kid": "peac_pub_2025_08",
"agent_id": "agent_9f3b2",
"policy_version": "0.9.10"
}
{
"id": "rcpt_01HZY3Z3V7C7",
"status": "VALID",
"time": "2025-08-30T18:12:03Z",
"method": "peac.receipt",
"resource": "https://example.com/api/data",
"agent_id": "agent_9f3b2",
"kid": "peac_pub_2025_08",
"sig_alg": "Ed25519",
"mx_id": "MX-PEAC_9D328FC8"
}
A VALID status means the signature, policy and expiry checks pass. Use the id in subsequent requests as PEAC-Receipt. Non-breaking fields may be added in v1.0.
Receipt JWS (detached): typ: "application/peac-receipt+jws"
Receipt JSON: application/peac-receipt+json
[POST] /v1/receipts/:id/retry
[POST] /v1/receipts/:id/revoke
curl -X POST \
-H "PEAC-Receipt: rcpt_01HZY3Z3V7C7" \
-H "Accept: application/peac-receipt+json" \
-H "Content-Type: application/peac-receipt+json" \
-d '{
"jws": "<detached JWS>",
"kid": "peac_pub_2025_08",
"agent_id": "agent_9f3b2",
"policy_version": "0.9.10"
}' \
https://api.example.com/v1/receipts/rcpt_01HZY3Z3V7C7/confirm
400 INVALID_INPUT malformed payload or fields
401 UNAUTHORIZED missing or invalid auth on caller
403 POLICY_MISMATCH receipt policy does not match current peac.txt
409 REPLAY receipt previously used or nonce replay
410 REVOKED receipt was revoked by issuer
422 SIG_INVALID signature or key reference invalid
429 RATE_LIMITED too many requests
503 BUSY please retry later