A receipt's signed copy
/v1/signed-copyThe signed copy of one receipt of the company, as a PDF: the version as signed, the signature in place, and a signing record page with the document fingerprint and the receipt ID. Kapi draws it on each call and keeps no copy. Requires acknowledgements:read and people:read, because it names the person who signed. A receipt of another company, or of a person Kapi erased, answers not_found.
Authorization
bearerAuth acknowledgements:read, people:readA company API key, not an OAuth access token: kw_live_ in production, kw_test_ elsewhere. Send it only in the Authorization header. A key sent in a URL is revoked.
In: header
Scope: acknowledgements:read, people:read
Query Parameters
The receipt's receipt_id.
uuidResponse Body
application/pdf
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
# Supply the key from your server's secret manager. Do not log it.# curl reads the header from stdin, keeping the key out of its arguments.printf 'header = "Authorization: Bearer %s"\n' "$KAPI_WORKS_API_KEY" | curl --config - --silent --show-error --fail-with-body \ 'https://example.com/v1/signed-copy?receipt=497f6eca-6276-4993-bfeb-53cbbbba6f08'"string"Policy receipts
The company's policy receipts in the order Kapi wrote them, each with the fields its hash covers, so anyone can check `receipt_sha256` and the chain without Kapi. Employees, partners and customers; a signed act carries its `signature_sha256`. Requires `acknowledgements:read`. Names and account emails also need `people:read`; without it they are left out.
Check whether anything changed
Returns the company's latest snapshot in one call, with any scope. If `sequence` and `capture_sequence` match your last complete pull, no recorded facts have changed since. Outcomes that depend on the clock, such as `not_due_yet` becoming `overdue`, can still change, so recompute them from `due_at` or pull again at least daily.