Creates a sandbox from a template (defaults to superserve/base when
from_template is omitted), or from a saved snapshot named by
from_snapshot. When the request returns successfully, the
sandbox is ready to use — you can run commands against it
immediately.
New sandboxes use strict preview routing: only ports explicitly
published through /sandboxes/{sandbox_id}/preview-ports are reachable.
preview_access defaults newly published ports to public or private;
each publication may override that default independently.
Boot the sandbox from a template. Accepts either a template UUID or a name (e.g. superserve/base, superserve/python-3.11, superserve/node-22, or a team-owned name like my-python-env). The template must be owned by the caller's team OR be a curated system template (curated templates use the superserve/ name prefix). The template's vCPU, memory, and disk values are inherited by the sandbox — they cannot be overridden per-sandbox because the snapshot dictates VM shape. When omitted, defaults to superserve/base.
Create the sandbox from a saved snapshot instead of a template. It starts with the snapshot's memory and disk, so what was running when the snapshot was taken carries on, on the host holding the snapshot. The snapshot must be ready and the caller's. vCPU, memory and disk are the snapshot's; timeout_seconds and network are too unless the request sets them, and the network rules are in place before anything in the sandbox runs. Commands run in the new sandbox see the environment the source had, with env_vars and the secrets set on top. Secrets the source was bound to are bound again with fresh proxy tokens, except env keys the request sets itself. Processes that were running when the snapshot was taken keep the environment they started with, including the source's secret proxy credentials, which do not work in the new sandbox: restart them to use its secrets. Mutually exclusive with from_template.
Optional auto-pause timeout in seconds. The sandbox is paused once its current active session has run this long; each resume starts a fresh window. When unset, the sandbox stays active until explicitly paused. Also settable later via PATCH /sandboxes/{sandbox_id}. Maximum 604800 (7 days).
Optional idle timeout in seconds. The sandbox is paused after this many seconds with no activity: no command, file transfer or listing, desktop action or saved-snapshot capture, no open connection such as a terminal or command stream, and no preview traffic. A command still running counts as activity; changes to the sandbox's settings do not. The sandbox is paused shortly after the timeout. When unset (the default), the sandbox is never paused for being idle. Independent of timeout_seconds. Also settable later via PATCH /sandboxes/{sandbox_id}. Minimum 60, maximum 604800 (7 days).
Optional garbage-collection window for paused sandboxes, in seconds. Once the sandbox has been continuously paused for this long it is deleted automatically. The window arms each time the sandbox pauses and is cancelled by resume, so a sandbox in use is never eligible. 0 deletes the sandbox as soon as it pauses. When unset, paused sandboxes are kept until explicitly deleted. Also settable later via PATCH /sandboxes/{sandbox_id}. Maximum 2592000 (30 days).
Flat string-to-string tags attached to the sandbox at creation.
Useful for grouping, owner labels, environment, run IDs, etc.
Constraints
Strings only. Values must be strings. There is no type
coercion: metadata.count=42 filters for the string "42".
At most 64 keys.
Each key may be at most 256 bytes.
Each value may be at most 2048 bytes (2 KB).
The serialized object may be at most 16384 bytes (16 KB)
in total.
Keys starting with superserve. or _superserve (case-
insensitive) are reserved for platform use and rejected.
Metadata can be updated after creation via PATCH /sandboxes/:id.
Filter sandboxes by metadata via the metadata.{key} query
parameter on GET /sandboxes.
Environment variables injected into every process inside the
sandbox (terminal sessions, exec calls). Merged on top of any
defaults set by the template's env build steps — caller keys
win on conflict. Survive pause/resume.
Bind team-stored credentials to environment variables inside the
sandbox. Keys are env-var names; values are secret names from
POST /secrets. The agent never sees the real value: it sees a
proxy token in env, and the in-host enforcement daemon swaps the
token for the real credential at egress.
Default access for newly published preview ports. New sandboxes
default to public; private ports stay closed with 401 until
preview-token authentication is introduced. Both modes are strict:
only explicitly published ports are reachable.
legacy_public is reserved for sandboxes created before explicit
publication and cannot be selected through the API.
Available options:
public,
private
Response
Sandbox created
Single-sandbox shape — SandboxListItem plus access_token and bound secrets.
Public sandbox ID: a bare UUID, or the region-tagged form sb-<region>-<uuid> (e.g. sb-use-1b4e28ba-…). Treat as an opaque string; the tagged form routes the request to the sandbox's home region. Endpoints accept both forms interchangeably.
Current state of the sandbox. active means running; paused means paused and awaiting resume. pausing, resuming and migrating are transient states observed while the platform pauses, restores, or relocates a sandbox (e.g. after a 202 from /pause, or auto-resume on /exec); clients should poll or retry shortly. failed means the sandbox can no longer be resumed.
When the sandbox will be deleted. Present only while the sandbox is paused with auto_delete_seconds configured. The deadline is armed when the sandbox pauses (or when the setting is applied to an already-paused sandbox) and cleared on resume.
Default access for newly published ports. public and private
are strict modes; existing published rows keep their own access.
legacy_public may be returned for an older sandbox and preserves
all-port behavior until updated to a strict mode.
Optional signed logical-owner routing hint. Send on data-plane
requests as X-Superserve-Routing-Hint, or as a route.
WebSocket subprotocol alongside the unchanged access token.
Refresh after resume/activate; absent or invalid hints retain
ownership lookup fallback. This does not authorize access.
Credentials bound to this sandbox. Each entry maps an env-var name visible to the agent to the secret name it resolves to. revoked=true when the underlying secret has been soft-deleted (the env var still holds the now-useless proxy token).
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Superserve","colors":{"primary":"#B2FAB4","light":"#B2FAB4","dark":"#B2FAB4"},"logo":"https://mintcdn.com/superserve-ai-superserve-33/G055TX3BjwXpQedU/logo.svg?fit=max\u0026auto=format\u0026n=G055TX3BjwXpQedU\u0026q=85\u0026s=69233fb550a17b81d7d7fa083ca7f3de","favicon":"https://mintcdn.com/superserve-ai-superserve-33/G055TX3BjwXpQedU/favicon.svg?fit=max\u0026auto=format\u0026n=G055TX3BjwXpQedU\u0026q=85\u0026s=5c49ee9ed883d587b192cd419a4747d8","appearance":{"default":"dark","strict":true},"background":{"decoration":"gradient","color":{"dark":"#141414"}},"navbar":{"links":[{"href":"https://github.com/superserve-ai/superserve","label":"GitHub","type":"github"}],"primary":{"type":"button","label":"Get Started","href":"https://console.superserve.ai/auth/signup/?utm_source=docs\u0026utm_medium=navbar"}},"footer":{"socials":{"x":"https://x.com/superserve_ai","github":"https://github.com/superserve-ai","linkedin":"https://www.linkedin.com/company/super-serve-ai"},"links":[{"header":"Resources","items":[{"label":"Status","href":"https://status.superserve.ai"}]}]},"fonts":{"heading":{"family":"Instrument Sans"},"body":{"family":"Instrument Sans"}},"styling":{"codeblocks":{"theme":{"light":"github-light","dark":"vitesse-dark"}},"latex":false},"integrations":{"posthog":{"apiKey":"phc_gjpDKKKQJAnkxkqLrPGrAhoariKsaHNuTpI5rVhkYre","apiHost":"https://p.superserve.ai"}},"contextual":{"options":["copy","view","claude","mcp","add-mcp","cursor","vscode"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"superserve-ai-superserve-33","hasAudioNarration":false,"actualSubdomain":"superserve-ai-superserve-33","customDomains":["docs.superserve.ai"],"gitSource":{"type":"github","owner":"superserve-ai","repo":"superserve","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeee774608552e5c950997e","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"REST API","count":58},{"language":"default","tag":"Documentation","count":31},{"language":"default","tag":"Integrations","count":17},{"language":"default","tag":"Sandboxes","count":14},{"language":"default","tag":"Templates","count":13},{"language":"default","tag":"Team Management","count":13},{"language":"default","tag":"Sandbox","count":10},{"language":"default","tag":"Secrets","count":10},{"language":"default","tag":"SDK Reference","count":6},{"language":"default","tag":"Reference","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api-reference/sandboxes/create-a-new-sandbox","slug":"/api-reference/sandboxes/create-a-new-sandbox","pageMetadata":{"title":"Create a new sandbox","description":"Creates a sandbox from a template (defaults to `superserve/base` when\n`from_template` is omitted), or from a saved snapshot named by\n`from_snapshot`. When the request returns successfully, the\nsandbox is ready to use — you can run commands against it\nimmediately.\n\nNew sandboxes use strict preview routing: only ports explicitly\npublished through `/sandboxes/{sandbox_id}/preview-ports` are reachable.\n`preview_access` defaults newly published ports to `public` or `private`;\neach publication may override that default independently.\n","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /sandboxes","href":"/api-reference/sandboxes/create-a-new-sandbox","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Creates a sandbox from a template (defaults to \", _jsx(_components.code, {\n children: \"superserve/base\"\n }), \" when\\n\", _jsx(_components.code, {\n children: \"from_template\"\n }), \" is omitted), or from a saved snapshot named by\\n\", _jsx(_components.code, {\n children: \"from_snapshot\"\n }), \". When the request returns successfully, the\\nsandbox is ready to use — you can run commands against it\\nimmediately.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"New sandboxes use strict preview routing: only ports explicitly\\npublished through \", _jsx(_components.code, {\n children: \"/sandboxes/{sandbox_id}/preview-ports\"\n }), \" are reachable.\\n\", _jsx(_components.code, {\n children: \"preview_access\"\n }), \" defaults newly published ports to \", _jsx(_components.code, {\n children: \"public\"\n }), \" or \", _jsx(_components.code, {\n children: \"private\"\n }), \";\\neach publication may override that default independently.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light","dark":"vitesse-dark"}},"config":{},"pageMetadata":{"title":"Create a new sandbox","description":"Creates a sandbox from a template (defaults to `superserve/base` when\n`from_template` is omitted), or from a saved snapshot named by\n`from_snapshot`. When the request returns successfully, the\nsandbox is ready to use — you can run commands against it\nimmediately.\n\nNew sandboxes use strict preview routing: only ports explicitly\npublished through `/sandboxes/{sandbox_id}/preview-ports` are reachable.\n`preview_access` defaults newly published ports to `public` or `private`;\neach publication may override that default independently.\n","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /sandboxes","href":"/api-reference/sandboxes/create-a-new-sandbox","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/superserve-ai-superserve-33/3827cde3b4df02bf/letter.min.js"],"openApiReferenceData":{"operation":{"operationId":"createSandbox","tags":["Sandboxes"],"summary":"Create a new sandbox","description":"Creates a sandbox from a template (defaults to `superserve/base` when\n`from_template` is omitted), or from a saved snapshot named by\n`from_snapshot`. When the request returns successfully, the\nsandbox is ready to use — you can run commands against it\nimmediately.\n\nNew sandboxes use strict preview routing: only ports explicitly\npublished through `/sandboxes/{sandbox_id}/preview-ports` are reachable.\n`preview_access` defaults newly published ports to `public` or `private`;\neach publication may override that default independently.\n","security":["6e4893b6-7af9-4446-8a86-550b0b36832d"],"requestBody":"b789b120-e39e-4d8f-b918-b23e3eee52a5","responses":{"201":"31784370-7dcf-4569-a0f6-0c7a04f24fd9","400":"3350cf8f-07a3-43a3-809d-a3b41000b8ea","401":"7c31acda-2727-4892-94e2-4dc702d49666","402":"e6230e2a-5281-4cad-be06-3c1d25513c2f","404":"b35ed2c3-12b2-4c10-a6b1-5f86f0e5dfee","409":"09758e74-858f-400a-932a-2f99d7a355d2","429":"04829d10-5aad-4fe7-aaaf-053785c05931","500":"b3b51abf-206b-41b7-9138-a99c06ba4e49","503":"4ef839a2-5112-47f3-b530-d3f3a7d62ddf"},"method":"post","type":"path","servers":["eb91a4a7-8bbd-4253-a460-75e66def9932"],"path":"/sandboxes","baseUrlOptions":["https://api.superserve.ai"],"title":"Create a new sandbox","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"Human-readable name for the sandbox.","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"from_template":{"type":"string","description":"Boot the sandbox from a template. Accepts either a template UUID or a name (e.g. `superserve/base`, `superserve/python-3.11`, `superserve/node-22`, or a team-owned name like `my-python-env`). The template must be owned by the caller's team OR be a curated system template (curated templates use the `superserve/` name prefix). The template's vCPU, memory, and disk values are inherited by the sandbox — they cannot be overridden per-sandbox because the snapshot dictates VM shape. When omitted, defaults to `superserve/base`.\n","uniqueKey":"from_template","typeLabel":"string"},"from_snapshot":{"type":"string","format":"uuid","description":"Create the sandbox from a saved snapshot instead of a template. It starts with the snapshot's memory and disk, so what was running when the snapshot was taken carries on, on the host holding the snapshot. The snapshot must be `ready` and the caller's. vCPU, memory and disk are the snapshot's; `timeout_seconds` and `network` are too unless the request sets them, and the network rules are in place before anything in the sandbox runs. Commands run in the new sandbox see the environment the source had, with `env_vars` and the secrets set on top. Secrets the source was bound to are bound again with fresh proxy tokens, except env keys the request sets itself. Processes that were running when the snapshot was taken keep the environment they started with, including the source's secret proxy credentials, which do not work in the new sandbox: restart them to use its secrets. Mutually exclusive with `from_template`.\n","uniqueKey":"from_snapshot","typeLabel":"string\u003cuuid>"},"timeout_seconds":{"type":"integer","format":"int32","minimum":1,"maximum":604800,"description":"Optional auto-pause timeout in seconds. The sandbox is paused once its current active session has run this long; each resume starts a fresh window. When unset, the sandbox stays active until explicitly paused. Also settable later via `PATCH /sandboxes/{sandbox_id}`. Maximum 604800 (7 days).\n","uniqueKey":"timeout_seconds","typeLabel":"integer\u003cint32>"},"idle_timeout_seconds":{"type":"integer","format":"int32","minimum":60,"maximum":604800,"description":"Optional idle timeout in seconds. The sandbox is paused after this many seconds with no activity: no command, file transfer or listing, desktop action or saved-snapshot capture, no open connection such as a terminal or command stream, and no preview traffic. A command still running counts as activity; changes to the sandbox's settings do not. The sandbox is paused shortly after the timeout. When unset (the default), the sandbox is never paused for being idle. Independent of `timeout_seconds`. Also settable later via `PATCH /sandboxes/{sandbox_id}`. Minimum 60, maximum 604800 (7 days).\n","uniqueKey":"idle_timeout_seconds","typeLabel":"integer\u003cint32>"},"auto_delete_seconds":{"type":"integer","format":"int32","minimum":0,"maximum":2592000,"description":"Optional garbage-collection window for paused sandboxes, in seconds. Once the sandbox has been continuously paused for this long it is deleted automatically. The window arms each time the sandbox pauses and is cancelled by resume, so a sandbox in use is never eligible. `0` deletes the sandbox as soon as it pauses. When unset, paused sandboxes are kept until explicitly deleted. Also settable later via `PATCH /sandboxes/{sandbox_id}`. Maximum 2592000 (30 days).\n","uniqueKey":"auto_delete_seconds","typeLabel":"integer\u003cint32>"},"metadata":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"metadata.additionalProperties","typeLabel":"string"},"description":"Flat string-to-string tags attached to the sandbox at creation.\nUseful for grouping, owner labels, environment, run IDs, etc.\n\n## Constraints\n - **Strings only.** Values must be strings. There is no type\n coercion: `metadata.count=42` filters for the *string* \"42\".\n - **At most 64 keys.**\n - Each key may be at most **256 bytes**.\n - Each value may be at most **2048 bytes** (2 KB).\n - The serialized object may be at most **16384 bytes** (16 KB)\n in total.\n - Keys starting with `superserve.` or `_superserve` (case-\n insensitive) are reserved for platform use and rejected.\n\nMetadata can be updated after creation via `PATCH /sandboxes/:id`.\nFilter sandboxes by metadata via the `metadata.{key}` query\nparameter on `GET /sandboxes`.\n","example":{"env":"prod","owner":"agent-7"},"uniqueKey":"metadata","typeLabel":"object"},"env_vars":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"env_vars.additionalProperties","typeLabel":"string"},"description":"Environment variables injected into every process inside the\nsandbox (terminal sessions, exec calls). Merged on top of any\ndefaults set by the template's `env` build steps — caller keys\nwin on conflict. Survive pause/resume.\n","example":{"OPENAI_API_KEY":"sk-...","DEBUG":"1","run_id":"7f3c-21"},"uniqueKey":"env_vars","typeLabel":"object"},"network":{"type":"object","description":"Egress network rules for a sandbox. `allow_out` accepts CIDRs (e.g. `8.8.8.8/32`) and domain names (e.g. `api.openai.com`, `*.github.com`). `deny_out` accepts CIDRs only. Private ranges (10/8, 172.16/12, 192.168/16, 127/8, 169.254/16) are always blocked regardless of rules.\n","properties":{"allow_out":{"type":"array","items":{"type":"string","uniqueKey":"network.allow_out.items.[INDEX]","typeLabel":"string"},"description":"CIDRs or domains to allow.","example":["api.openai.com","*.github.com","8.8.8.8/32"],"uniqueKey":"network.allow_out","typeLabel":"string[]"},"deny_out":{"type":"array","items":{"type":"string","uniqueKey":"network.deny_out.items.[INDEX]","typeLabel":"string"},"description":"CIDRs to deny. Use `0.0.0.0/0` to block all traffic not in `allow_out`.","example":["0.0.0.0/0"],"uniqueKey":"network.deny_out","typeLabel":"string[]"}},"uniqueKey":"network","typeLabel":"object"},"secrets":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"secrets.additionalProperties","typeLabel":"string"},"description":"Bind team-stored credentials to environment variables inside the\nsandbox. Keys are env-var names; values are secret names from\n`POST /secrets`. The agent never sees the real value: it sees a\nproxy token in env, and the in-host enforcement daemon swaps the\ntoken for the real credential at egress.\n","example":{"ANTHROPIC_API_KEY":"anthropic-prod","GITHUB_TOKEN":"ghp-readonly"},"uniqueKey":"secrets","typeLabel":"object"},"preview_access":{"type":"string","enum":["public","private"],"default":"public","description":"Default access for newly published preview ports. New sandboxes\ndefault to `public`; `private` ports stay closed with 401 until\npreview-token authentication is introduced. Both modes are strict:\nonly explicitly published ports are reachable.\n`legacy_public` is reserved for sandboxes created before explicit\npublication and cannot be selected through the API.\n","uniqueKey":"preview_access","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","from_template":"\u003cstring>","from_snapshot":"3c90c3cc-0d44-4b50-8888-8dd25736052a","timeout_seconds":302400,"idle_timeout_seconds":302430,"auto_delete_seconds":1296000,"metadata":{"env":"prod","owner":"agent-7"},"env_vars":{"OPENAI_API_KEY":"sk-...","DEBUG":"1","run_id":"7f3c-21"},"network":{"allow_out":["api.openai.com","*.github.com","8.8.8.8/32"],"deny_out":["0.0.0.0/0"]},"secrets":{"ANTHROPIC_API_KEY":"anthropic-prod","GITHUB_TOKEN":"ghp-readonly"},"preview_access":"public"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"31784370-7dcf-4569-a0f6-0c7a04f24fd9":{"description":"Sandbox created","content":{"application/json":{"schema":{"type":"object","description":"Single-sandbox shape — `SandboxListItem` plus `access_token` and bound secrets.","properties":{"id":{"type":"string","pattern":"^(sb-[a-z0-9]+-)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$","description":"Public sandbox ID: a bare UUID, or the region-tagged form `sb-\u003cregion>-\u003cuuid>` (e.g. `sb-use-1b4e28ba-…`). Treat as an opaque string; the tagged form routes the request to the sandbox's home region. Endpoints accept both forms interchangeably.\n","uniqueKey":"id","typeLabel":"string"},"name":{"type":"string","uniqueKey":"name","typeLabel":"string"},"status":{"type":"string","enum":["active","pausing","paused","resuming","migrating","failed"],"description":"Current state of the sandbox. `active` means running; `paused` means paused and awaiting resume. `pausing`, `resuming` and `migrating` are transient states observed while the platform pauses, restores, or relocates a sandbox (e.g. after a `202` from `/pause`, or auto-resume on `/exec`); clients should poll or retry shortly. `failed` means the sandbox can no longer be resumed.\n","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"vcpu_count":{"type":"integer","uniqueKey":"vcpu_count","typeLabel":"integer"},"memory_mib":{"type":"integer","uniqueKey":"memory_mib","typeLabel":"integer"},"snapshot_id":{"type":"string","format":"uuid","description":"ID of the latest snapshot (present after a pause).","uniqueKey":"snapshot_id","typeLabel":"string\u003cuuid>"},"source_snapshot_id":{"type":"string","format":"uuid","description":"The saved snapshot the sandbox was created from, when it was.","uniqueKey":"source_snapshot_id","typeLabel":"string\u003cuuid>"},"created_at":{"type":"string","format":"date-time","uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"timeout_seconds":{"type":"integer","format":"int32","description":"Auto-pause timeout in seconds, if configured. Absent when auto-pause is disabled.\n","uniqueKey":"timeout_seconds","typeLabel":"integer\u003cint32>"},"idle_timeout_seconds":{"type":"integer","format":"int32","description":"Idle timeout in seconds, if configured. Absent when the sandbox is never paused for being idle.\n","uniqueKey":"idle_timeout_seconds","typeLabel":"integer\u003cint32>"},"auto_delete_seconds":{"type":"integer","format":"int32","description":"Garbage-collection window for the paused state, if configured. Absent when auto-delete is disabled.\n","uniqueKey":"auto_delete_seconds","typeLabel":"integer\u003cint32>"},"auto_delete_at":{"type":"string","format":"date-time","description":"When the sandbox will be deleted. Present only while the sandbox is paused with `auto_delete_seconds` configured. The deadline is armed when the sandbox pauses (or when the setting is applied to an already-paused sandbox) and cleared on resume.\n","uniqueKey":"auto_delete_at","typeLabel":"string\u003cdate-time>"},"network":{"type":"object","description":"Current egress allow/deny rules, if any have been configured. Absent when the sandbox uses default network settings.\n","properties":{"allow_out":{"type":"array","items":{"type":"string","uniqueKey":"network.allow_out.items.[INDEX]","typeLabel":"string"},"description":"CIDRs or domains to allow.","example":["api.openai.com","*.github.com","8.8.8.8/32"],"uniqueKey":"network.allow_out","typeLabel":"string[]"},"deny_out":{"type":"array","items":{"type":"string","uniqueKey":"network.deny_out.items.[INDEX]","typeLabel":"string"},"description":"CIDRs to deny. Use `0.0.0.0/0` to block all traffic not in `allow_out`.","example":["0.0.0.0/0"],"uniqueKey":"network.deny_out","typeLabel":"string[]"}},"uniqueKey":"network","typeLabel":"object"},"metadata":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"metadata.additionalProperties","typeLabel":"string"},"description":"User-supplied tags attached at creation. Always present — sandboxes created without metadata return `{}` rather than being absent.\n","example":{"env":"prod","owner":"agent-7"},"uniqueKey":"metadata","typeLabel":"object"},"preview_access":{"type":"string","enum":["legacy_public","public","private"],"description":"Default access for newly published ports. `public` and `private`\nare strict modes; existing published rows keep their own access.\n`legacy_public` may be returned for an older sandbox and preserves\nall-port behavior until updated to a strict mode.\n","uniqueKey":"preview_access","typeLabel":"enum\u003cstring>"},"routing_hint":{"type":"string","description":"Optional signed logical-owner routing hint. Send on data-plane\nrequests as X-Superserve-Routing-Hint, or as a route.\u003chint>\nWebSocket subprotocol alongside the unchanged access token.\nRefresh after resume/activate; absent or invalid hints retain\nownership lookup fallback. This does not authorize access.\n","uniqueKey":"routing_hint","typeLabel":"string"},"access_token":{"type":"string","description":"Per-sandbox access token for data-plane operations (file\nupload/download, terminal). Pass as the `X-Access-Token`\nheader.\n","uniqueKey":"access_token","typeLabel":"string"},"secrets":{"type":"array","description":"Credentials bound to this sandbox. Each entry maps an env-var name visible to the agent to the secret name it resolves to. `revoked=true` when the underlying secret has been soft-deleted (the env var still holds the now-useless proxy token).\n","items":{"type":"object","required":["env_key","secret_name"],"properties":{"env_key":{"type":"string","isRequired":true,"uniqueKey":"secrets.items.[INDEX].env_key","typeLabel":"string"},"secret_name":{"type":"string","isRequired":true,"uniqueKey":"secrets.items.[INDEX].secret_name","typeLabel":"string"},"revoked":{"type":"boolean","default":false,"uniqueKey":"secrets.items.[INDEX].revoked","typeLabel":"boolean"}},"uniqueKey":"secrets.items.[INDEX]","typeLabel":"object"},"uniqueKey":"secrets","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"\u003cstring>","name":"\u003cstring>","status":"active","vcpu_count":123,"memory_mib":123,"snapshot_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","source_snapshot_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","created_at":"2023-11-07T05:31:56Z","timeout_seconds":123,"idle_timeout_seconds":123,"auto_delete_seconds":123,"auto_delete_at":"2023-11-07T05:31:56Z","network":{"allow_out":["api.openai.com","*.github.com","8.8.8.8/32"],"deny_out":["0.0.0.0/0"]},"metadata":{"env":"prod","owner":"agent-7"},"preview_access":"legacy_public","routing_hint":"\u003cstring>","access_token":"\u003cstring>","secrets":[{"env_key":"\u003cstring>","secret_name":"\u003cstring>","revoked":false}]}}},"exampleType":"generated"}},"exampleType":"generated"},"3350cf8f-07a3-43a3-809d-a3b41000b8ea":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `capacity_unavailable`,\n`build_timed_out`, `infrastructure_failed`, `build_failed`,\n`trial_exhausted`, `trial_unavailable`, `trial_check_unavailable`,\n`free_allowance_exhausted`, `sandbox_exceeds_plan_limits`,\n`billing_ineligible`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"action_url":{"type":"string","format":"uri","example":"https://console.superserve.ai/plan-usage","description":"Where to resolve the error, when there is a next step. Sent with `trial_exhausted`, `trial_unavailable` and `trial_check_unavailable`: the page where the team adds a card and chooses a plan.\n","uniqueKey":"error.action_url","typeLabel":"string\u003curi>"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","action_url":"https://console.superserve.ai/plan-usage"}}}},"exampleType":"generated"}},"exampleType":"generated"},"7c31acda-2727-4892-94e2-4dc702d49666":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `capacity_unavailable`,\n`build_timed_out`, `infrastructure_failed`, `build_failed`,\n`trial_exhausted`, `trial_unavailable`, `trial_check_unavailable`,\n`free_allowance_exhausted`, `sandbox_exceeds_plan_limits`,\n`billing_ineligible`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"action_url":{"type":"string","format":"uri","example":"https://console.superserve.ai/plan-usage","description":"Where to resolve the error, when there is a next step. Sent with `trial_exhausted`, `trial_unavailable` and `trial_check_unavailable`: the page where the team adds a card and chooses a plan.\n","uniqueKey":"error.action_url","typeLabel":"string\u003curi>"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","action_url":"https://console.superserve.ai/plan-usage"}}}},"exampleType":"generated"}},"exampleType":"generated"},"e6230e2a-5281-4cad-be06-3c1d25513c2f":{"description":"Billing blocks the operation. The operation can start again once the\ncause is resolved. The `error.code` distinguishes:\n- `trial_exhausted` — the free trial credit is used up. Add a card and\n choose a plan at `error.action_url` to keep using sandboxes.\n- `trial_unavailable` — the free trial is not available for this\n account. Add a card and choose a plan at `error.action_url` to use\n sandboxes.\n- `trial_check_unavailable` — the free trial could not be confirmed\n for this account because a required check did not complete. This is\n not a decision that the account is ineligible. Add a card and choose\n a plan at `error.action_url` to use sandboxes.\n- `free_allowance_exhausted` — the team is on a legacy Free plan and\n its daily compute allowance is used up; `error.resets_at` is when it\n resets. New accounts start on the free trial instead.\n- `sandbox_exceeds_plan_limits` — the sandbox is larger than the\n plan allows; use a smaller template or upgrade.\n- `billing_ineligible` — sandbox usage is unavailable until billing is\n active. Check the team's billing in the console.\n","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `capacity_unavailable`,\n`build_timed_out`, `infrastructure_failed`, `build_failed`,\n`trial_exhausted`, `trial_unavailable`, `trial_check_unavailable`,\n`free_allowance_exhausted`, `sandbox_exceeds_plan_limits`,\n`billing_ineligible`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"action_url":{"type":"string","format":"uri","example":"https://console.superserve.ai/plan-usage","description":"Where to resolve the error, when there is a next step. Sent with `trial_exhausted`, `trial_unavailable` and `trial_check_unavailable`: the page where the team adds a card and chooses a plan.\n","uniqueKey":"error.action_url","typeLabel":"string\u003curi>"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","action_url":"https://console.superserve.ai/plan-usage"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b35ed2c3-12b2-4c10-a6b1-5f86f0e5dfee":{"description":"The template or snapshot named does not exist for this team.","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `capacity_unavailable`,\n`build_timed_out`, `infrastructure_failed`, `build_failed`,\n`trial_exhausted`, `trial_unavailable`, `trial_check_unavailable`,\n`free_allowance_exhausted`, `sandbox_exceeds_plan_limits`,\n`billing_ineligible`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"action_url":{"type":"string","format":"uri","example":"https://console.superserve.ai/plan-usage","description":"Where to resolve the error, when there is a next step. Sent with `trial_exhausted`, `trial_unavailable` and `trial_check_unavailable`: the page where the team adds a card and chooses a plan.\n","uniqueKey":"error.action_url","typeLabel":"string\u003curi>"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","action_url":"https://console.superserve.ai/plan-usage"}}}},"exampleType":"generated"}},"exampleType":"generated"},"09758e74-858f-400a-932a-2f99d7a355d2":{"description":"Operation conflicts with the resource's current state","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `capacity_unavailable`,\n`build_timed_out`, `infrastructure_failed`, `build_failed`,\n`trial_exhausted`, `trial_unavailable`, `trial_check_unavailable`,\n`free_allowance_exhausted`, `sandbox_exceeds_plan_limits`,\n`billing_ineligible`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"action_url":{"type":"string","format":"uri","example":"https://console.superserve.ai/plan-usage","description":"Where to resolve the error, when there is a next step. Sent with `trial_exhausted`, `trial_unavailable` and `trial_check_unavailable`: the page where the team adds a card and chooses a plan.\n","uniqueKey":"error.action_url","typeLabel":"string\u003curi>"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","action_url":"https://console.superserve.ai/plan-usage"}}}},"exampleType":"generated"}},"exampleType":"generated"},"04829d10-5aad-4fe7-aaaf-053785c05931":{"description":"Rate-limited or quota reached. The `error.code` distinguishes:\n- `rate_limited` — request rate exceeded; retry after a short backoff.\n- `too_many_sandboxes` — team has reached its active sandbox count\n limit (paused sandboxes do not count; pause or delete a sandbox to\n free a slot, or contact support to raise the cap).\n","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `capacity_unavailable`,\n`build_timed_out`, `infrastructure_failed`, `build_failed`,\n`trial_exhausted`, `trial_unavailable`, `trial_check_unavailable`,\n`free_allowance_exhausted`, `sandbox_exceeds_plan_limits`,\n`billing_ineligible`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"action_url":{"type":"string","format":"uri","example":"https://console.superserve.ai/plan-usage","description":"Where to resolve the error, when there is a next step. Sent with `trial_exhausted`, `trial_unavailable` and `trial_check_unavailable`: the page where the team adds a card and chooses a plan.\n","uniqueKey":"error.action_url","typeLabel":"string\u003curi>"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","action_url":"https://console.superserve.ai/plan-usage"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b3b51abf-206b-41b7-9138-a99c06ba4e49":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `capacity_unavailable`,\n`build_timed_out`, `infrastructure_failed`, `build_failed`,\n`trial_exhausted`, `trial_unavailable`, `trial_check_unavailable`,\n`free_allowance_exhausted`, `sandbox_exceeds_plan_limits`,\n`billing_ineligible`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"action_url":{"type":"string","format":"uri","example":"https://console.superserve.ai/plan-usage","description":"Where to resolve the error, when there is a next step. Sent with `trial_exhausted`, `trial_unavailable` and `trial_check_unavailable`: the page where the team adds a card and chooses a plan.\n","uniqueKey":"error.action_url","typeLabel":"string\u003curi>"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","action_url":"https://console.superserve.ai/plan-usage"}}}},"exampleType":"generated"}},"exampleType":"generated"},"4ef839a2-5112-47f3-b530-d3f3a7d62ddf":{"description":"Temporary create failure, or the snapshot's host cannot create\nsandboxes from it right now. Retry the request after the outage\nclears.\n","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `capacity_unavailable`,\n`build_timed_out`, `infrastructure_failed`, `build_failed`,\n`trial_exhausted`, `trial_unavailable`, `trial_check_unavailable`,\n`free_allowance_exhausted`, `sandbox_exceeds_plan_limits`,\n`billing_ineligible`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"action_url":{"type":"string","format":"uri","example":"https://console.superserve.ai/plan-usage","description":"Where to resolve the error, when there is a next step. Sent with `trial_exhausted`, `trial_unavailable` and `trial_check_unavailable`: the page where the team adds a card and chooses a plan.\n","uniqueKey":"error.action_url","typeLabel":"string\u003curi>"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","action_url":"https://console.superserve.ai/plan-usage"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"6e4893b6-7af9-4446-8a86-550b0b36832d":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key","scopes":[],"schemeName":"apiKey"}}},"servers":{"eb91a4a7-8bbd-4253-a460-75e66def9932":{"url":"https://api.superserve.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","scopes":[],"schemeName":"apiKey"},"schema":{"title":"X-API-Key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"X-API-Key"}],"title":"apiKey"}]},"originalFileLocation":"https://api.superserve.ai/openapi.yaml"},"subdomain":"superserve-ai-superserve-33","siteName":"Superserve","title":"Create a new sandbox - Superserve","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-07T07:17:05.578Z","originalFileLocation":"api-reference/sandboxes/create-a-new-sandbox.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Creates a sandbox from a template (defaults to superserve/base when from_template is omitted), or from a saved snapshot named by from_snapshot. When the request returns successfully, the sandbox is ready to use — you can run commands against it immediately. New sandboxes use strict preview routing: only ports explicitly published through /sandboxes/{sandbox_id}/preview-ports are reachable. preview_access defaults newly published ports to public or private; each publication may override that default independently.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Superserve\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a new sandbox - Superserve\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a sandbox from a template (defaults to superserve/base when from_template is omitted), or from a saved snapshot named by from_snapshot. When the request returns successfully, the sandbox is ready to use — you can run commands against it immediately. New sandboxes use strict preview routing: only ports explicitly published through /sandboxes/{sandbox_id}/preview-ports are reachable. preview_access defaults newly published ports to public or private; each publication may override that default independently.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Superserve\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.superserve.ai/api-reference/sandboxes/create-a-new-sandbox\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://superserve-ai-superserve-33.mintlify.site/_mintlify/api/og/v2?division=Sandboxes\u0026amp;title=Create+a+new+sandbox\u0026amp;description=Creates+a+sandbox+from+a+template+%28defaults+to+%60superserve%2Fbase%60+when%0A%60from_template%60+is+omitted%29%2C+or+from+a+saved+snapshot+named+by%0A%60from_snapshot%60.+When+the+r\u0026amp;theme=812d3aa274a9b09d054f08f6\u0026amp;signature=87c4679fcc74bba90bf16250dfe48fca7475f305e609d9e7493365a2dbae094f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create a new sandbox - Superserve\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a sandbox from a template (defaults to superserve/base when from_template is omitted), or from a saved snapshot named by from_snapshot. When the request returns successfully, the sandbox is ready to use — you can run commands against it immediately. New sandboxes use strict preview routing: only ports explicitly published through /sandboxes/{sandbox_id}/preview-ports are reachable. preview_access defaults newly published ports to public or private; each publication may override that default independently.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://superserve-ai-superserve-33.mintlify.site/_mintlify/api/og/v2?division=Sandboxes\u0026amp;title=Create+a+new+sandbox\u0026amp;description=Creates+a+sandbox+from+a+template+%28defaults+to+%60superserve%2Fbase%60+when%0A%60from_template%60+is+omitted%29%2C+or+from+a+saved+snapshot+named+by%0A%60from_snapshot%60.+When+the+r\u0026amp;theme=812d3aa274a9b09d054f08f6\u0026amp;signature=87c4679fcc74bba90bf16250dfe48fca7475f305e609d9e7493365a2dbae094f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Superserve\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#B2FAB4\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.superserve.ai/api-reference/sandboxes/create-a-new-sandbox\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/sandboxes/create-a-new-sandbox.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.superserve.ai/#organization\",\"name\":\"Superserve\",\"url\":\"https://docs.superserve.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/superserve-ai-superserve-33/G055TX3BjwXpQedU/logo.svg?fit=max\u0026auto=format\u0026n=G055TX3BjwXpQedU\u0026q=85\u0026s=69233fb550a17b81d7d7fa083ca7f3de\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.superserve.ai#website\",\"name\":\"Superserve\",\"url\":\"https://docs.superserve.ai\",\"publisher\":{\"@id\":\"https://docs.superserve.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.superserve.ai/api-reference/sandboxes/create-a-new-sandbox#webpage\",\"url\":\"https://docs.superserve.ai/api-reference/sandboxes/create-a-new-sandbox\",\"name\":\"Create a new sandbox\",\"description\":\"Creates a sandbox from a template (defaults to superserve/base when from_template is omitted), or from a saved snapshot named by from_snapshot. When the request returns successfully, the sandbox is ready to use — you can run commands against it immediately. New sandboxes use strict preview routing: only ports explicitly published through /sandboxes/{sandbox_id}/preview-ports are reachable. preview_access defaults newly published ports to public or private; each publication may override that default independently.\",\"dateModified\":\"2026-11-07T07:17:05.578Z\",\"isPartOf\":{\"@id\":\"https://docs.superserve.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.superserve.ai/api-reference/sandboxes/create-a-new-sandbox#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.superserve.ai/api-reference/sandboxes/create-a-new-sandbox#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Sandboxes\",\"item\":\"https://docs.superserve.ai/api-reference/sandboxes/list-all-sandboxes\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a new sandbox\",\"item\":\"https://docs.superserve.ai/api-reference/sandboxes/create-a-new-sandbox\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.superserve.ai/api-reference/sandboxes/create-a-new-sandbox#apireference\",\"headline\":\"Create a new sandbox\",\"name\":\"Create a new sandbox\",\"description\":\"Creates a sandbox from a template (defaults to superserve/base when from_template is omitted), or from a saved snapshot named by from_snapshot. When the request returns successfully, the sandbox is ready to use — you can run commands against it immediately. New sandboxes use strict preview routing: only ports explicitly published through /sandboxes/{sandbox_id}/preview-ports are reachable. preview_access defaults newly published ports to public or private; each publication may override that default independently.\",\"url\":\"https://docs.superserve.ai/api-reference/sandboxes/create-a-new-sandbox\",\"mainEntityOfPage\":{\"@id\":\"https://docs.superserve.ai/api-reference/sandboxes/create-a-new-sandbox#webpage\"},\"dateModified\":\"2026-11-07T07:17:05.578Z\",\"publisher\":{\"@id\":\"https://docs.superserve.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.superserve.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Superserve\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Superserve","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/introduction"}]},{"anchor":"SDK Reference","icon":"code","pages":[{"title":"SDK Reference","href":"/sdk-reference/sandbox"}]},{"anchor":"REST API","icon":"server","groups":[{"group":"Sandboxes","pages":[{"title":"List all sandboxes","description":"Returns sandboxes belonging to the authenticated team, ordered by\ncreation time (newest first) by default.\n\n## Pagination, sorting, and search\n\nPass `limit` (and `offset`) to fetch one page at a time; the\n`X-Total-Count` response header reports the total across all pages.\nOmitting `limit` returns the full list, so existing unpaginated\ncallers are unaffected. Sort with `sort` + `order`, filter by exact\n`status` (one value or comma-separated values), and search names with `q` (case-insensitive substring).\n\n## Filtering by metadata\n\nAny query parameter prefixed `metadata.` is treated as a filter\nclause: `?metadata.env=prod\u0026metadata.owner=agent-7`. Multiple\nfilters AND together — a sandbox matches only if every key/value\npair is present in its metadata. Values are compared as exact\nstrings; there is no type coercion or substring matching.\n","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /sandboxes","href":"/api-reference/sandboxes/list-all-sandboxes"},{"title":"Create a new sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /sandboxes","href":"/api-reference/sandboxes/create-a-new-sandbox"},{"title":"Get a sandbox by ID","description":null,"deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /sandboxes/{sandbox_id}","href":"/api-reference/sandboxes/get-a-sandbox-by-id"},{"title":"Partially update a running sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml patch /sandboxes/{sandbox_id}","href":"/api-reference/sandboxes/partially-update-a-running-sandbox"},{"title":"Delete a sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml delete /sandboxes/{sandbox_id}","href":"/api-reference/sandboxes/delete-a-sandbox"},{"title":"Pause a running sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /sandboxes/{sandbox_id}/pause","href":"/api-reference/sandboxes/pause-a-running-sandbox"},{"title":"Resume a paused sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /sandboxes/{sandbox_id}/resume","href":"/api-reference/sandboxes/resume-a-paused-sandbox"},{"title":"Activate a sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /sandboxes/{sandbox_id}/activate","href":"/api-reference/sandboxes/activate-a-sandbox"},{"title":"List a sandbox's egress activity","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /sandboxes/{sandbox_id}/network","href":"/api-reference/sandboxes/list-a-sandboxs-egress-activity"},{"title":"List published preview ports","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /sandboxes/{sandbox_id}/preview-ports","href":"/api-reference/sandboxes/list-published-preview-ports"},{"title":"Publish or update a preview port","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /sandboxes/{sandbox_id}/preview-ports","href":"/api-reference/sandboxes/publish-or-update-a-preview-port"},{"title":"Unpublish a preview port","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml delete /sandboxes/{sandbox_id}/preview-ports/{port}","href":"/api-reference/sandboxes/unpublish-a-preview-port"},{"title":"Mint a token for a private preview port","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /sandboxes/{sandbox_id}/preview-ports/{port}/token","href":"/api-reference/sandboxes/mint-a-token-for-a-private-preview-port"},{"title":"Rotate a private preview port's token generation","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /sandboxes/{sandbox_id}/preview-ports/{port}/token/rotate","href":"/api-reference/sandboxes/rotate-a-private-preview-ports-token-generation"}]},{"group":"Snapshots","pages":[{"title":"Snapshot a sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /sandboxes/{sandbox_id}/snapshot","href":"/api-reference/snapshots/snapshot-a-sandbox"},{"title":"List a sandbox's snapshots","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /sandboxes/{sandbox_id}/snapshots","href":"/api-reference/snapshots/list-a-sandboxs-snapshots"},{"title":"Get a snapshot","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /snapshots/{snapshot_id}","href":"/api-reference/snapshots/get-a-snapshot"},{"title":"Rename a snapshot","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml patch /snapshots/{snapshot_id}","href":"/api-reference/snapshots/rename-a-snapshot"},{"title":"Delete a snapshot","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml delete /snapshots/{snapshot_id}","href":"/api-reference/snapshots/delete-a-snapshot"}]},{"group":"Exec","pages":[{"title":"Run a command and wait for it to finish","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /exec","href":"/api-reference/exec/run-a-command-and-wait-for-it-to-finish"},{"title":"Run a command and stream output over SSE","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /exec/stream","href":"/api-reference/exec/run-a-command-and-stream-output-over-sse"},{"title":"Run a command over a WebSocket","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /exec/connect","href":"/api-reference/exec/run-a-command-over-a-websocket"}]},{"group":"Files","pages":[{"title":"List a directory inside a sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /sandboxes/{sandbox_id}/files","href":"/api-reference/files/list-a-directory-inside-a-sandbox"},{"title":"Read a file from a sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /files","href":"/api-reference/files/read-a-file-from-a-sandbox"},{"title":"Write a file to a sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /files","href":"/api-reference/files/write-a-file-to-a-sandbox"}]},{"group":"Templates","pages":[{"title":"List templates visible to the caller","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /templates","href":"/api-reference/templates/list-templates-visible-to-the-caller"},{"title":"Create a template and kick off the first build","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /templates","href":"/api-reference/templates/create-a-template-and-kick-off-the-first-build"},{"title":"Get a template by ID","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /templates/{template_id}","href":"/api-reference/templates/get-a-template-by-id"},{"title":"Delete a template","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml delete /templates/{template_id}","href":"/api-reference/templates/delete-a-template"},{"title":"List recent builds for a template","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /templates/{template_id}/builds","href":"/api-reference/templates/list-recent-builds-for-a-template"},{"title":"Rebuild an existing template","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /templates/{template_id}/builds","href":"/api-reference/templates/rebuild-an-existing-template"},{"title":"Get a build by ID","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /templates/{template_id}/builds/{build_id}","href":"/api-reference/templates/get-a-build-by-id"},{"title":"Cancel an in-flight build","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml delete /templates/{template_id}/builds/{build_id}","href":"/api-reference/templates/cancel-an-in-flight-build"},{"title":"Stream build logs via SSE","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /templates/{template_id}/builds/{build_id}/logs","href":"/api-reference/templates/stream-build-logs-via-sse"}]},{"group":"Secrets","pages":[{"title":"Create a secret","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /secrets","href":"/api-reference/secrets/create-a-secret"},{"title":"List secrets for the calling team","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /secrets","href":"/api-reference/secrets/list-secrets-for-the-calling-team"},{"title":"Get a secret's metadata","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /secrets/{name}","href":"/api-reference/secrets/get-a-secrets-metadata"},{"title":"Rotate a secret's value","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml patch /secrets/{name}","href":"/api-reference/secrets/rotate-a-secrets-value"},{"title":"Revoke a secret","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml delete /secrets/{name}","href":"/api-reference/secrets/revoke-a-secret"},{"title":"Attach a secret to a sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /sandboxes/{sandbox_id}/secrets","href":"/api-reference/sandboxes/attach-a-secret-to-a-sandbox"},{"title":"Detach a secret from a sandbox","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml delete /sandboxes/{sandbox_id}/secrets/{env_key}","href":"/api-reference/sandboxes/detach-a-secret-from-a-sandbox"},{"title":"List proxy egress events that used this credential","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /secrets/{name}/audit","href":"/api-reference/secrets/list-proxy-egress-events-that-used-this-credential"},{"title":"List sandboxes currently bound to this credential","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /secrets/{name}/sandboxes","href":"/api-reference/secrets/list-sandboxes-currently-bound-to-this-credential"},{"title":"List the built-in provider shortcut catalog","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /providers","href":"/api-reference/secrets/list-the-built-in-provider-shortcut-catalog"}]},{"group":"Team Management","pages":[{"title":"Rename a team","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml patch /teams/{team_id}","href":"/api-reference/rbac/rename-a-team"},{"title":"List team members","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /teams/{team_id}/members","href":"/api-reference/rbac/list-team-members"},{"title":"Add or invite a team member","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /teams/{team_id}/members","href":"/api-reference/rbac/add-or-invite-a-team-member"},{"title":"Deactivate a team member","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml delete /teams/{team_id}/members/{user_id}","href":"/api-reference/rbac/deactivate-a-team-member"},{"title":"List team role assignments","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /teams/{team_id}/roles","href":"/api-reference/rbac/list-team-role-assignments"},{"title":"Assign a team role","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /teams/{team_id}/roles","href":"/api-reference/rbac/assign-a-team-role"},{"title":"Revoke a team role","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml delete /teams/{team_id}/roles/{assignment_id}","href":"/api-reference/rbac/revoke-a-team-role"},{"title":"List team invitations","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /teams/{team_id}/invitations","href":"/api-reference/rbac/list-team-invitations"},{"title":"Invite an owner","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /teams/{team_id}/invitations","href":"/api-reference/rbac/invite-an-owner"},{"title":"Resend a team invitation","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /teams/{team_id}/invitations/{invitation_id}/resend","href":"/api-reference/rbac/resend-a-team-invitation"},{"title":"Revoke a team invitation","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /teams/{team_id}/invitations/{invitation_id}/revoke","href":"/api-reference/rbac/revoke-a-team-invitation"},{"title":"Report invitation email delivery","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /teams/{team_id}/invitations/{invitation_id}/delivery","href":"/api-reference/rbac/report-invitation-email-delivery"},{"title":"Leave a team","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml post /teams/{team_id}/leave","href":"/api-reference/rbac/leave-a-team"}]},{"group":"Activity","pages":[{"title":"List team audit-log activity","deprecated":null,"version":null,"openapi":"https://api.superserve.ai/openapi.yaml get /activity","href":"/api-reference/activity/list-team-audit-log-activity"}]}]},{"anchor":"Integrations","icon":"puzzle-piece","pages":[{"title":"Integrations","href":"/integrations/overview"}]}]},"basePath":"","title":"Create a new sandbox - Superserve","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-BUDYNlhG.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}