The control plane exposes a REST API for managing runners and profiles. This page covers the cross-cutting behavior (authentication, versioning, error shapes, and pagination) that applies to every endpoint. For the schema of the fields inside a profile’sDocumentation Index
Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
Use this file to discover all available pages before exploring further.
spec, see the Profile reference. For task-oriented walkthroughs that use these endpoints, see Configure a sandbox profile and Deploy and manage a runner.
CoreWeave sandboxes are in public preview. For access, contact your CoreWeave account team, reach out to CoreWeave Support, or email support@coreweave.com.
Base URL and versioning
Sandbox.run(), sb.exec(), file operations). Control plane operations create and configure the infrastructure that produces sandboxes. Data plane operations interact with running sandboxes.
The API is versioned v1beta2. The version prefix signals an evolving preview surface: additive, backward-compatible changes ship within v1beta2. Breaking changes ship behind a new version prefix, and CoreWeave announces them before release.
Authentication
All requests use bearer-token authentication over TLS:SANDBOX_ADMIN: create, update, and delete runners and profiles. ImpliesSANDBOX_USER.SANDBOX_USER: read runners and profiles, and create sandboxes against them.
401 Unauthenticated with a google.rpc.Status-shaped body.
The CoreWeave Intelligent CLI (cwic) wraps these REST endpoints. CLI users authenticate once with cwic auth login, and cwic stores the token in the local cwic config. See Configure a sandbox profile for the CLI workflow.
Content type
All request and response bodies are JSON:curl or fetch-style clients work transparently. You don’t need a gRPC client.
Resource families
The control plane exposes two top-level resource families. The following table summarizes their base paths and supported operations:| Family | Base path | Operations |
|---|---|---|
| Managed runners | /v1beta2/sandbox/managed-runners | Create, Get, List, Update, Delete, apply-update |
| Profile templates | /v1beta2/sandbox/profile-templates | Create, Get, List, Update, Delete |
profile_bindings field mask. For the CoreWeave Intelligent CLI workflow and the binding-update semantics, see Manage profile bindings. Each update replaces the binding list as a whole, so the patch must include every binding you want to keep.
The resource family profile-templates retains the legacy template suffix in its URL path because that’s the on-wire resource name. Throughout the documentation, “profile” and “profile template” refer to the same thing.
For the conceptual model (the four-resource taxonomy and how the gateway brokers runtime requests), see Sandboxes architecture. This page documents the endpoint contract.
Pagination
List endpoints support cursor-based pagination:pageSize: page size. Default50, max100.pageToken: cursor returned asnextPageTokenon the previous page. An empty string means no more pages.
Paginate managed runners
cwic sandbox runner get and cwic sandbox profile get.
Field masks on updates
Update endpoints accept an optionalupdate_mask. When present, only the fields listed in the mask apply, and the API ignores everything else on the request object. When absent, every non-empty mutable field on the request object applies.
Paths use dotted notation and snake_case field names (standard google.protobuf.FieldMask convention). Commonly used mutable paths:
| Path | Applies to | Purpose |
|---|---|---|
managed_spec.release_channel | Managed runner | Switch the release channel (RELEASE_CHANNEL_STABLE or RELEASE_CHANNEL_RAPID). |
managed_spec.maintenance_policy | Managed runner | Adjust automatic-update maintenance windows. |
managed_spec.overrides | Managed runner | Tune the runner pod’s tolerations, node selectors, and runtime class. |
profile_bindings | Managed runner | Replace the entire list of profile bindings for the runner. |
spec | Profile template | Replace the whole profile spec. |
labels | Profile template | Replace the label map. |
Errors
Errors return an appropriate HTTP status and agoogle.rpc.Status body.
| HTTP | code | Meaning |
|---|---|---|
| 400 | 3 (INVALID_ARGUMENT) | Missing required field, malformed input, invalid spec. |
| 401 | 16 (UNAUTHENTICATED) | Missing or invalid API token. |
| 403 | 7 (PERMISSION_DENIED) | Token lacks required permission for the action. |
| 404 | 5 (NOT_FOUND) | Resource doesn’t exist. |
| 409 | 6 (ALREADY_EXISTS) | Duplicate displayName or runnerId, or you tried to create a second runner on the same cluster. |
| 503 | 14 (UNAVAILABLE) | Dependency (for example, cluster validation) temporarily unavailable. Safe to retry. |
| 500 | 13 (INTERNAL) | Unexpected server error. Retry with exponential backoff. |
Idempotency
The control plane API has the following idempotency guarantees:Delete*endpoints are idempotent. CallingDELETEon an already-deleted resource returns404without side effects.Create*endpoints aren’t idempotent. Supplying the samerunnerIdordisplayNametwice returns409 Conflict. To retry safely, useGETto check whether the resource already exists.Update*endpoints are safe to retry when you use a field mask and set only the fields you intend to change.
Heartbeats
Runner heartbeats track runner liveness. When the control plane hasn’t received a heartbeat within the liveness window, a runner’sconnectionStatus flips to DISCONNECTED. Expect up to 30 seconds of lag between the runner becoming unreachable and the control plane reflecting it. You can read both connectionStatus and the related installStatus field from a runner Get response.
See also
- Sandboxes architecture: the four-resource taxonomy and how the gateway brokers runtime requests.
- Understanding profiles: the conceptual walkthrough of profiles, bindings, and overrides.
- Configure a sandbox profile: CoreWeave Intelligent CLI workflow plus field-by-field walkthrough of the profile spec.
- Deploy and manage a runner: CoreWeave Intelligent CLI and REST walkthrough of the runner lifecycle.
- Profile reference: every field you can set on a profile.