Launch an ephemeral or named sandbox.The response includes the sandbox’s ingress_endpoint. Prefer it over constructing *.sandbox.tensorlake.ai hostnames yourself when building sandbox-specific URLs in client code.
Set wait to false to get 202 with the sandbox pending as soon as it is durable, instead of waiting for it to run; poll GET /sandboxes/{id} or GET /sandboxes for readiness. See Non-blocking Sandbox Creation.
Set max_pending_secs to bound how long the sandbox may wait for capacity; when it runs out the sandbox terminates with termination_reasonno_capacity. Omit it to wait indefinitely.
Omit name to create an ephemeral sandbox.
Set name to create a named sandbox that supports suspend and resume.
Set snapshot_id to restore from a snapshot, or image to boot from a registered Sandbox Image.
For fresh creates, if resources.disk_mb is omitted, the sandbox uses the default 10 GB root disk (10240 MiB).
With image, resources.disk_mb can be used to grow the root disk at create time (growth-only).
With snapshot_id from a filesystem snapshot, resources.disk_mb can be used to grow the root disk at create time (growth-only).
Set the optional boolean auto_resume to false when creating a named sandbox to prevent proxy traffic from waking it after suspension. Omit it to use the default, true. Setting it to false without a name returns 400 Bad Request, because ephemeral sandboxes cannot suspend.This request creates a running named sandbox with automatic resume disabled; it does not suspend it:
Read auto_resume from Get Sandbox after creation. The compact create response does not include it. See Keep a sandbox suspended for the complete lifecycle.
Whether proxy traffic may wake this sandbox while suspended. Set false to require explicit resume after suspension. False requires a name; unnamed sandboxes return 400 because they cannot suspend. This setting does not suspend a running sandbox.
Optional sandbox image name to boot from. When omitted, Tensorlake uses the default managed environment. This can also be a registered Sandbox Image name.
Sandbox timeout in seconds. 0 requests the maximum allowed by your plan.
Plan maximums: Free unverified 3600 (1h), Free verified 7200 (2h),
On-Demand 86400 (24h). See tensorlake.ai/pricing for higher limits on committed plans.
Allow sandbox ingress to route requests without validating auth credentials. The legacy request alias allow_unauthenticated_proxy_access is also accepted.
false returns 202 with the sandbox in pending as soon as it is durable, instead of waiting for it to run. Poll GET /sandboxes/{id} or GET /sandboxes for readiness.
Longest the sandbox may wait for capacity, in seconds. When it runs out while the sandbox is still waiting for a host, the sandbox is terminated with termination_reasonno_capacity and its last pending_reason. 0 fails at once if the sandbox cannot be placed. Omit to wait indefinitely. Bare-metal hosts take up to 20 minutes to boot, so use 1800 or more for capacity waits.
Filesystems to mount into the sandbox, each at its own absolute, unique, non-nested guest mount path. At most 8 per sandbox. Mounts are ready before the sandbox is reported as running; a filesystem that does not exist fails the create with 422 and reason FileSystemNotFound, and a pinned snapshot_id that is not a permanent snapshot fails it with reason FileSystemSnapshotNotFound.
Base ingress origin for this sandbox's current placement.
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":""},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aecf5ffcaa1870951856cdf","clientVersion":"0.0.4088","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/create","slug":"/api-reference/v2/sandboxes/create","pageMetadata":{"title":"Create Sandbox","description":"Create an ephemeral or named sandbox and configure automatic resume.","openapi":"post /sandboxes","og:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-create.png","twitter:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-create.png","href":"/api-reference/v2/sandboxes/create"},"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: \"Create an ephemeral or named sandbox and configure automatic resume.\"\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`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Launch an ephemeral or named sandbox.`}),`\n`,_jsxs(_components.p,{children:[`The response includes the sandbox’s `,_jsx(_components.code,{children:`ingress_endpoint`}),`. Prefer it over constructing `,_jsx(_components.code,{children:`*.sandbox.tensorlake.ai`}),` hostnames yourself when building sandbox-specific URLs in client code.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Set `,_jsx(_components.code,{children:`wait`}),` to `,_jsx(_components.code,{children:`false`}),` to get `,_jsx(_components.code,{children:`202`}),` with the sandbox `,_jsx(_components.code,{children:`pending`}),` as soon as it is durable, instead of waiting for it to run; poll `,_jsx(_components.code,{children:`GET /sandboxes/{id}`}),` or `,_jsx(_components.code,{children:`GET /sandboxes`}),` for readiness. See `,_jsx(_components.a,{href:`/sandboxes/queued-sandboxes`,children:`Non-blocking Sandbox Creation`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Set `,_jsx(_components.code,{children:`max_pending_secs`}),` to bound how long the sandbox may wait for capacity; when it runs out the sandbox terminates with `,_jsx(_components.code,{children:`termination_reason`}),` `,_jsx(_components.code,{children:`no_capacity`}),`. Omit it to wait indefinitely.`]}),`\n`,_jsxs(_components.li,{children:[`Omit `,_jsx(_components.code,{children:`name`}),` to create an ephemeral sandbox.`]}),`\n`,_jsxs(_components.li,{children:[`Set `,_jsx(_components.code,{children:`name`}),` to create a named sandbox that supports suspend and resume.`]}),`\n`,_jsxs(_components.li,{children:[`Set `,_jsx(_components.code,{children:`snapshot_id`}),` to restore from a snapshot, or `,_jsx(_components.code,{children:`image`}),` to boot from a registered Sandbox Image.`]}),`\n`,_jsxs(_components.li,{children:[`For fresh creates, if `,_jsx(_components.code,{children:`resources.disk_mb`}),` is omitted, the sandbox uses the default 10 GB root disk (`,_jsx(_components.code,{children:`10240`}),` MiB).`]}),`\n`,_jsxs(_components.li,{children:[`With `,_jsx(_components.code,{children:`image`}),`, `,_jsx(_components.code,{children:`resources.disk_mb`}),` can be used to grow the root disk at create time (growth-only).`]}),`\n`,_jsxs(_components.li,{children:[`With `,_jsx(_components.code,{children:`snapshot_id`}),` from a filesystem snapshot, `,_jsx(_components.code,{children:`resources.disk_mb`}),` can be used to grow the root disk at create time (growth-only).`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`control-automatic-resume`,children:`Control automatic resume`}),`\n`,_jsxs(_components.p,{children:[`Set the optional boolean `,_jsx(_components.code,{children:`auto_resume`}),` to `,_jsx(_components.code,{children:`false`}),` when creating a named sandbox to prevent proxy traffic from waking it after suspension. Omit it to use the default, `,_jsx(_components.code,{children:`true`}),`. Setting it to `,_jsx(_components.code,{children:`false`}),` without a `,_jsx(_components.code,{children:`name`}),` returns `,_jsx(_components.code,{children:`400 Bad Request`}),`, because ephemeral sandboxes cannot suspend.`]}),`\n`,_jsx(_components.p,{children:`This request creates a running named sandbox with automatic resume disabled; it does not suspend it:`}),`\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:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.tensorlake.ai/sandboxes`}),_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:` '{\"name\":\"parked-agent\",\"auto_resume\":false}'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Read `,_jsx(_components.code,{children:`auto_resume`}),` from `,_jsx(_components.a,{href:`/api-reference/v2/sandboxes/get`,children:`Get Sandbox`}),` after creation. The compact create response does not include it. See `,_jsx(_components.a,{href:`/sandboxes/lifecycle#keep-a-sandbox-suspended`,children:`Keep a sandbox suspended`}),` for the complete lifecycle.`]})]})}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":"Create Sandbox","description":"Create an ephemeral or named sandbox and configure automatic resume.","openapi":"post /sandboxes","og:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-create.png","twitter:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-create.png","href":"/api-reference/v2/sandboxes/create"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Control automatic resume","slug":"control-automatic-resume","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/tensorlake-35e9e726/1373ae293ad67675/plausible.js"],"openApiReferenceData":{"operation":{"tags":["sandboxes"],"summary":"Create a sandbox","description":"Create an ephemeral or named sandbox and configure automatic resume.","operationId":"create_sandbox","requestBody":"4bfd5741-686f-4a42-85fd-cdcd384cb845","responses":{"200":"1ef3bef1-2ca5-48cf-a713-06681d7365f5","202":"8619da02-9db4-45d7-ae39-bb873883c073","400":"74cc5906-ec4b-46cc-8b7f-43e8f6b85dd6","401":"100b512b-477e-468a-9421-86861be987bb","403":"6952aad6-6537-4cab-b836-bd94c64cc782","404":"679d9e79-0c8c-4a3f-b744-cbccb8c4e782","409":"760d9af0-c43e-4f98-ba16-26529920c2a1","422":"8c66bc40-91b2-4eca-bb8f-3b4253062911","500":"dc3097c8-8008-45e2-878a-e69821936cf5"},"method":"post","type":"path","servers":["04da1a97-9ddd-4cf2-9288-7addbccb3159"],"security":["025c894d-b1a2-4786-81ba-c0d9c07e2515"],"path":"/sandboxes","baseUrlOptions":["https://api.tensorlake.ai/"],"title":"Create a sandbox","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"auto_resume":{"type":"boolean","default":true,"description":"Whether proxy traffic may wake this sandbox while suspended. Set false to require explicit resume after suspension. False requires a name; unnamed sandboxes return 400 because they cannot suspend. This setting does not suspend a running sandbox.","uniqueKey":"auto_resume","typeLabel":"boolean"},"image":{"type":"string","description":"Optional sandbox image name to boot from. When omitted, Tensorlake uses the default managed environment. This can also be a registered Sandbox Image name.","uniqueKey":"image","typeLabel":"string"},"resources":{"type":"object","properties":{"cpus":{"type":"number","format":"double","description":"CPU allocation override in cores.","uniqueKey":"resources.cpus","typeLabel":"number\u003cdouble>"},"memory_mb":{"type":"integer","format":"int64","description":"Memory allocation override in MiB.","uniqueKey":"resources.memory_mb","typeLabel":"integer\u003cint64>"},"disk_mb":{"type":"integer","format":"int64","minimum":10240,"maximum":102400,"description":"Ephemeral root filesystem size in MiB. Defaults to 10240 (10 GiB).\nMust be between 10240 and 102400 inclusive. For filesystem snapshots,\nthis can be used with snapshot_id to grow root disk size (growth-only).\n","uniqueKey":"resources.disk_mb","typeLabel":"integer\u003cint64>"},"gpus":{"type":"array","items":{"type":"object","required":["count","model"],"properties":{"count":{"type":"integer","format":"int32","minimum":1,"isRequired":true,"uniqueKey":"resources.gpus.items.[INDEX].count","typeLabel":"integer\u003cint32>"},"model":{"type":"string","isRequired":true,"uniqueKey":"resources.gpus.items.[INDEX].model","typeLabel":"string"}},"uniqueKey":"resources.gpus.items.[INDEX]","typeLabel":"object"},"description":"Optional GPU allocation override.","uniqueKey":"resources.gpus","typeLabel":"object[]"}},"uniqueKey":"resources","typeLabel":"object"},"secret_names":{"type":"array","description":"Secret names to inject into the sandbox.","items":{"type":"string","uniqueKey":"secret_names.items.[INDEX]","typeLabel":"string"},"uniqueKey":"secret_names","typeLabel":"string[]"},"timeout_secs":{"type":"integer","format":"int64","minimum":0,"description":"Sandbox timeout in seconds. `0` requests the maximum allowed by your plan.\nPlan maximums: Free unverified 3600 (1h), Free verified 7200 (2h),\nOn-Demand 86400 (24h). See [tensorlake.ai/pricing](https://www.tensorlake.ai/pricing) for higher limits on committed plans.\n","uniqueKey":"timeout_secs","typeLabel":"integer\u003cint64>"},"entrypoint":{"type":"array","description":"Optional command to run when the sandbox starts.","items":{"type":"string","uniqueKey":"entrypoint.items.[INDEX]","typeLabel":"string"},"uniqueKey":"entrypoint","typeLabel":"string[]"},"network":{"type":"object","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"},"snapshot_id":{"type":"string","description":"Snapshot to restore from.","uniqueKey":"snapshot_id","typeLabel":"string"},"allow_unauthenticated_access":{"type":"boolean","description":"Allow sandbox ingress to route requests without validating auth credentials. The legacy request alias `allow_unauthenticated_proxy_access` is also accepted.","uniqueKey":"allow_unauthenticated_access","typeLabel":"boolean"},"exposed_ports":{"type":"array","description":"Additional sandbox ports that public ingress may route to. When omitted, only the management port `9501` is routable.","items":{"type":"integer","format":"int32","minimum":1,"maximum":65535,"uniqueKey":"exposed_ports.items.[INDEX]","typeLabel":"integer\u003cint32>"},"uniqueKey":"exposed_ports","typeLabel":"integer\u003cint32>[]"},"template_id":{"type":"string","description":"Template identifier to associate with the launched sandbox.","uniqueKey":"template_id","typeLabel":"string"},"name":{"type":"string","description":"Optional user-provided sandbox name. When set, the sandbox is named and supports suspend/resume. When omitted, the sandbox is ephemeral.","uniqueKey":"name","typeLabel":"string"},"wait":{"type":"boolean","default":true,"description":"`false` returns `202` with the sandbox in `pending` as soon as it is durable, instead of waiting for it to run. Poll `GET /sandboxes/{id}` or `GET /sandboxes` for readiness.","uniqueKey":"wait","typeLabel":"boolean"},"max_pending_secs":{"type":"integer","minimum":0,"description":"Longest the sandbox may wait for capacity, in seconds. When it runs out while the sandbox is still waiting for a host, the sandbox is terminated with `termination_reason` `no_capacity` and its last `pending_reason`. `0` fails at once if the sandbox cannot be placed. Omit to wait indefinitely. Bare-metal hosts take up to 20 minutes to boot, so use 1800 or more for capacity waits.","uniqueKey":"max_pending_secs","typeLabel":"integer"},"file_systems":{"type":"array","description":"Filesystems to mount into the sandbox, each at its own absolute, unique, non-nested guest mount path. At most 8 per sandbox. Mounts are ready before the sandbox is reported as running; a filesystem that does not exist fails the create with `422` and reason `FileSystemNotFound`, and a pinned `snapshot_id` that is not a permanent snapshot fails it with reason `FileSystemSnapshotNotFound`.","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[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"auto_resume":true,"image":"\u003cstring>","resources":{"cpus":123,"memory_mb":123,"disk_mb":56320,"gpus":[{"count":2,"model":"\u003cstring>"}]},"secret_names":["\u003cstring>"],"timeout_secs":1,"entrypoint":["\u003cstring>"],"network":{"allow_internet_access":true,"allow_out":["\u003cstring>"],"deny_out":["\u003cstring>"]},"snapshot_id":"\u003cstring>","allow_unauthenticated_access":true,"exposed_ports":[32768],"template_id":"\u003cstring>","name":"\u003cstring>","wait":true,"max_pending_secs":1,"file_systems":[{"file_system_id":"\u003cstring>","mount_path":"\u003cstring>","read_only":false,"prefetch":false,"snapshot_id":"\u003cstring>"}]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"1ef3bef1-2ca5-48cf-a713-06681d7365f5":{"description":"Sandbox created successfully","content":{"application/json":{"schema":{"type":"object","required":["sandbox_id","status"],"properties":{"sandbox_id":{"type":"string","isRequired":true,"uniqueKey":"sandbox_id","typeLabel":"string"},"status":{"type":"string","enum":["pending","running","snapshotting","suspending","suspended","terminated","resume_failed"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"pending_reason":{"type":"string","enum":["scheduling","waiting_for_container","no_executors_available","no_resources_available","pool_at_capacity","max_capacity_reached","no_executor_for_snapshot_location"],"uniqueKey":"pending_reason","typeLabel":"enum\u003cstring>"},"ingress_endpoint":{"oneOf":[{"type":"string","description":"Base ingress origin for this sandbox's current placement.","uniqueKey":"ingress_endpoint.oneOf.0","typeLabel":"string"},{"type":"null","description":"Base ingress origin for this sandbox's current placement.","uniqueKey":"ingress_endpoint.oneOf.1","typeLabel":"null"}],"uniqueKey":"ingress_endpoint","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"sandbox_id":"\u003cstring>","status":"pending","pending_reason":"scheduling","ingress_endpoint":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"8619da02-9db4-45d7-ae39-bb873883c073":{"description":"Sandbox accepted (`wait` was `false`); it is pending and will start when capacity is available","content":{"application/json":{"schema":{"type":"object","required":["sandbox_id","state"],"properties":{"sandbox_id":{"type":"string","isRequired":true,"uniqueKey":"sandbox_id","typeLabel":"string"},"state":{"type":"string","enum":["pending"],"isRequired":true,"uniqueKey":"state","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","uniqueKey":"name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"name.oneOf.1","typeLabel":"null"}],"uniqueKey":"name","typeLabel":"string | null"},"pending_reason":{"type":"string","enum":["scheduling","waiting_for_container","no_executors_available","no_resources_available","pool_at_capacity","max_capacity_reached","no_executor_for_snapshot_location"],"uniqueKey":"pending_reason","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"sandbox_id":"\u003cstring>","state":"pending","name":"\u003cstring>","pending_reason":"scheduling"}}},"exampleType":"generated"}},"exampleType":"generated"},"74cc5906-ec4b-46cc-8b7f-43e8f6b85dd6":{"description":"Invalid sandbox creation request, including auto_resume set to false without a name","content":{"text/plain":{}},"exampleType":"generated"},"100b512b-477e-468a-9421-86861be987bb":{"description":"Unauthorized. Invalid or missing credentials","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"6952aad6-6537-4cab-b836-bd94c64cc782":{"description":"Forbidden. You do not have permission to access this resource","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"679d9e79-0c8c-4a3f-b744-cbccb8c4e782":{"description":"Referenced snapshot was not found","content":{"text/plain":{}},"exampleType":"generated"},"760d9af0-c43e-4f98-ba16-26529920c2a1":{"description":"A sandbox with the requested name already exists in this namespace","content":{"text/plain":{}},"exampleType":"generated"},"8c66bc40-91b2-4eca-bb8f-3b4253062911":{"description":"Invalid properties in request body","content":{"text/plain":{}},"exampleType":"generated"},"dc3097c8-8008-45e2-878a-e69821936cf5":{"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.919Z","originalFileLocation":"api-reference/v2/sandboxes/create.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=\"Create an ephemeral or named sandbox and configure automatic resume.\">\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/create\">\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-create.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-create.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/create\">\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/create.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/create#webpage\",\"url\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/create\",\"name\":\"Create Sandbox\",\"description\":\"Create an ephemeral or named sandbox and configure automatic resume.\",\"dateModified\":\"2026-10-28T05:58:04.919Z\",\"isPartOf\":{\"@id\":\"https://docs.tensorlake.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/create#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/create#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Tensorlake\",\"item\":\"https://docs.tensorlake.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create Sandbox\",\"item\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/create\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/create#apireference\",\"headline\":\"Create Sandbox\",\"name\":\"Create Sandbox\",\"description\":\"Create an ephemeral or named sandbox and configure automatic resume.\",\"url\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/create\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/create#webpage\"},\"image\":\"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-create.png\",\"dateModified\":\"2026-10-28T05:58:04.919Z\",\"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","description":"Tensorlake API Reference","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","description":"List active sandboxes by status and archived sandboxes after termination.","sidebarTitle":"List Sandboxes","openapi":"get /sandboxes","href":"/api-reference/v2/sandboxes/list"},{"title":"Get Sandbox","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}","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_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-5FCzAcfS.js","utils-SLtAG4EZ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-2DZi8ZMu.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D7J3nkzE.js","snippetPresets-D0Alv0AH.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BI4qNJ2c.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BD3uyr8j.js","shallow-D8iEBr5z.js","getApiPlaygroundDisplay-CgNP4lzR.js","CodeSnippet-CX-QHuMs.js","CodeSnippets-VlXE-ZUf.js","Page-D9ithiIZ.js","getPastedJson-DYNQkZ1M.js","icon-CzacdwOi.js","MethodPill-2JVqoYKi.js","DuplicateIcon-_xVXs-U8.js","createIcon-BRHrweLo.js","DynamicMarkdown-mQG_iQiE.js","SectionHeading-DMpJzv8f.js","axios-vUo_bRtp.js","Markdown-5FGIym-8.js","clsx-D-TRO5q5.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CdrJecqK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CHlcWBLM.js"]}