Request Logs
GET /logs?range=<range>&after=<ts>&after_id=<id>&errors=<bool>&limit=<n>Returns the full per-request log for your organization, ordered newest-first.
Query parameters
Section titled “Query parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
range | string | No | 15m, 1h, 6h, 24h, 7days, 30days. Default: 24h. |
after | RFC3339 | No | Pagination cursor — timestamp of the last row of the previous page. |
after_id | string | No | Pagination cursor — request_id of the last row, breaks timestamp ties. |
errors | boolean | No | If true, only non-2xx requests. |
limit | integer | No | Page size. Capped at 200. Default: 50. |
Response
Section titled “Response”{ "logs": [ { "request_id": "req-...", "timestamp": "2026-05-18T12:34:56Z", "model": "...", "status": 200, "input_tokens": 123, "output_tokens": 45, "cost_usd": 0.0042, "latency_ms": 420 } ], "next_cursor": { "after": "2026-05-18T12:34:55Z", "after_id": "req-..." }}When next_cursor is absent, you’ve reached the end of the available range.
Pagination
Section titled “Pagination”Pass both after and after_id from the previous page’s next_cursor. Using after alone is unsafe — multiple requests can share a millisecond timestamp.
API key or JWT + X-Org-ID. See Authentication.