List the requests a sandbox made
GET
/v1/sandboxes/{sandbox_id}/requests
Lists the requests code inside this sandbox made to B3OS in the last 7 days (its model calls, scrapes,
searches and calls to other sandboxes), newest first, from the node's request log. These are the records
GET /v1/requests?sandbox_id= lists, for a caller that may read the sandbox: it needs only sandboxes:read,
not platform:read, and never returns another sandbox's records. It takes the same paging and the
product, operation_id, status, trace_id and since filters; any other query parameter is
400 invalid_request. Requests made to the sandbox's public ports are not listed. A sandbox stopped more
than 7 days ago is not found.Authentication
Bearer Token (b3os_sk_ API key or b3os_pat_ token)
Path Parameters
sandbox_id
string
required
path
The sandbox ID (
sbx_…).Pattern
^sbx_[0-9a-hjkmnp-tv-z]{26}$Example:
"sbx_01m5t68q1b590rj801nbzsqzkk"Query Parameters
limit
integer
optional
query
Page size, from 1 to 100.
Default
20Min 1Max 100cursor
string
optional
query
Opaque cursor from the previous page's
next_cursor. Omit it for the first page.Max length
512product
string
optional
query
Max length
32operation_id
string
optional
query
Max length
64status
string
optional
query
Only requests that succeeded (
2xx) or failed (4xx, 5xx).Values
"2xx" "4xx" "5xx"trace_id
string
optional
query
Only requests of this W3C trace (the trace id of their
traceparent).Pattern
^[0-9a-f]{32}$since
string (date-time)
optional
query
Responses
200
A page of the sandbox's requests.
application/jsonobject
string
REQUIRED
Values
listdata
object[]
REQUIRED
Array of:
id
string
REQUIRED
object
string
REQUIRED
Values
requestmethod
string
REQUIRED
path
string
REQUIRED
The path without the query string.
operation_id
string | null
REQUIRED
product
string | null
REQUIRED
status_code
integer
REQUIRED
error_code
string | null
REQUIRED
error_detail
string | null
Why a 4xx or 5xx answer failed, in the server's own words: the first 200 characters of its problem's
detail (or a compatibility surface's message). null for a success, or when the server recorded none;
absent from records written before it was recorded.org_id
string
REQUIRED
project_id
string
REQUIRED
key_id
string | null
REQUIRED
The API key behind the request (for sandbox calls, the key that created the sandbox).
node
string | null
REQUIRED
The node that served it;
null for a request the edge answered itself.connection
string
REQUIRED
How the request reached B3OS:
edge (through beta-api.b3os.org or the dashboard; forwarded to the node, or
answered by the edge itself), uds (the node's Unix socket), tcp (the node's loopback TCP listener) or
sandbox (from inside a sandbox, over vsock).Values
edge uds tcp sandboxsandbox_id
string | null
REQUIRED
The calling sandbox, for
sandbox connections; otherwise null.started_at
string (date-time)
REQUIRED
duration_ms
number
REQUIRED
From the first request byte read to the last response byte written, measured on the node (at the edge for
a request the edge answered itself); for streams, until the stream ended.
request_bytes
integer
REQUIRED
response_bytes
integer
REQUIRED
phases
object[]
REQUIRED
The node's phases (
source: node) and the edge's edge_* phases (source: edge), in order.
Array of:
name
string
REQUIRED
source
string
REQUIRED
Values
edge nodeduration_ms
number
REQUIRED
trace_id
string | null
REQUIRED
The W3C trace ID from
traceparent, when sent.user_agent
string | null
REQUIRED
source
string
REQUIRED
Who made the request:
api_key (an API key), cli_token (the CLI's device-login token), dashboard (a
signed-in dashboard session; its successful reads are not logged, its changes and errors are), sandbox (code
inside a sandbox, as its creating key), routine (a routine run, as the key that published its version),
local (a host-local caller on the node's Unix socket), public (no credential: a webhook or signed
callback to a public route, or a request refused before authentication), address (a visitor of an app
address, <label>.b3os.io) or preview (a visitor of a sandbox port preview). address and preview
records belong to the sandbox's project; their path is the app's path, without the query, cut at 1,024 bytes.Values
api_key cli_token dashboard sandbox routine local public address previewnext_cursor
string | null
REQUIRED
400
The request failed validation (
invalid_request, invalid_url).
401
Missing, malformed, expired or revoked credentials (
unauthorized).
403
Authenticated but not allowed (
forbidden, egress_denied).
404
No such sandbox in this project (
sandbox_not_found).
429
A rate, concurrency or quota limit applies (
rate_limited, concurrency_limited, quota_exceeded).
500
Something failed inside B3OS (
internal). Retry with backoff.
503
The node or the product is not available right now (
node_unavailable, product_unavailable, capacity_unavailable).
curl -X GET 'https://beta-api.b3os.org/v1/sandboxes/sbx_01m5t68q1b590rj801nbzsqzkk/requests' \ -H 'Authorization: Bearer YOUR_API_TOKEN'
const response = await fetch('https://beta-api.b3os.org/v1/sandboxes/sbx_01m5t68q1b590rj801nbzsqzkk/requests', { method: 'GET', headers: { "Authorization": "Bearer YOUR_API_TOKEN" }});const data = await response.json();console.log(data);
import requestsheaders = { 'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.get('https://beta-api.b3os.org/v1/sandboxes/sbx_01m5t68q1b590rj801nbzsqzkk/requests', headers=headers)print(response.json())
200
Response
{ "object": "list", "data": [ { "id": "req_01m5t6d8ksbzrfxhqhzge06mqn", "object": "request", "method": "POST", "path": "/v1/infer/chat/completions", "operation_id": "inferCreateChatCompletion", "product": "infer", "status_code": 200, "error_code": null, "org_id": "org_01m5t5hthd29mm5wpza5ndd6mm", "project_id": "prj_01m5t3pf8heewxt65ej3dm577y", "key_id": "key_01m5t5csy2wt4e3er052chyf1x", "node": "n1", "connection": "sandbox", "sandbox_id": "sbx_01m5t68q1b590rj801nbzsqzkk", "started_at": "2026-10-25T21:29:58.204Z", "duration_ms": 812.4, "request_bytes": 1830, "response_bytes": 2210, "phases": [], "trace_id": null, "user_agent": "openai-python/2.6.0", "source": "sandbox" } ], "next_cursor": null}
API Playground
Try this endpoint
GET
/v1/sandboxes/{sandbox_id}/requests