Skip to main content
GET
Every mutating call (POST/PUT/PATCH/DELETE) to the API is answered with an X-Request-Id response header — a time-sortable UUIDv7 — and its verbatim request body is archived along with a searchable audit row. These endpoints are the read side: prove exactly what was sent on any past request. Reads (GET) are not archived — they carry no payload.

List / search requests

GET /api/requests
string
Path prefix filter, e.g. /admin/api/v1/consignments or /v1/restrict.
string
Surface: api (external /v1), admin-api (this partner surface), account-api, cds.
string
POST | PUT | PATCH | DELETE.
string
completed | failed (4xx/5xx).
string
Search by an identifier extracted from payloads at write time — tracking number (S10), shipment ref, declaration ref, external code.
string
Keyset cursor: return requests older than this request id.
integer
default:"50"
1–100.
Returns { requests: [...], has_more }, newest first. Each row: id (the X-Request-Id UUIDv7), route, method, source, actor, customer_id, http_status, outcome, duration_ms, has_body, error_summary, created_at.

One request

GET /api/requests/{id} — the audit row plus its extracted refs ({ request: {...}, refs: [{ref_type, ref_value}] }).

Download the original payload

GET /api/requests/{id}/body — streams the archived request body byte-for-byte as it was received (404 when the request carried no body). This is the dispute-resolution artifact: what the caller actually sent, regardless of what they claim.