Sandboxes API endpoints
Every request needs a credential — see Authentication.
| Method | Path | Summary |
|---|
GET | /sandbox/sandboxes/v1 | List Sandboxes |
POST | /sandbox/sandboxes/v1 | Create Sandbox |
POST | /sandbox/sandboxes/v1/_reap | Reap Sandboxes |
DELETE | /sandbox/sandboxes/v1/{sandbox_id} | Destroy Sandbox |
GET | /sandbox/sandboxes/v1/{sandbox_id} | Get Sandbox |
GET | /sandbox/sandboxes/v1/{sandbox_id}/artifacts | List Sandbox Artifacts |
GET | /sandbox/sandboxes/v1/{sandbox_id}/artifacts/{capture_id} | Get Sandbox Artifact |
POST | /sandbox/sandboxes/v1/{sandbox_id}/capture | Capture Sandbox |
GET | /sandbox/sandboxes/v1/{sandbox_id}/events | SSE sandbox lifecycle events |
POST | /sandbox/sandboxes/v1/{sandbox_id}/exec | Exec Sandbox |
DELETE | /sandbox/sandboxes/v1/{sandbox_id}/files | Delete File |
GET | /sandbox/sandboxes/v1/{sandbox_id}/files | Get File |
PUT | /sandbox/sandboxes/v1/{sandbox_id}/files | Put File |
POST | /sandbox/sandboxes/v1/{sandbox_id}/start | Start Sandbox |
POST | /sandbox/sandboxes/v1/{sandbox_id}/stop | Stop Sandbox |
POST | /sandbox/sandboxes/v1/{sandbox_id}/verify | Verify Sandbox |
GET | /sandbox/sandboxes/v1/{sandbox_id}/viewer | Mint viewer URL or proxy Selkies UI |
POST | /sandbox/sandboxes/v1/{sandbox_id}/viewer/start | Start Viewer |
POST | /sandbox/sandboxes/v1/{sandbox_id}/viewer/stop | Stop Viewer |
Accepted on every endpoint on this page.
| Name | In | Type | Required | Description |
|---|
x-correlation-id | header | string | no | End-to-end correlation id for this eval run. When set, the gateway and downstream services honor it verbatim in logs, Cloud Trace span attributes, async job payloads, and Langfuse trace.id. When omitted, the gateway generates a ULID and echoes it on the response. |
X-Sandbox-Project-Id | header | string | null | no | Project to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted. |
X-Sandbox-Tenant-Id | header | string | null | no | Tenant for this request. Must match the credential's tenant when the credential carries one. |
GET /sandbox/sandboxes/v1
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
POST /sandbox/sandboxes/v1
application/json, required — CreateSandboxRequest
| Field | Type | Required | Description |
|---|
profile | string | no | Default: "sandboxes-default". |
source | object | null | no | |
autostop_sec | number | null | no | |
ttl_sec | number | null | no | |
linked_job_id | string | null | no | |
| Status | Description | Body |
|---|
201 | Successful Response | any |
422 | Validation Error | HTTPValidationError |
POST /sandbox/sandboxes/v1/_reap
Operator hook: stop/destroy idle sandboxes for this scope.
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
DELETE /sandbox/sandboxes/v1/{sandbox_id}
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
| Status | Description | Body |
|---|
204 | Successful Response | — |
422 | Validation Error | HTTPValidationError |
GET /sandbox/sandboxes/v1/{sandbox_id}
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
GET /sandbox/sandboxes/v1/{sandbox_id}/artifacts
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
kind | query | string | null | no | |
limit | query | integer | no | |
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
GET /sandbox/sandboxes/v1/{sandbox_id}/artifacts/{capture_id}
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
capture_id | path | string | yes | |
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
POST /sandbox/sandboxes/v1/{sandbox_id}/capture
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
GET /sandbox/sandboxes/v1/{sandbox_id}/events
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
Last-Event-ID | header | string | null | no | |
| Status | Description | Body |
|---|
200 | Successful Response | any |
422 | Validation Error | HTTPValidationError |
POST /sandbox/sandboxes/v1/{sandbox_id}/exec
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
application/json, required — ExecRequest
| Field | Type | Required | Description |
|---|
command | string[] | yes | |
cwd | string | null | no | |
timeout_sec | number | null | no | |
env | object | null | no | |
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
DELETE /sandbox/sandboxes/v1/{sandbox_id}/files
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
path | query | string | yes | |
| Status | Description | Body |
|---|
204 | Successful Response | — |
422 | Validation Error | HTTPValidationError |
GET /sandbox/sandboxes/v1/{sandbox_id}/files
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
path | query | string | yes | |
| Status | Description | Body |
|---|
200 | Successful Response | any |
422 | Validation Error | HTTPValidationError |
PUT /sandbox/sandboxes/v1/{sandbox_id}/files
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
path | query | string | yes | |
application/json, required
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
POST /sandbox/sandboxes/v1/{sandbox_id}/start
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
POST /sandbox/sandboxes/v1/{sandbox_id}/stop
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
POST /sandbox/sandboxes/v1/{sandbox_id}/verify
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
application/json, required — VerifyRequest
| Field | Type | Required | Description |
|---|
require_verifier_evidence | boolean | no | Default: false. |
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
GET /sandbox/sandboxes/v1/{sandbox_id}/viewer
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
| Status | Description | Body |
|---|
200 | Successful Response | any |
422 | Validation Error | HTTPValidationError |
POST /sandbox/sandboxes/v1/{sandbox_id}/viewer/start
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
POST /sandbox/sandboxes/v1/{sandbox_id}/viewer/stop
| Name | In | Type | Required | Description |
|---|
sandbox_id | path | string | yes | |
| Status | Description | Body |
|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
The object shapes referenced above.
| Field | Type | Required | Description |
|---|
profile | string | no | Default: "sandboxes-default". |
source | object | null | no | |
autostop_sec | number | null | no | |
ttl_sec | number | null | no | |
linked_job_id | string | null | no | |
| Field | Type | Required | Description |
|---|
command | string[] | yes | |
cwd | string | null | no | |
timeout_sec | number | null | no | |
env | object | null | no | |
| Field | Type | Required | Description |
|---|
detail | ValidationError[] | no | |
| Field | Type | Required | Description |
|---|
loc | string | integer[] | yes | |
msg | string | yes | |
type | string | yes | |
input | any | no | |
ctx | object | no | |
| Field | Type | Required | Description |
|---|
require_verifier_evidence | boolean | no | Default: false. |
Machine-readable spec: OpenAPI YAML.