Skip to main content
GET
List request details
This endpoint requires an Admin Key with the billing:read scope.
Reconcile row-by-row with X-Msh-Client-Request-Id: when calling the inference API, pass your own request ID in the header (X-Msh-Client-Request-Id: <your-request-id>); our billing details persist it as client_request_id. To reconcile, pull this feed and match your request IDs against client_request_id — whether a request was recorded, and exactly how (token volume, off-peak hit or not) — row by row, with no need to infer from “time + tokens”. For disconnect auditing use the dedicated interrupted_requests feed instead; for amounts, reconcile against daily/product bills (this feed reports tokens only, no amounts) — client_request_id links rows across both APIs exactly. Example: “Why was our gateway request abc123 charged?” → look up its tokens via client_request_id=abc123 in request_details, then verify the day’s amount in daily_bills.

Authorizations

Authorization
string
header
required

Send the Admin API secret as a Bearer token in the Authorization header (Bearer sk-admin-***). Create Admin Keys under Console → Organization → Admin API Keys.

Query Parameters

start
integer<int64>
required

Start time in milliseconds, inclusive, e.g. 1790784000000 (2026-10-01 00:00 CST).

Required range: x >= 0
end
integer<int64>
required

End time in milliseconds, exclusive, e.g. 1792598400000 (2026-10-22 00:00 CST).

Required range: x >= 0
project_id
string[]

Project IDs. Every project must belong to the authenticated organization.

key
string[]

Business API key IDs. Every key must belong to the authenticated organization.

desc
boolean

Whether to sort rows by server write time, descending. The sort key is the server write time, not the time field, so rows within the same second are not guaranteed to be monotonic by request time. Defaults to true (descending).

limit
integer
default:100

Page size. Defaults to 100 for interactive queries; raise it (up to 10000) for bulk pulls — per-page latency may grow for large pages (not an SLA guarantee). 1000 rows.

Required range: 1 <= x <= 10000
cursor
string

Cursor from the previous response next field. The cursor carries only the page position; all query parameters must be restated on every page. Keep them unchanged while paginating (except limit) — the server does not check them for consistency.

Response

Request details.

data
object[]
required

One row per request.

has_more
boolean
required

Whether there is a next page.

next
string | null
required

Cursor for the next page. Pass it back verbatim as the cursor query parameter.