Logs
Every call needs Authorization: Bearer <key>. 1 call:
- API request logs:
GET /v1/logs
API request logs
GET /v1/logs
Newest first, one row per MCP tool call: searching by request_id also returns the requests made inside that call. path matches route templates by prefix, for example /v1/messages. Only the method, route, status, latency, request id, IP and key are recorded: never bodies, headers or query strings.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | integer | No | From 1 to 100. Default 50. |
cursor | string | No | Opaque cursor from next_cursor. Up to 512 characters. |
from | string (date-time) | No | ISO 8601 timestamp. |
to | string (date-time) | No | ISO 8601 timestamp. |
status | integer | No | From 100 to 599. |
method | enum | No | One of: GET, POST, PATCH, PUT, DELETE. |
path | string | No | Up to 200 characters. |
api_key_id | string | No | API key id (key_...). |
request_id | string | No | Up to 100 characters. |
Headers
| Name | Type | Required | Description |
|---|---|---|---|
x-workspace-id | string | No | Workspace for session (JWT) callers. API keys carry their own workspace. |
Response 200
| Field | Type | Description |
|---|---|---|
data | object[] | |
data[].api_key_id | string or null | API key id (key_...). |
data[].id | string (uuid) | |
data[].ip | string or null | |
data[].latency_ms | integer | From 0 to 9007199254740991. |
data[].method | string | |
data[].occurred_at | string (date-time) | ISO 8601 timestamp. |
data[].parent_request_id | string or null | For a request made inside an MCP tool call, the request id of that tool call. |
data[].path | string | |
data[].request_id | string | |
data[].status | integer | From -9007199254740991 to 9007199254740991. |
next_cursor | string or null | Pass as cursor to get the next page; null at the end. |
Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.