Update a non-terminated sandbox’s proxy settings, automatic resume behavior, or egress network policy. Names are immutable: set name at creation. Sending name in a PATCH returns 400 Bad Request.
The optional boolean auto_resume controls whether proxy traffic wakes a suspended named sandbox:
Value
Behavior
Omitted
Keep the current setting
false
Reject proxied traffic while suspended with HTTP 409 and code SANDBOX_AUTO_RESUME_DISABLED
true
Allow subsequent proxy traffic to resume the sandbox
You can change this setting in any non-terminated state, including while suspended. Updating it neither suspends a running sandbox nor wakes a suspended one. Explicit resume still works and preserves the setting across later suspensions.This request disables automatic resume for an existing named sandbox:
The response includes the current auto_resume boolean. Setting auto_resume: false on an unnamed sandbox returns 400 Bad Request. Updating a terminated sandbox returns 409 Conflict.
Use exposed_ports and allow_unauthenticated_access to control proxy access. The network field is tri-state: omit it to leave the policy unchanged, send an object to replace it, or send null to clear it. See Networking.Send a resources resize in a separate PATCH. Combining it with any other field, including auto_resume, returns 400 Bad Request. Resource resizing requires a running sandbox; see Live resize.
Omit to preserve the current setting. False prevents proxy traffic from waking a suspended named sandbox; proxied requests return 409 with code SANDBOX_AUTO_RESUME_DISABLED. True re-enables wake-on-traffic. Accepted in any non-terminated state, including suspended. Updating this flag neither suspends nor resumes the sandbox. False on an unnamed sandbox returns 400. Cannot be combined with resources.
Update the sandbox egress network policy. This field is tri-state: omit it to leave the current policy unchanged, send an object to replace the whole policy, or send an explicit null to clear it (unrestricted egress). The change is applied to the live sandbox firewall as one atomic swap with no enforcement gap; already-established connections are not revoked. If a hostname in the new policy fails to resolve, the update is rejected and the previous policy stays enforced.
Whether proxy traffic may wake the sandbox while suspended. Defaults to true on creation. Explicit resume does not change this setting, and copies inherit it. Check status separately to determine whether the sandbox is currently suspended.
Typed reason the sandbox terminated (e.g. FileSystemNotFound, FileSystemSnapshotNotFound, ImageNotFound, no_capacity when a max_pending_secs bound ran out while waiting for a host, cancelled when a pending sandbox was deleted). Present on failed terminations.
Optional diagnosis for termination or a recoverable resume failure. An accepted explicit resume clears the previous diagnosis. Inspect status rather than classifying failure from this text.
Retained checkpoint ID. A recoverable resume failure preserves the original checkpoint for an explicit retry.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Tensorlake","colors":{"primary":"#047857","light":"#047857","dark":"#0D1117"},"logo":{"light":"https://mintcdn.com/tensorlake-35e9e726/pfTs6FweN5gDe2IY/logo/TL-Light.svg?fit=max\u0026auto=format\u0026n=pfTs6FweN5gDe2IY\u0026q=85\u0026s=de3c3b6e814425b1be6902f8af88b719","dark":"https://mintcdn.com/tensorlake-35e9e726/pfTs6FweN5gDe2IY/logo/TL-Dark.svg?fit=max\u0026auto=format\u0026n=pfTs6FweN5gDe2IY\u0026q=85\u0026s=b08c049d9fabd32c205f6e8d9f621ba3"},"favicon":"https://mintcdn.com/tensorlake-35e9e726/fVE8-oNRlpqs-U2A/logo/favicon.png?fit=max\u0026auto=format\u0026n=fVE8-oNRlpqs-U2A\u0026q=85\u0026s=15a7031809c3f949e46d8b9c926c28f4","api":{"openapi":"api-reference/openapi.yaml","playground":{"display":"interactive"},"mdx":{"auth":{"method":"bearer"},"server":"https://api.tensorlake.ai/"}},"appearance":{"default":"system"},"navbar":{"links":[{"href":"https://tensorlake.ai/blog","label":"Blog"},{"href":"https://join.slack.com/t/tensorlakecloud/shared_invite/zt-32fq4nmib-gO0OM5RIar3zLOBm~ZGqKg","label":"Slack"},{"href":"https://github.com/tensorlakeai/tensorlake","label":"GitHub"}],"primary":{"type":"button","label":"Dashboard","href":"https://cloud.tensorlake.ai/login"}},"footer":{"socials":{"website":"https://www.tensorlake.ai/","x":"https://x.com/tensorlake","github":"https://github.com/tensorlakeai","linkedin":"https://linkedin.com/company/tensorlake","bluesky":"https://bsky.app/profile/tensorlake.bsky.social"}},"seo":{"metatags":{"og:type":"website","og:site_name":"Tensorlake Documentation","og:title":"Tensorlake Documentation","og:description":"Build with Tensorlake: secure and stateful sandboxes for AI agents, durable orchestration for long-running workflows","og:url":"https://docs.tensorlake.ai","og:locale":"en_US","twitter:card":"summary_large_image","twitter:site":"@tensorlake","twitter:creator":"@tensorlake","twitter:title":"Tensorlake Documentation","twitter:description":"Sandboxes and orchestration for AI agents.","og:image":"https://docs.tensorlake.ai/images/og-preview.png","og:image:width":"2400","og:image:height":"1260","twitter:image":"https://docs.tensorlake.ai/images/og-preview.png","description":"Tensorlake Documentation— secure and stateful sandboxes for AI agents, durable workflow orchestration for long-running workflows, covers in Python and TypeScript SDKs plus CLI","keywords":"AI agents, sandboxes, stateful sandboxes, durable execution, agent orchestration, agentic workflows","author":"Tensorlake","robots":"index, follow, max-image-preview:large, max-snippet:-1","googlebot":"index, follow"},"indexing":"all"},"fonts":{"family":"Inter"},"integrations":{"ga4":{"measurementId":"G-EBFHHWKKQM"}},"contextual":{"options":["claude","chatgpt","cursor","grok","copy","view"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tensorlake-35e9e726","hasAudioNarration":false,"actualSubdomain":"tensorlake-35e9e726","customDomains":["docs.tensorlake.ai"],"gitSource":{"type":"github","owner":"tensorlakeai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aecb4e049625e32dcdb288b","collectionId":"c7890fe8-b81c-4385-bf9d-9728f48c3df4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aecb4e049625e32dcdb288b"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aecf5ffcaa1870951856cdf","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Sandboxes","count":90},{"language":"default","tag":"API Reference","count":48},{"language":"default","tag":"Guides","count":41},{"language":"default","tag":"Overview","count":25},{"language":"default","tag":"Orchestrate","count":24},{"language":"default","tag":"Use Cases","count":23},{"language":"default","tag":"Process Management","count":15},{"language":"default","tag":"Life Cycle Management","count":13},{"language":"default","tag":"Platform Features","count":13},{"language":"default","tag":"Cloud Volumes","count":9}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/v2/sandboxes/update","slug":"/api-reference/v2/sandboxes/update","pageMetadata":{"title":"Update Sandbox","description":"Update sandbox settings, including automatic resume while suspended.","openapi":"patch /sandboxes/{sandbox_id}","og:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-update.png","twitter:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-update.png","href":"/api-reference/v2/sandboxes/update"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Update sandbox settings, including automatic resume while suspended.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Update a non-terminated sandbox’s proxy settings, automatic resume behavior, or egress network policy. Names are immutable: set `,_jsx(_components.code,{children:`name`}),` at creation. Sending `,_jsx(_components.code,{children:`name`}),` in a PATCH returns `,_jsx(_components.code,{children:`400 Bad Request`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`control-automatic-resume`,children:`Control automatic resume`}),`\n`,_jsxs(_components.p,{children:[`The optional boolean `,_jsx(_components.code,{children:`auto_resume`}),` controls whether proxy traffic wakes a suspended named sandbox:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Value`}),_jsx(_components.th,{children:`Behavior`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Omitted`}),_jsx(_components.td,{children:`Keep the current setting`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`false`})}),_jsxs(_components.td,{children:[`Reject proxied traffic while suspended with HTTP `,_jsx(_components.code,{children:`409`}),` and code `,_jsx(_components.code,{children:`SANDBOX_AUTO_RESUME_DISABLED`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{children:`Allow subsequent proxy traffic to resume the sandbox`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`You can change this setting in any non-terminated state, including while suspended. Updating it neither suspends a running sandbox nor wakes a suspended one. Explicit `,_jsx(_components.a,{href:`/api-reference/v2/sandboxes/resume`,children:`resume`}),` still works and preserves the setting across later suspensions.`]}),`\n`,_jsx(_components.p,{children:`This request disables automatic resume for an existing named sandbox:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` PATCH`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.tensorlake.ai/sandboxes/parked-agent`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$TENSORLAKE_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{\"auto_resume\":false}'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The response includes the current `,_jsx(_components.code,{children:`auto_resume`}),` boolean. Setting `,_jsx(_components.code,{children:`auto_resume: false`}),` on an unnamed sandbox returns `,_jsx(_components.code,{children:`400 Bad Request`}),`. Updating a terminated sandbox returns `,_jsx(_components.code,{children:`409 Conflict`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`update-other-settings`,children:`Update other settings`}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`exposed_ports`}),` and `,_jsx(_components.code,{children:`allow_unauthenticated_access`}),` to control proxy access. The `,_jsx(_components.code,{children:`network`}),` field is tri-state: omit it to leave the policy unchanged, send an object to replace it, or send `,_jsx(_components.code,{children:`null`}),` to clear it. See `,_jsx(_components.a,{href:`/sandboxes/networking#update-the-policy-on-a-running-sandbox`,children:`Networking`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Send a `,_jsx(_components.code,{children:`resources`}),` resize in a separate PATCH. Combining it with any other field, including `,_jsx(_components.code,{children:`auto_resume`}),`, returns `,_jsx(_components.code,{children:`400 Bad Request`}),`. Resource resizing requires a running sandbox; see `,_jsx(_components.a,{href:`/sandboxes/live-resize`,children:`Live resize`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Update Sandbox","description":"Update sandbox settings, including automatic resume while suspended.","openapi":"patch /sandboxes/{sandbox_id}","og:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-update.png","twitter:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-update.png","href":"/api-reference/v2/sandboxes/update"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Control automatic resume","slug":"control-automatic-resume","depth":2,"children":[]},{"title":"Update other settings","slug":"update-other-settings","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/tensorlake-35e9e726/1373ae293ad67675/plausible.js"],"openApiReferenceData":{"operation":{"tags":["sandboxes"],"summary":"Update a sandbox","description":"Update sandbox settings, including automatic resume while suspended.","operationId":"update_sandbox","requestBody":"495eb950-e32a-476f-b4e4-ff3699b7d69d","responses":{"200":"f006521b-cbed-4ec0-9305-5fb9937b765d","400":"78816136-cb7f-4078-ae13-5c313517fbe5","401":"a4201335-af03-431e-9817-12c25dcbff4f","403":"f278813f-d1de-4508-8862-308fe5d111f3","404":"b1e2c3a6-cf10-415b-8b2b-2fd084ee152e","409":"9e889607-9e71-4e36-9d67-330778629820","422":"a50797b0-3819-4d7a-a364-a33fbe7182c3","500":"62eafe86-e660-446e-8f82-beca8e3b8064"},"method":"patch","type":"path","servers":["04da1a97-9ddd-4cf2-9288-7addbccb3159"],"security":["025c894d-b1a2-4786-81ba-c0d9c07e2515"],"path":"/sandboxes/{sandbox_id}","baseUrlOptions":["https://api.tensorlake.ai/"],"title":"Update a sandbox","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"da5169f7-8b3a-45a9-96db-0716e4bcce2a":{"name":"sandbox_id","in":"path","description":"The ID of the sandbox.","required":true,"schema":{"type":"string","isRequired":true,"description":"The ID of the sandbox.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"auto_resume":{"type":"boolean","description":"Omit to preserve the current setting. False prevents proxy traffic from waking a suspended named sandbox; proxied requests return 409 with code SANDBOX_AUTO_RESUME_DISABLED. True re-enables wake-on-traffic. Accepted in any non-terminated state, including suspended. Updating this flag neither suspends nor resumes the sandbox. False on an unnamed sandbox returns 400. Cannot be combined with resources.","uniqueKey":"auto_resume","typeLabel":"boolean"},"allow_unauthenticated_access":{"type":"boolean","description":"Set or clear unauthenticated ingress routing for this sandbox.","uniqueKey":"allow_unauthenticated_access","typeLabel":"boolean"},"exposed_ports":{"type":"array","description":"Replace the exposed port allowlist. Pass an empty array to clear it and revert to the default management port only.","items":{"type":"integer","format":"int32","minimum":1,"maximum":65535,"uniqueKey":"exposed_ports.items.[INDEX]","typeLabel":"integer\u003cint32>"},"uniqueKey":"exposed_ports","typeLabel":"integer\u003cint32>[]"},"network":{"type":"object","description":"Update the sandbox egress network policy. This field is tri-state: omit it to leave the current policy unchanged, send an object to replace the whole policy, or send an explicit null to clear it (unrestricted egress). The change is applied to the live sandbox firewall as one atomic swap with no enforcement gap; already-established connections are not revoked. If a hostname in the new policy fails to resolve, the update is rejected and the previous policy stays enforced.","properties":{"allow_internet_access":{"type":"boolean","default":true,"description":"Allows internet access, including DNS requests. If false, all outbound traffic except destinations in allow_out is blocked, including DNS requests. If allow_out is non-empty and this is true, only the listed destinations and DNS requests are allowed.","uniqueKey":"network.allow_internet_access","typeLabel":"boolean"},"allow_out":{"type":"array","description":"Allowed domains, IPv4 addresses, or IPv4 CIDRs. A non-empty list allows the listed destinations and DNS requests when allow_internet_access is true. Hostname rules are followed across DNS changes. A destination also matched by deny_out is blocked.","items":{"type":"string","uniqueKey":"network.allow_out.items.[INDEX]","typeLabel":"string"},"uniqueKey":"network.allow_out","typeLabel":"string[]"},"deny_out":{"type":"array","description":"Denied domains, IPv4 addresses, or IPv4 CIDRs. Takes precedence over allow_out; a destination matched by both is blocked.","items":{"type":"string","uniqueKey":"network.deny_out.items.[INDEX]","typeLabel":"string"},"uniqueKey":"network.deny_out","typeLabel":"string[]"}},"uniqueKey":"network","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"auto_resume":true,"allow_unauthenticated_access":true,"exposed_ports":[32768],"network":{"allow_internet_access":true,"allow_out":["\u003cstring>"],"deny_out":["\u003cstring>"]}}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"f006521b-cbed-4ec0-9305-5fb9937b765d":{"description":"Sandbox updated successfully","content":{"application/json":{"schema":{"type":"object","required":["id","namespace","status","created_at","resources","timeout_secs","allow_unauthenticated_access","auto_resume"],"properties":{"auto_resume":{"type":"boolean","description":"Whether proxy traffic may wake the sandbox while suspended. Defaults to true on creation. Explicit resume does not change this setting, and copies inherit it. Check status separately to determine whether the sandbox is currently suspended.","isRequired":true,"uniqueKey":"auto_resume","typeLabel":"boolean"},"id":{"type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"namespace":{"type":"string","isRequired":true,"uniqueKey":"namespace","typeLabel":"string"},"status":{"type":"string","enum":["pending","running","snapshotting","suspending","suspended","terminated","resume_failed"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"created_at":{"type":"integer","format":"int64","description":"Milliseconds since Unix epoch.","isRequired":true,"uniqueKey":"created_at","typeLabel":"integer\u003cint64>"},"resources":{"type":"object","required":["cpus","memory_mb","disk_mb"],"properties":{"cpus":{"type":"number","format":"double","description":"CPU allocation in cores.","isRequired":true,"uniqueKey":"resources.cpus","typeLabel":"number\u003cdouble>"},"memory_mb":{"type":"integer","format":"int64","description":"Memory allocation in MiB.","isRequired":true,"uniqueKey":"resources.memory_mb","typeLabel":"integer\u003cint64>"},"disk_mb":{"type":"integer","format":"int64","description":"Ephemeral root filesystem size in MiB.","isRequired":true,"uniqueKey":"resources.disk_mb","typeLabel":"integer\u003cint64>"}},"isRequired":true,"uniqueKey":"resources","typeLabel":"object"},"timeout_secs":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"timeout_secs","typeLabel":"integer\u003cint64>"},"allow_unauthenticated_access":{"type":"boolean","description":"Whether sandbox ingress may route requests without auth validation.","isRequired":true,"uniqueKey":"allow_unauthenticated_access","typeLabel":"boolean"},"image":{"type":"string","uniqueKey":"image","typeLabel":"string"},"pending_reason":{"oneOf":[{"type":"string","description":"Present when `status` is `pending`.","uniqueKey":"pending_reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Present when `status` is `pending`.","uniqueKey":"pending_reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"pending_reason","typeLabel":"string | null"},"outcome":{"oneOf":[{"type":"string","description":"Platform-specific termination outcome string returned for completed sandboxes.","uniqueKey":"outcome.oneOf.0","typeLabel":"string"},{"type":"null","description":"Platform-specific termination outcome string returned for completed sandboxes.","uniqueKey":"outcome.oneOf.1","typeLabel":"null"}],"uniqueKey":"outcome","typeLabel":"string | null"},"termination_reason":{"oneOf":[{"type":"string","description":"Typed reason the sandbox terminated (e.g. `FileSystemNotFound`, `FileSystemSnapshotNotFound`, `ImageNotFound`, `no_capacity` when a `max_pending_secs` bound ran out while waiting for a host, `cancelled` when a pending sandbox was deleted). Present on failed terminations.","uniqueKey":"termination_reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Typed reason the sandbox terminated (e.g. `FileSystemNotFound`, `FileSystemSnapshotNotFound`, `ImageNotFound`, `no_capacity` when a `max_pending_secs` bound ran out while waiting for a host, `cancelled` when a pending sandbox was deleted). Present on failed terminations.","uniqueKey":"termination_reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"termination_reason","typeLabel":"string | null"},"error_details":{"oneOf":[{"type":"string","description":"Optional diagnosis for termination or a recoverable resume failure. An accepted explicit resume clears the previous diagnosis. Inspect status rather than classifying failure from this text.","uniqueKey":"error_details.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional diagnosis for termination or a recoverable resume failure. An accepted explicit resume clears the previous diagnosis. Inspect status rather than classifying failure from this text.","uniqueKey":"error_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error_details","typeLabel":"string | null"},"container_id":{"oneOf":[{"type":"string","uniqueKey":"container_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"container_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"container_id","typeLabel":"string | null"},"executor_id":{"oneOf":[{"type":"string","uniqueKey":"executor_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"executor_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"executor_id","typeLabel":"string | null"},"ingress_endpoint":{"oneOf":[{"type":"string","description":"Canonical server-provided base for sandbox-specific ingress.","uniqueKey":"ingress_endpoint.oneOf.0","typeLabel":"string"},{"type":"null","description":"Canonical server-provided base for sandbox-specific ingress.","uniqueKey":"ingress_endpoint.oneOf.1","typeLabel":"null"}],"uniqueKey":"ingress_endpoint","typeLabel":"string | null"},"sandbox_url":{"oneOf":[{"type":"string","description":"Sandbox-specific management URL derived from `ingress_endpoint`.","uniqueKey":"sandbox_url.oneOf.0","typeLabel":"string"},{"type":"null","description":"Sandbox-specific management URL derived from `ingress_endpoint`.","uniqueKey":"sandbox_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"sandbox_url","typeLabel":"string | null"},"pool_id":{"oneOf":[{"type":"string","uniqueKey":"pool_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"pool_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"pool_id","typeLabel":"string | null"},"network_policy":{"oneOf":[{"type":"null","description":"Egress network policy currently applied to the sandbox. `null` when egress is unrestricted.","uniqueKey":"network_policy.oneOf.0","typeLabel":"null"},{"type":"object","description":"Egress network policy currently applied to the sandbox. `null` when egress is unrestricted.","properties":{"allow_internet_access":{"type":"boolean","default":true,"description":"Allows internet access, including DNS requests. If false, all outbound traffic except destinations in allow_out is blocked, including DNS requests. If allow_out is non-empty and this is true, only the listed destinations and DNS requests are allowed.","uniqueKey":"network_policy.oneOf.1.allow_internet_access","typeLabel":"boolean"},"allow_out":{"type":"array","description":"Allowed domains, IPv4 addresses, or IPv4 CIDRs. A non-empty list allows the listed destinations and DNS requests when allow_internet_access is true. Hostname rules are followed across DNS changes. A destination also matched by deny_out is blocked.","items":{"type":"string","uniqueKey":"network_policy.oneOf.1.allow_out.items.[INDEX]","typeLabel":"string"},"uniqueKey":"network_policy.oneOf.1.allow_out","typeLabel":"string[]"},"deny_out":{"type":"array","description":"Denied domains, IPv4 addresses, or IPv4 CIDRs. Takes precedence over allow_out; a destination matched by both is blocked.","items":{"type":"string","uniqueKey":"network_policy.oneOf.1.deny_out.items.[INDEX]","typeLabel":"string"},"uniqueKey":"network_policy.oneOf.1.deny_out","typeLabel":"string[]"}},"uniqueKey":"network_policy.oneOf.1","typeLabel":"object"}],"uniqueKey":"network_policy","typeLabel":"null | object"},"exposed_ports":{"oneOf":[{"type":"array","items":{"type":"integer","format":"int32","minimum":1,"maximum":65535,"uniqueKey":"exposed_ports.oneOf.0.items.[INDEX]","typeLabel":"integer\u003cint32>"},"description":"Additional routable ingress ports. When `null`, only the management port `9501` is routable.","uniqueKey":"exposed_ports.oneOf.0","typeLabel":"integer\u003cint32>[]"},{"type":"null","items":{"type":"integer","format":"int32","minimum":1,"maximum":65535},"description":"Additional routable ingress ports. When `null`, only the management port `9501` is routable.","uniqueKey":"exposed_ports.oneOf.1","typeLabel":"null"}],"uniqueKey":"exposed_ports","typeLabel":"integer\u003cint32>[] | null"},"template_id":{"oneOf":[{"type":"string","uniqueKey":"template_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"template_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"template_id","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","uniqueKey":"name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"name.oneOf.1","typeLabel":"null"}],"uniqueKey":"name","typeLabel":"string | null"},"file_systems":{"type":"array","description":"Filesystems currently mounted into the sandbox.","items":{"type":"object","required":["file_system_id","mount_path"],"properties":{"file_system_id":{"type":"string","description":"Filesystem name within the project — the name created with `tl fs create \u003cname>`. ASCII letters, digits, `_`, and `-` only.","isRequired":true,"uniqueKey":"file_systems.items.[INDEX].file_system_id","typeLabel":"string"},"mount_path":{"type":"string","description":"Absolute guest mount path (e.g. `/mnt/skills`). Must not be `/` or contain `..`; paths are normalized, and mount paths must be unique and non-nested within the sandbox.","isRequired":true,"uniqueKey":"file_systems.items.[INDEX].mount_path","typeLabel":"string"},"read_only":{"type":"boolean","default":false,"description":"Mount the filesystem read-only. Writes inside the guest fail with `EROFS`; the mount's storage credential carries no write scope. Fail-closed — sandboxes requesting read-only mounts are only placed on fleets that can enforce them.","uniqueKey":"file_systems.items.[INDEX].read_only","typeLabel":"boolean"},"prefetch":{"type":"boolean","default":false,"description":"Download the filesystem's full tree in the background after the mount is ready. The mount is usable immediately with lazy reads meanwhile. Best-effort — never blocks or fails the sandbox, and older fleets skip it silently.","uniqueKey":"file_systems.items.[INDEX].prefetch","typeLabel":"boolean"},"snapshot_id":{"type":"string","description":"Pin the mount to a permanent snapshot of the filesystem (created with `tl fs snapshot` or a message-bearing `tl fs push`; ids listed by `tl fs history`). A pinned mount serves exactly that snapshot and never follows the live filesystem head. Requires `read_only` to be `true` — a `snapshot_id` without `read_only` is rejected with `400`. Pinning an id that is not a permanent snapshot of the filesystem fails the sandbox with `termination_reason` `FileSystemSnapshotNotFound`. Omit for an unpinned mount that follows the live filesystem; responses omit the field for unpinned mounts.","uniqueKey":"file_systems.items.[INDEX].snapshot_id","typeLabel":"string"}},"uniqueKey":"file_systems.items.[INDEX]","typeLabel":"object"},"uniqueKey":"file_systems","typeLabel":"object[]"},"snapshot_id":{"oneOf":[{"type":"string","description":"Retained checkpoint ID. A recoverable resume failure preserves the original checkpoint for an explicit retry.","uniqueKey":"snapshot_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Retained checkpoint ID. A recoverable resume failure preserves the original checkpoint for an explicit retry.","uniqueKey":"snapshot_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"snapshot_id","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"auto_resume":true,"id":"\u003cstring>","namespace":"\u003cstring>","status":"pending","created_at":123,"resources":{"cpus":123,"memory_mb":123,"disk_mb":123},"timeout_secs":123,"allow_unauthenticated_access":true,"image":"\u003cstring>","pending_reason":"\u003cstring>","outcome":"\u003cstring>","termination_reason":"\u003cstring>","error_details":"\u003cstring>","container_id":"\u003cstring>","executor_id":"\u003cstring>","ingress_endpoint":"\u003cstring>","sandbox_url":"\u003cstring>","pool_id":"\u003cstring>","network_policy":{"allow_internet_access":true,"allow_out":["\u003cstring>"],"deny_out":["\u003cstring>"]},"exposed_ports":[32768],"template_id":"\u003cstring>","name":"\u003cstring>","file_systems":[{"file_system_id":"\u003cstring>","mount_path":"\u003cstring>","read_only":false,"prefetch":false,"snapshot_id":"\u003cstring>"}],"snapshot_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"78816136-cb7f-4078-ae13-5c313517fbe5":{"description":"Invalid update, including an immutable name, auto_resume set to false on an unnamed sandbox, or resources combined with other fields","content":{"text/plain":{}},"exampleType":"generated"},"a4201335-af03-431e-9817-12c25dcbff4f":{"description":"Unauthorized. Invalid or missing credentials","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"f278813f-d1de-4508-8862-308fe5d111f3":{"description":"Forbidden. You do not have permission to access this resource","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"b1e2c3a6-cf10-415b-8b2b-2fd084ee152e":{"description":"Sandbox not found","content":{"text/plain":{}},"exampleType":"generated"},"9e889607-9e71-4e36-9d67-330778629820":{"description":"Sandbox is terminated, resource resizing requires a running sandbox, or its live dataplane cannot safely revoke existing flows","content":{"text/plain":{}},"exampleType":"generated"},"a50797b0-3819-4d7a-a364-a33fbe7182c3":{"description":"Invalid properties in request body","content":{"text/plain":{}},"exampleType":"generated"},"62eafe86-e660-446e-8f82-beca8e3b8064":{"description":"Internal server error","content":{"text/plain":{}},"exampleType":"generated"}},"security":{"025c894d-b1a2-4786-81ba-c0d9c07e2515":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"04da1a97-9ddd-4cf2-9288-7addbccb3159":{"url":"https://api.tensorlake.ai/"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"tensorlake-35e9e726","siteName":"Tensorlake","title":"Tensorlake Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T05:58:04.918Z","originalFileLocation":"api-reference/v2/sandboxes/update.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;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=\"system\"}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=\"Update sandbox settings, including automatic resume while suspended.\">\u003cmeta data-mint-head name=\"keywords\" content=\"AI agents, sandboxes, stateful sandboxes, durable execution, agent orchestration, agentic workflows\">\u003cmeta data-mint-head name=\"application-name\" content=\"Tensorlake\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow, max-image-preview:large, max-snippet:-1\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_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/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_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/tensorlake-35e9e726/jzD554Nmq8Zqors6/_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/tensorlake-35e9e726/jzD554Nmq8Zqors6/_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/tensorlake-35e9e726/jzD554Nmq8Zqors6/_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/tensorlake-35e9e726/jzD554Nmq8Zqors6/_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/tensorlake-35e9e726/jzD554Nmq8Zqors6/_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/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Tensorlake Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Build with Tensorlake: secure and stateful sandboxes for AI agents, durable orchestration for long-running workflows\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tensorlake Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/update\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-update.png\">\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=\"Tensorlake Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sandboxes and orchestration for AI agents.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-update.png\">\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/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tensorlake\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#047857\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"twitter:creator\" content=\"@tensorlake\">\u003cmeta data-mint-head name=\"author\" content=\"Tensorlake\">\u003cmeta data-mint-head name=\"googlebot\" content=\"index, follow\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/update\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/v2/sandboxes/update.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tensorlake.ai/#organization\",\"name\":\"Tensorlake\",\"url\":\"https://docs.tensorlake.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tensorlake-35e9e726/pfTs6FweN5gDe2IY/logo/TL-Light.svg?fit=max\u0026auto=format\u0026n=pfTs6FweN5gDe2IY\u0026q=85\u0026s=de3c3b6e814425b1be6902f8af88b719\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tensorlake.ai#website\",\"name\":\"Tensorlake\",\"url\":\"https://docs.tensorlake.ai\",\"publisher\":{\"@id\":\"https://docs.tensorlake.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/update#webpage\",\"url\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/update\",\"name\":\"Update Sandbox\",\"description\":\"Update sandbox settings, including automatic resume while suspended.\",\"dateModified\":\"2026-10-28T05:58:04.918Z\",\"isPartOf\":{\"@id\":\"https://docs.tensorlake.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/update#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/update#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Sandboxes\",\"item\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/create\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Life Cycle Management\",\"item\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/create\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Update Sandbox\",\"item\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/update\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/update#apireference\",\"headline\":\"Update Sandbox\",\"name\":\"Update Sandbox\",\"description\":\"Update sandbox settings, including automatic resume while suspended.\",\"url\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/update\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/update#webpage\"},\"image\":\"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-update.png\",\"dateModified\":\"2026-10-28T05:58:04.918Z\",\"publisher\":{\"@id\":\"https://docs.tensorlake.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tensorlake.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tensorlake\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Tensorlake","nav":{"global":null,"tabs":[{"tab":"Sandboxes","pages":[{"title":"Sandboxes","href":"/sandboxes/introduction"}]},{"tab":"GitHub Actions","pages":[{"title":"GitHub Actions","href":"/github-actions/quickstart"}]},{"tab":"Cloud Volumes","pages":[{"title":"Cloud Volumes","href":"/filesystems/introduction"}]},{"tab":"Git Repositories","pages":[{"title":"Git Repositories","href":"/git/introduction"}]},{"tab":"Orchestrate","pages":[{"title":"Orchestrate","href":"/applications/introduction"}]},{"tab":"Platform Features","pages":[{"title":"Platform Features","href":"/platform/authentication"}]},{"tab":"API Reference","groups":[{"group":"API Documentation","pages":[{"title":"Introduction","href":"/api-reference/v2/introduction"}]},{"group":"Sandboxes","pages":[{"group":"Life Cycle Management","pages":[{"title":"Create Sandbox","openapi":"post /sandboxes","href":"/api-reference/v2/sandboxes/create"},{"title":"List sandboxes","sidebarTitle":"List Sandboxes","openapi":"get /sandboxes","href":"/api-reference/v2/sandboxes/list"},{"title":"Get Sandbox","description":"Read sandbox status, configuration, and automatic resume settings.","openapi":"get /sandboxes/{sandbox_id}","href":"/api-reference/v2/sandboxes/get"},{"title":"Update Sandbox","openapi":"patch /sandboxes/{sandbox_id}","href":"/api-reference/v2/sandboxes/update"},{"title":"Delete Sandbox","openapi":"delete /sandboxes/{sandbox_id}","description":"Terminate a sandbox. This operation is idempotent and returns success if the sandbox was already terminated.","href":"/api-reference/v2/sandboxes/delete"},{"title":"Snapshot Sandbox","openapi":"post /sandboxes/{sandbox_id}/snapshot","href":"/api-reference/v2/sandboxes/snapshot"},{"title":"Copy Sandbox","openapi":"post /sandboxes/{sandbox_id}/copy","href":"/api-reference/v2/sandboxes/copy"},{"title":"Restore Sandbox","openapi":"post /sandboxes","href":"/api-reference/v2/sandboxes/restore"},{"title":"Suspend Sandbox","openapi":"post /sandboxes/{sandbox_id}/suspend","href":"/api-reference/v2/sandboxes/suspend"},{"title":"Resume Sandbox","openapi":"post /sandboxes/{sandbox_id}/resume","href":"/api-reference/v2/sandboxes/resume"},{"title":"Restart Sandbox","openapi":"post /sandboxes/{sandbox_id}/restart","href":"/api-reference/v2/sandboxes/restart"},{"title":"Attach Filesystem","openapi":"post /sandboxes/{sandbox_id}/file_systems","href":"/api-reference/v2/sandboxes/attach-filesystem"},{"title":"Detach Filesystem","openapi":"delete /sandboxes/{sandbox_id}/file_systems","href":"/api-reference/v2/sandboxes/detach-filesystem"}]},{"group":"Process Management","pages":[{"title":"Sandbox Processes API Overview","sidebarTitle":"Overview","href":"/api-reference/v2/processes/introduction"},{"title":"Start Process","openapi":"post /api/v1/processes","href":"/api-reference/v2/processes/start"},{"title":"Run Process","openapi":"post /api/v1/processes/run","href":"/api-reference/v2/processes/run"},{"title":"List Processes","openapi":"get /api/v1/processes","href":"/api-reference/v2/processes/list"},{"title":"Get Process","openapi":"get /api/v1/processes/{pid}","href":"/api-reference/v2/processes/get"},{"title":"Kill Process","openapi":"delete /api/v1/processes/{pid}","href":"/api-reference/v2/processes/kill"},{"title":"Send Signal","openapi":"post /api/v1/processes/{pid}/signal","href":"/api-reference/v2/processes/signal"},{"title":"Process Stdin","openapi":"post /api/v1/processes/{pid}/stdin","href":"/api-reference/v2/processes/stdin"},{"title":"Close Process Stdin","openapi":"post /api/v1/processes/{pid}/stdin/close","href":"/api-reference/v2/processes/close-stdin"},{"title":"Get Process Stdout","openapi":"get /api/v1/processes/{pid}/stdout","href":"/api-reference/v2/processes/stdout"},{"title":"Get Process Stderr","openapi":"get /api/v1/processes/{pid}/stderr","href":"/api-reference/v2/processes/stderr"},{"title":"Get Process Output","openapi":"get /api/v1/processes/{pid}/output","href":"/api-reference/v2/processes/output"},{"title":"Follow Process Stdout","openapi":"get /api/v1/processes/{pid}/stdout/follow","href":"/api-reference/v2/processes/follow-stdout"},{"title":"Follow Process Stderr","openapi":"get /api/v1/processes/{pid}/stderr/follow","href":"/api-reference/v2/processes/follow-stderr"},{"title":"Follow Process Output","openapi":"get /api/v1/processes/{pid}/output/follow","href":"/api-reference/v2/processes/follow-output"}]},{"group":"Runtime Metadata","pages":[{"title":"Runtime Health","openapi":"get /api/v1/health","href":"/api-reference/v2/runtime/health"},{"title":"Runtime Info","openapi":"get /api/v1/info","href":"/api-reference/v2/runtime/info"},{"title":"Get resource usage","sidebarTitle":"Get Resource Usage","openapi":"get /api/v1/resource-usage","href":"/api-reference/v2/runtime/resource-usage"}]},{"group":"File Management","pages":[{"title":"Sandbox Files API Overview","sidebarTitle":"Overview","href":"/api-reference/v2/sandbox-files/introduction"},{"title":"Read File","openapi":"get /api/v1/files","href":"/api-reference/v2/sandbox-files/read"},{"title":"Write File","openapi":"put /api/v1/files","href":"/api-reference/v2/sandbox-files/write"},{"title":"Delete File","openapi":"delete /api/v1/files","href":"/api-reference/v2/sandbox-files/delete"},{"title":"List Directory","openapi":"get /api/v1/files/list","href":"/api-reference/v2/sandbox-files/list"}]},{"group":"PTY Sessions","pages":[{"title":"Sandbox PTY API Overview","sidebarTitle":"Overview","href":"/api-reference/v2/pty/introduction"},{"title":"Create PTY Session","openapi":"post /api/v1/pty","href":"/api-reference/v2/pty/create"},{"title":"List PTY Sessions","openapi":"get /api/v1/pty","href":"/api-reference/v2/pty/list"},{"title":"Get PTY Session","openapi":"get /api/v1/pty/{session_id}","href":"/api-reference/v2/pty/get"},{"title":"Resize PTY Session","openapi":"post /api/v1/pty/{session_id}/resize","href":"/api-reference/v2/pty/resize"},{"title":"Attach PTY WebSocket","openapi":"get /api/v1/pty/{session_id}/ws","href":"/api-reference/v2/pty/websocket"},{"title":"Kill PTY Session","openapi":"delete /api/v1/pty/{session_id}","href":"/api-reference/v2/pty/kill"}]},{"group":"TCP Tunnels","pages":[{"title":"TCP Tunnel WebSocket","openapi":"get /api/v1/tunnels/tcp","href":"/api-reference/v2/tunnels/tcp"}]},{"group":"SSH Lifecycle","pages":[{"title":"SSH Status","openapi":"get /api/v1/ssh/status","href":"/api-reference/v2/ssh/status"},{"title":"Enable SSH","openapi":"post /api/v1/ssh/enable","href":"/api-reference/v2/ssh/enable"},{"title":"Disable SSH","openapi":"post /api/v1/ssh/disable","href":"/api-reference/v2/ssh/disable"}]}]}]},{"tab":"FAQ","pages":[{"title":"FAQ","href":"/faqs/sandboxes-faq"}]}]},"basePath":"","title":"Tensorlake Documentation","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"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","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.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"]}