Sandbox API

Gateway

Catalog, health, usage

Catalog, health, usage

Every request needs a credential — see Authentication.

MethodPathSummary
GET/sandbox/healthzGateway aggregated health
GET/sandbox/v1/catalogExecution catalog (languages, agents, profiles, desktop_apps)
GET/sandbox/v1/providersLegacy Sandbox provider inventory (informational)
GET/sandbox/v1/quotaEffective concurrency quota and current project usage
GET/sandbox/v1/usage/summaryProject-scoped latency percentiles (p50/p95/p99)

Common headers

Accepted on every endpoint on this page.

NameInTypeRequiredDescription
x-correlation-idheaderstringnoEnd-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.

Endpoints

Gateway aggregated health

GET /sandbox/healthz

Responses

StatusDescriptionBody
200Successful Responseobject

Execution catalog (languages, agents, profiles, desktop_apps)

GET /sandbox/v1/catalog

Parameters

NameInTypeRequiredDescription
kindquerystring | nullno

Responses

StatusDescriptionBody
200Execution catalog entriesany
422Validation ErrorHTTPValidationError

Example response:

{
  "items": [
    {
      "id": "oracle",
      "kind": "agent",
      "tier": 1
    },
    {
      "id": "opencode",
      "kind": "agent",
      "tier": 1
    }
  ],
  "count": 2
}

Legacy Sandbox provider inventory (informational)

GET /sandbox/v1/providers

Legacy inventory of providers stored in the Sandbox credential plane.

When SANDBOX_LLM_EGRESS=gateway (credential plane off), this list is often empty or the route returns 503 — LLM BYOK then lives on LLM Gateway. When KeyHive is enabled (SANDBOX_CREDENTIAL_BACKEND=keyhive), inventory reflects leased providers for the caller's tenant:project.

Tenancy comes from :func:resolve_scope (no shared fallback).

Responses

StatusDescriptionBody
200Successful Responseany

Effective concurrency quota and current project usage

GET /sandbox/v1/quota

Responses

StatusDescriptionBody
200Successful Responseany

Project-scoped latency percentiles (p50/p95/p99)

GET /sandbox/v1/usage/summary

Parameters

NameInTypeRequiredDescription
X-Sandbox-Project-Idheaderstring | nullnoProject 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-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

Schemas

The object shapes referenced above.

HTTPValidationError

FieldTypeRequiredDescription
detailValidationError[]no

ValidationError

FieldTypeRequiredDescription
locstring | integer[]yes
msgstringyes
typestringyes
inputanyno
ctxobjectno

Machine-readable spec: OpenAPI YAML.