Save a sandbox's system files and storage as a snapshot.
A stopped sandbox (fully saved, no operation in progress): synchronous (201) and quick, since no data is copied. A running sandbox, where the server allows live snapshots: 202 with the snapshot pending; the sandbox’s files are frozen briefly while they are copied, and the snapshot becomes ready (or failed) once the copy is uploaded. Unless rootOnly is true, both system files and storage are saved, including credentials under HOME (/data/home). Memory and running programs are not included. API keys: needs one of the scopes images:write.
POST
/
v1
/
machines
/
{id}
/
snapshots
Save a sandbox's system files and storage as a snapshot.
Client-generated key, 1-200 printable ASCII characters, scoped to the
user. Same key and same method+path+body returns the original response;
same key with a different request returns 409 idempotency_conflict.
Records are kept for 7 days.
Saved to fork its source (instabox fork, when the native fork cannot run). For a free source, the server records its max-run window as activity extended it, and a sandbox the same user creates from this snapshot in the next 30 minutes starts with that window, as a native fork does. Names no window.
Response
The snapshot (of a stopped sandbox).
A saved copy of a sandbox (software and files). New sandboxes can be created from it. It belongs to its source sandbox's org: every member of the org sees, uses and deletes it.
The logical size of the system disk a sandbox created from it gets (its provisioned capacity), not the bytes stored: a snapshot is saved sparse and compressed.
The logical size of the storage disk (/data) a sandbox created from it gets, not the bytes stored (the saved data is sparse and compressed); absent for system-files-only snapshots. Sandboxes created from it get at least this much storage.
The size a sandbox created from this snapshot gets when the create names none: the caller's plan default for vCPUs and memory (limits.machineSpec, 4 vCPU / 8 GiB on api.instabox.sh), not the source sandbox's size, so a snapshot of a 2/4 box creates a 4/8 one unless the create passes vcpus and memMiB; plus the storage (/data) and system disk sizes the snapshot was saved with, which a created sandbox gets at least. Absent when its template is unknown.
The source sandbox's Linux user (Machine.guestUser), which a sandbox created from this snapshot keeps unless the create names another. dev for snapshots of sandboxes from older templates.
Who can create from the snapshot (docs/community-templates.md): private (the default, its org's members), community (every signed-in account) or official (listed next to the built-in templates). Absent on older servers: treat as private. Handlers do not set community or official yet.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"InstaBox","description":"A Linux machine of its own in the cloud for every agent.","colors":{"primary":"#0A0A0A","light":"#FAFAFA","dark":"#0A0A0A"},"logo":{"light":"https://instacloud.mintlify.site/docs/logo/light.svg","dark":"https://instacloud.mintlify.site/docs/logo/dark.svg","href":"https://instabox.sh"},"favicon":"https://mintlify.s3.us-west-1.amazonaws.com/instacloud/instabox/favicon.svg","appearance":{"default":"dark"},"navbar":{"links":[{"href":"https://instabox.sh/pricing","label":"Pricing"},{"href":"https://instabox.sh/changelog","label":"Changelog"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.instabox.sh"}},"footer":{"socials":{"github":"https://github.com/InsForge"}},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","chatgpt","claude","cursor","vscode","mcp"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"instacloud","hasAudioNarration":false,"actualSubdomain":"instacloud","customDomains":["instabox.sh"],"gitSource":{"type":"github","owner":"insforge","repo":"instabox","deployBranch":"main","contentDirectory":"docs-site","isPrivate":true,"mountPath":"instabox","label":"","_id":"6aed4ce60814409ea4a899b5"},"feedback":{"thumbs":true,"contextualFeedback":{"allowEmail":false}},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af24f2490cec7c60d18d067","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"API reference","count":86},{"language":"default","tag":"Documentation","count":34},{"language":"default","tag":"Machines","count":15},{"language":"default","tag":"Use cases","count":9},{"language":"default","tag":"SDK reference","count":8},{"language":"default","tag":"Lifecycle","count":8},{"language":"default","tag":"Secrets","count":7},{"language":"default","tag":"Account","count":6},{"language":"default","tag":"TypeScript","count":6},{"language":"default","tag":"Get started","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot","slug":"/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot","pageMetadata":{"title":"Save a sandbox's system files and storage as a snapshot.","description":"A stopped sandbox (fully saved, no operation in progress): synchronous (`201`) and quick, since no data is copied. A running sandbox, where the server allows live snapshots: `202` with the snapshot `pending`; the sandbox's files are frozen briefly while they are copied, and the snapshot becomes `ready` (or `failed`) once the copy is uploaded. Unless `rootOnly` is true, both system files and storage are saved, including credentials under HOME (/data/home). Memory and running programs are not included. API keys: needs one of the scopes `images:write`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/snapshots","href":"/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"A stopped sandbox (fully saved, no operation in progress): synchronous (\", _jsx(_components.code, {\n children: \"201\"\n }), \") and quick, since no data is copied. A running sandbox, where the server allows live snapshots: \", _jsx(_components.code, {\n children: \"202\"\n }), \" with the snapshot \", _jsx(_components.code, {\n children: \"pending\"\n }), \"; the sandbox’s files are frozen briefly while they are copied, and the snapshot becomes \", _jsx(_components.code, {\n children: \"ready\"\n }), \" (or \", _jsx(_components.code, {\n children: \"failed\"\n }), \") once the copy is uploaded. Unless \", _jsx(_components.code, {\n children: \"rootOnly\"\n }), \" is true, both system files and storage are saved, including credentials under HOME (/data/home). Memory and running programs are not included. API keys: needs one of the scopes \", _jsx(_components.code, {\n children: \"images:write\"\n }), \".\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Save a sandbox's system files and storage as a snapshot.","description":"A stopped sandbox (fully saved, no operation in progress): synchronous (`201`) and quick, since no data is copied. A running sandbox, where the server allows live snapshots: `202` with the snapshot `pending`; the sandbox's files are frozen briefly while they are copied, and the snapshot becomes `ready` (or `failed`) once the copy is uploaded. Unless `rootOnly` is true, both system files and storage are saved, including credentials under HOME (/data/home). Memory and running programs are not included. API keys: needs one of the scopes `images:write`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/snapshots","href":"/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["snapshots"],"operationId":"createSnapshot","summary":"Save a sandbox's system files and storage as a snapshot.","security":["7dcab6c2-791a-439d-9613-e0fc3cbf7dce","54d32ddb-7d47-450d-8351-0242a3cb91d8","3fd66a2b-a31f-447c-a6c6-624e361b0424"],"description":"A stopped sandbox (fully saved, no operation in progress): synchronous (`201`) and quick, since no data is copied. A running sandbox, where the server allows live snapshots: `202` with the snapshot `pending`; the sandbox's files are frozen briefly while they are copied, and the snapshot becomes `ready` (or `failed`) once the copy is uploaded. Unless `rootOnly` is true, both system files and storage are saved, including credentials under HOME (/data/home). Memory and running programs are not included. API keys: needs one of the scopes `images:write`.","parameters":["da6b9887-3f75-4e89-8425-e3718269e31f"],"requestBody":"a603cf70-5371-48a4-a7c7-74a829f371db","responses":{"201":"fc257853-5d5f-4df5-9be2-1d0d42d0e6da","202":"29f4e4c9-54fb-4367-90b0-fada10f2e3ab","400":"f0673d5d-1ef5-48d5-b48f-af52f64bbe2a","401":"1fa0b6bb-bc3b-4351-99c3-931f81a152a2","404":"36a26c31-8fb7-41ba-baa7-323e93f1d601","409":"7f434b08-394f-4809-9904-83766bfd09ea","429":"5b0520fb-9e08-44ee-b516-f09ab26f81bb","500":"2bcf3391-f9ff-420e-9bf0-178d601cd2c1","503":"ddd58b24-e9b6-434f-b7d2-ae266ab7c23f"},"method":"post","type":"path","servers":["e2c665bb-4b53-46fa-8dd3-3dba6e3ac4a8"],"path":"/v1/machines/{id}/snapshots","baseUrlOptions":["https://api.instabox.sh"],"title":"Save a sandbox's system files and storage as a snapshot.","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"da6b9887-3f75-4e89-8425-e3718269e31f":{"name":"Idempotency-Key","in":"header","required":true,"description":"Client-generated key, 1-200 printable ASCII characters, scoped to the\nuser. Same key and same method+path+body returns the original response;\nsame key with a different request returns `409 idempotency_conflict`.\nRecords are kept for 7 days.\n","schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[\\x21-\\x7e]+$","isRequired":true,"description":"Client-generated key, 1-200 printable ASCII characters, scoped to the\nuser. Same key and same method+path+body returns the original response;\nsame key with a different request returns `409 idempotency_conflict`.\nRecords are kept for 7 days.\n","uniqueKey":"","typeLabel":"string"}},"0ba10eae-4c77-458e-8eae-e50ca8f11c25":{"name":"id","in":"path","required":true,"description":"Sandbox ID (`m_` + 26 lowercase base32 characters).","schema":{"type":"string","pattern":"^m_[a-z2-7]{26}$","isRequired":true,"description":"Sandbox ID (`m_` + 26 lowercase base32 characters).","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Unique among the caller's snapshots; 1-63 of a-z, 0-9, '-', starting with a letter or digit.","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"description":{"type":"string","uniqueKey":"description","typeLabel":"string"},"rootOnly":{"type":"boolean","default":false,"description":"Save the system files only, not the storage (`/data`).","uniqueKey":"rootOnly","typeLabel":"boolean"},"forFork":{"type":"boolean","default":false,"description":"Saved to fork its source (`instabox fork`, when the native fork cannot run). For a free source, the server records its max-run window as activity extended it, and a sandbox the same user creates from this snapshot in the next 30 minutes starts with that window, as a native fork does. Names no window.","uniqueKey":"forFork","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","description":"\u003cstring>","rootOnly":false,"forFork":false}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"fc257853-5d5f-4df5-9be2-1d0d42d0e6da":{"description":"The snapshot (of a stopped sandbox).","content":{"application/json":{"schema":{"type":"object","description":"A saved copy of a sandbox (software and files). New sandboxes can be created from it. It belongs to its source sandbox's org: every member of the org sees, uses and deletes it.","required":["id","name","orgId","sourceMachineId","sourceSnapshotSeq","template","rootSizeBytes","createdAt","status"],"properties":{"id":{"type":"string","description":"`sn_...` (`im_...` for older snapshots).","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"name":{"type":"string","description":"Unique among the org's live snapshots.","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"orgId":{"type":"string","description":"The org the snapshot belongs to (its source sandbox's).","isRequired":true,"uniqueKey":"orgId","typeLabel":"string"},"sourceMachineId":{"type":"string","isRequired":true,"uniqueKey":"sourceMachineId","typeLabel":"string"},"sourceSnapshotSeq":{"type":"integer","format":"int64","description":"The source sandbox's saved state (`storage.snapshotSeq`) this snapshot was taken from; 0 for a live snapshot of a sandbox that was never stopped.","isRequired":true,"uniqueKey":"sourceSnapshotSeq","typeLabel":"integer\u003cint64>"},"status":{"type":"string","enum":["pending","ready","failed"],"description":"`ready` can be used. A snapshot of a running sandbox is `pending` while it uploads (its sizes are the sandbox's until then), then `ready` or `failed`.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"template":{"type":"object","required":["id","version","digest"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"template.id","typeLabel":"string"},"version":{"type":"string","isRequired":true,"uniqueKey":"template.version","typeLabel":"string"},"digest":{"type":"string","isRequired":true,"uniqueKey":"template.digest","typeLabel":"string"},"kernel":{"type":"string","description":"The guest kernel the sandbox is pinned to, `sha256:\u003chex>`; absent: the host's default.","uniqueKey":"template.kernel","typeLabel":"string"}},"isRequired":true,"uniqueKey":"template","typeLabel":"object"},"rootSizeBytes":{"type":"integer","format":"int64","description":"The logical size of the system disk a sandbox created from it gets (its provisioned capacity), not the bytes stored: a snapshot is saved sparse and compressed.","isRequired":true,"uniqueKey":"rootSizeBytes","typeLabel":"integer\u003cint64>"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"description":{"type":"string","uniqueKey":"description","typeLabel":"string"},"error":{"type":"string","description":"Why a `failed` snapshot failed.","uniqueKey":"error","typeLabel":"string"},"dataSizeBytes":{"type":"integer","format":"int64","description":"The logical size of the storage disk (`/data`) a sandbox created from it gets, not the bytes stored (the saved data is sparse and compressed); absent for system-files-only snapshots. Sandboxes created from it get at least this much storage.","uniqueKey":"dataSizeBytes","typeLabel":"integer\u003cint64>"},"exclusiveBytes":{"type":"integer","format":"int64","deprecated":true,"description":"No longer computed; servers leave it out. (Was the stored bytes only this snapshot references.)","uniqueKey":"exclusiveBytes","typeLabel":"integer\u003cint64>"},"defaultSpec":{"type":"object","description":"The size a sandbox created from this snapshot gets when the create names none: the caller's plan default for vCPUs and memory (`limits.machineSpec`, 4 vCPU / 8 GiB on api.instabox.sh), not the source sandbox's size, so a snapshot of a 2/4 box creates a 4/8 one unless the create passes `vcpus` and `memMiB`; plus the storage (`/data`) and system disk sizes the snapshot was saved with, which a created sandbox gets at least. Absent when its template is unknown.","required":["vcpus","memMiB","persistentDiskGiB"],"properties":{"vcpus":{"type":"integer","isRequired":true,"uniqueKey":"defaultSpec.vcpus","typeLabel":"integer"},"memMiB":{"type":"integer","description":"Memory in MiB.","isRequired":true,"uniqueKey":"defaultSpec.memMiB","typeLabel":"integer"},"persistentDiskGiB":{"type":"integer","description":"Disk (`/data`) size in GiB.","isRequired":true,"uniqueKey":"defaultSpec.persistentDiskGiB","typeLabel":"integer"},"rootDiskGiB":{"type":"integer","description":"System disk size in GiB, set by the template (only admins change it); absent: the template's.","uniqueKey":"defaultSpec.rootDiskGiB","typeLabel":"integer"}},"uniqueKey":"defaultSpec","typeLabel":"object"},"guestUser":{"type":"string","description":"The source sandbox's Linux user (`Machine.guestUser`), which a sandbox created from this snapshot keeps unless the create names another. `dev` for snapshots of sandboxes from older templates.","uniqueKey":"guestUser","typeLabel":"string"},"visibility":{"type":"string","enum":["private","community","official"],"description":"Who can create from the snapshot (docs/community-templates.md): `private` (the default, its org's members), `community` (every signed-in account) or `official` (listed next to the built-in templates). Absent on older servers: treat as private. Handlers do not set community or official yet.","uniqueKey":"visibility","typeLabel":"enum\u003cstring>"},"publishedAt":{"type":"string","format":"date-time","description":"When the visibility became community or official.","uniqueKey":"publishedAt","typeLabel":"string\u003cdate-time>"},"publisherLogin":{"type":"string","description":"Who shared or published it.","uniqueKey":"publisherLogin","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"\u003cstring>","name":"\u003cstring>","orgId":"\u003cstring>","sourceMachineId":"\u003cstring>","sourceSnapshotSeq":123,"status":"pending","template":{"id":"\u003cstring>","version":"\u003cstring>","digest":"\u003cstring>","kernel":"\u003cstring>"},"rootSizeBytes":123,"createdAt":"2023-11-07T05:31:56Z","description":"\u003cstring>","error":"\u003cstring>","dataSizeBytes":123,"exclusiveBytes":123,"defaultSpec":{"vcpus":123,"memMiB":123,"persistentDiskGiB":123,"rootDiskGiB":123},"guestUser":"\u003cstring>","visibility":"private","publishedAt":"2023-11-07T05:31:56Z","publisherLogin":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"29f4e4c9-54fb-4367-90b0-fada10f2e3ab":{"description":"The snapshot, pending (of a running sandbox, saved live).","content":{"application/json":{"schema":{"type":"object","description":"A saved copy of a sandbox (software and files). New sandboxes can be created from it. It belongs to its source sandbox's org: every member of the org sees, uses and deletes it.","required":["id","name","orgId","sourceMachineId","sourceSnapshotSeq","template","rootSizeBytes","createdAt","status"],"properties":{"id":{"type":"string","description":"`sn_...` (`im_...` for older snapshots).","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"name":{"type":"string","description":"Unique among the org's live snapshots.","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"orgId":{"type":"string","description":"The org the snapshot belongs to (its source sandbox's).","isRequired":true,"uniqueKey":"orgId","typeLabel":"string"},"sourceMachineId":{"type":"string","isRequired":true,"uniqueKey":"sourceMachineId","typeLabel":"string"},"sourceSnapshotSeq":{"type":"integer","format":"int64","description":"The source sandbox's saved state (`storage.snapshotSeq`) this snapshot was taken from; 0 for a live snapshot of a sandbox that was never stopped.","isRequired":true,"uniqueKey":"sourceSnapshotSeq","typeLabel":"integer\u003cint64>"},"status":{"type":"string","enum":["pending","ready","failed"],"description":"`ready` can be used. A snapshot of a running sandbox is `pending` while it uploads (its sizes are the sandbox's until then), then `ready` or `failed`.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"template":{"type":"object","required":["id","version","digest"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"template.id","typeLabel":"string"},"version":{"type":"string","isRequired":true,"uniqueKey":"template.version","typeLabel":"string"},"digest":{"type":"string","isRequired":true,"uniqueKey":"template.digest","typeLabel":"string"},"kernel":{"type":"string","description":"The guest kernel the sandbox is pinned to, `sha256:\u003chex>`; absent: the host's default.","uniqueKey":"template.kernel","typeLabel":"string"}},"isRequired":true,"uniqueKey":"template","typeLabel":"object"},"rootSizeBytes":{"type":"integer","format":"int64","description":"The logical size of the system disk a sandbox created from it gets (its provisioned capacity), not the bytes stored: a snapshot is saved sparse and compressed.","isRequired":true,"uniqueKey":"rootSizeBytes","typeLabel":"integer\u003cint64>"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"description":{"type":"string","uniqueKey":"description","typeLabel":"string"},"error":{"type":"string","description":"Why a `failed` snapshot failed.","uniqueKey":"error","typeLabel":"string"},"dataSizeBytes":{"type":"integer","format":"int64","description":"The logical size of the storage disk (`/data`) a sandbox created from it gets, not the bytes stored (the saved data is sparse and compressed); absent for system-files-only snapshots. Sandboxes created from it get at least this much storage.","uniqueKey":"dataSizeBytes","typeLabel":"integer\u003cint64>"},"exclusiveBytes":{"type":"integer","format":"int64","deprecated":true,"description":"No longer computed; servers leave it out. (Was the stored bytes only this snapshot references.)","uniqueKey":"exclusiveBytes","typeLabel":"integer\u003cint64>"},"defaultSpec":{"type":"object","description":"The size a sandbox created from this snapshot gets when the create names none: the caller's plan default for vCPUs and memory (`limits.machineSpec`, 4 vCPU / 8 GiB on api.instabox.sh), not the source sandbox's size, so a snapshot of a 2/4 box creates a 4/8 one unless the create passes `vcpus` and `memMiB`; plus the storage (`/data`) and system disk sizes the snapshot was saved with, which a created sandbox gets at least. Absent when its template is unknown.","required":["vcpus","memMiB","persistentDiskGiB"],"properties":{"vcpus":{"type":"integer","isRequired":true,"uniqueKey":"defaultSpec.vcpus","typeLabel":"integer"},"memMiB":{"type":"integer","description":"Memory in MiB.","isRequired":true,"uniqueKey":"defaultSpec.memMiB","typeLabel":"integer"},"persistentDiskGiB":{"type":"integer","description":"Disk (`/data`) size in GiB.","isRequired":true,"uniqueKey":"defaultSpec.persistentDiskGiB","typeLabel":"integer"},"rootDiskGiB":{"type":"integer","description":"System disk size in GiB, set by the template (only admins change it); absent: the template's.","uniqueKey":"defaultSpec.rootDiskGiB","typeLabel":"integer"}},"uniqueKey":"defaultSpec","typeLabel":"object"},"guestUser":{"type":"string","description":"The source sandbox's Linux user (`Machine.guestUser`), which a sandbox created from this snapshot keeps unless the create names another. `dev` for snapshots of sandboxes from older templates.","uniqueKey":"guestUser","typeLabel":"string"},"visibility":{"type":"string","enum":["private","community","official"],"description":"Who can create from the snapshot (docs/community-templates.md): `private` (the default, its org's members), `community` (every signed-in account) or `official` (listed next to the built-in templates). Absent on older servers: treat as private. Handlers do not set community or official yet.","uniqueKey":"visibility","typeLabel":"enum\u003cstring>"},"publishedAt":{"type":"string","format":"date-time","description":"When the visibility became community or official.","uniqueKey":"publishedAt","typeLabel":"string\u003cdate-time>"},"publisherLogin":{"type":"string","description":"Who shared or published it.","uniqueKey":"publisherLogin","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"\u003cstring>","name":"\u003cstring>","orgId":"\u003cstring>","sourceMachineId":"\u003cstring>","sourceSnapshotSeq":123,"status":"pending","template":{"id":"\u003cstring>","version":"\u003cstring>","digest":"\u003cstring>","kernel":"\u003cstring>"},"rootSizeBytes":123,"createdAt":"2023-11-07T05:31:56Z","description":"\u003cstring>","error":"\u003cstring>","dataSizeBytes":123,"exclusiveBytes":123,"defaultSpec":{"vcpus":123,"memMiB":123,"persistentDiskGiB":123,"rootDiskGiB":123},"guestUser":"\u003cstring>","visibility":"private","publishedAt":"2023-11-07T05:31:56Z","publisherLogin":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"f0673d5d-1ef5-48d5-b48f-af52f64bbe2a":{"description":"`bad_request`: invalid input or missing Idempotency-Key. `unknown_field`: a body key that is no field of the request's schema (create, fork, restore, start, stop, suspend, resume, wake and `PATCH` of a sandbox); the message names it and the closest known field (`did you mean \"templateId\"?`) and lists the known ones. Nothing is changed. `spec_not_allowed`: sandbox sizes are fixed (4 vCPUs, 8 GiB memory by default; `limits.machineSpec`) and the request names another size (create, create from a snapshot), or someone other than an admin tries to grow the disk of a free sandbox or of a sandbox whose owner may not resize disks. On `PATCH /v1/machines/{id}` it is also a `vcpus`/`memMiB` size the workspace's plan does not offer (the message lists the plan's sizes) or any new size for a free sandbox, whose size is fixed. The message gives the size the sandbox gets; leaving the size fields out always works. `invalid_guest_user`: a create's `guestUser` is not a valid Linux user name or is reserved (`root`, `instabox`, the Debian base system's users and groups such as `sudo`, `systemd-*`). `vault_unavailable` (503): a Vault item was sealed under a master key this server does not have (docs/vault.md).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","requestId","retryable","operationId"],"properties":{"code":{"type":"string","description":"Machine-readable code. HTTP status per code is fixed.","enum":["unauthenticated","missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","permission_denied","not_found","bad_request","feature_disabled","unknown_field","operation_conflict","idempotency_conflict","machine_not_running","restore_unavailable","delete_confirmation_required","fork_unavailable","machine_cooldown","max_run_disabled","desktop_not_running","disk_too_small","grow_needs_stop","resize_restart_off","private_ports_unavailable","quota_exceeded","no_capacity","host_unavailable","metrics_unavailable","restore_failed","internal","authorization_pending","slow_down","expired_token","access_denied","invalid_grant","invite_required","invite_invalid","invite_email_mismatch","api_key_expired","api_key_revoked","insufficient_scope","orca_unsupported","runtime_not_ready","spec_not_allowed","template_not_allowed","template_limit","kernel_unavailable","template_unavailable","invalid_guest_user","vault_unavailable","vault_retired","credit_exhausted","spend_limit_reached","subscription_required","payment_method_required","early_allowance_ended","rate_limited","concurrency_limit","payment_failed","missing_parent","not_a_file","no_space","too_large","data_disk_not_browsable","support_unavailable","host_oom","vmm_crashed","guest_reboot_loop"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"retryable":{"type":"boolean","description":"True if the same request may succeed later.","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"operationId":{"oneOf":[{"type":"string","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.operationId","typeLabel":"string | null"},"reason":{"type":"string","description":"The same as `code` for credential errors (401 `missing_key`, `malformed_key`, `invalid_key`, `expired_key`, `revoked_key`, `session_expired`; 403 `missing_scope`). For 409 `machine_cooldown`, the automatic abuse check whose pause locks the sandbox: `abuse_egress_blocklist` (it tried to connect to a blocked destination on the egress blocklist, not a DNS lookup), `abuse_network_flows` (scanning or attack traffic), `abuse_cpu` (mining); absent for a max-run cooldown. For a retryable 409 `fork_unavailable`, why the source's host cannot take the fork: `source_host_unavailable` (it takes no new sandboxes) or `source_host_full` (no room now). Absent on other errors and from older servers.","enum":["missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","abuse_egress_blocklist","abuse_network_flows","abuse_cpu","source_host_unavailable","source_host_full"],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","description":"The next step that fixes the error (credential errors). Absent otherwise.","uniqueKey":"error.hint","typeLabel":"string"},"docs":{"type":"string","format":"uri","description":"A URL documenting the error (credential errors). Absent otherwise.","uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"docs_url":{"type":"string","format":"uri","description":"The code's entry on the errors page, on every error response: https://instabox.sh/docs/errors#\u003ccode> with underscores as dashes (e.g. #credit-exhausted): its HTTP status, whether to retry and what to do. Snake case, unlike the other fields. Absent from a failed operation's `error` and from older servers.","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"requiredScopes":{"type":"array","items":{"type":"string","uniqueKey":"error.requiredScopes.items.[INDEX]","typeLabel":"string"},"description":"For `missing_scope`, the scopes the route accepts; the key needs one of them.","uniqueKey":"error.requiredScopes","typeLabel":"string[]"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"Seconds to wait before trying again: a retryable `no_capacity` (60, as a 503 or on a failed operation's `error`), `rate_limited`, `machine_cooldown` and agent sign-up `quota_exceeded`. An error response also sends it as the `Retry-After` header; a failed operation's `error` has only this field. Absent otherwise and from older servers.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"},"at":{"type":"string","format":"date-time","description":"When it happened, for a stop the platform found (a sandbox's `lastError` with code `host_oom`, `vmm_crashed` or `guest_reboot_loop`; `hint` says what to do). The next successful start clears the error. Absent otherwise and from older servers.","uniqueKey":"error.at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthenticated","message":"\u003cstring>","requestId":"\u003cstring>","retryable":true,"operationId":"\u003cstring>","reason":"missing_key","hint":"\u003cstring>","docs":"\u003cstring>","docs_url":"\u003cstring>","requiredScopes":["\u003cstring>"],"retryAfterSeconds":2,"at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"1fa0b6bb-bc3b-4351-99c3-931f81a152a2":{"description":"A credential 401 has its own code: `missing_key`, `malformed_key`, `invalid_key`, `expired_key`, `revoked_key` or `session_expired`, with `hint` and `docs` (older servers sent `unauthenticated`, `api_key_expired` or `api_key_revoked`). Other 401s (refresh tokens, tickets) are `unauthenticated`. For a missing or bad API key or access token the message ends with how to get a key (session and refresh-token 401s say to sign in again instead), e.g. `create an API key at https://dashboard.instabox.sh/dashboard/api-keys and send it as \"Authorization: Bearer \u003ckey>\" or \"X-API-Key: \u003ckey>\"`.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","requestId","retryable","operationId"],"properties":{"code":{"type":"string","description":"Machine-readable code. HTTP status per code is fixed.","enum":["unauthenticated","missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","permission_denied","not_found","bad_request","feature_disabled","unknown_field","operation_conflict","idempotency_conflict","machine_not_running","restore_unavailable","delete_confirmation_required","fork_unavailable","machine_cooldown","max_run_disabled","desktop_not_running","disk_too_small","grow_needs_stop","resize_restart_off","private_ports_unavailable","quota_exceeded","no_capacity","host_unavailable","metrics_unavailable","restore_failed","internal","authorization_pending","slow_down","expired_token","access_denied","invalid_grant","invite_required","invite_invalid","invite_email_mismatch","api_key_expired","api_key_revoked","insufficient_scope","orca_unsupported","runtime_not_ready","spec_not_allowed","template_not_allowed","template_limit","kernel_unavailable","template_unavailable","invalid_guest_user","vault_unavailable","vault_retired","credit_exhausted","spend_limit_reached","subscription_required","payment_method_required","early_allowance_ended","rate_limited","concurrency_limit","payment_failed","missing_parent","not_a_file","no_space","too_large","data_disk_not_browsable","support_unavailable","host_oom","vmm_crashed","guest_reboot_loop"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"retryable":{"type":"boolean","description":"True if the same request may succeed later.","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"operationId":{"oneOf":[{"type":"string","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.operationId","typeLabel":"string | null"},"reason":{"type":"string","description":"The same as `code` for credential errors (401 `missing_key`, `malformed_key`, `invalid_key`, `expired_key`, `revoked_key`, `session_expired`; 403 `missing_scope`). For 409 `machine_cooldown`, the automatic abuse check whose pause locks the sandbox: `abuse_egress_blocklist` (it tried to connect to a blocked destination on the egress blocklist, not a DNS lookup), `abuse_network_flows` (scanning or attack traffic), `abuse_cpu` (mining); absent for a max-run cooldown. For a retryable 409 `fork_unavailable`, why the source's host cannot take the fork: `source_host_unavailable` (it takes no new sandboxes) or `source_host_full` (no room now). Absent on other errors and from older servers.","enum":["missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","abuse_egress_blocklist","abuse_network_flows","abuse_cpu","source_host_unavailable","source_host_full"],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","description":"The next step that fixes the error (credential errors). Absent otherwise.","uniqueKey":"error.hint","typeLabel":"string"},"docs":{"type":"string","format":"uri","description":"A URL documenting the error (credential errors). Absent otherwise.","uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"docs_url":{"type":"string","format":"uri","description":"The code's entry on the errors page, on every error response: https://instabox.sh/docs/errors#\u003ccode> with underscores as dashes (e.g. #credit-exhausted): its HTTP status, whether to retry and what to do. Snake case, unlike the other fields. Absent from a failed operation's `error` and from older servers.","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"requiredScopes":{"type":"array","items":{"type":"string","uniqueKey":"error.requiredScopes.items.[INDEX]","typeLabel":"string"},"description":"For `missing_scope`, the scopes the route accepts; the key needs one of them.","uniqueKey":"error.requiredScopes","typeLabel":"string[]"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"Seconds to wait before trying again: a retryable `no_capacity` (60, as a 503 or on a failed operation's `error`), `rate_limited`, `machine_cooldown` and agent sign-up `quota_exceeded`. An error response also sends it as the `Retry-After` header; a failed operation's `error` has only this field. Absent otherwise and from older servers.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"},"at":{"type":"string","format":"date-time","description":"When it happened, for a stop the platform found (a sandbox's `lastError` with code `host_oom`, `vmm_crashed` or `guest_reboot_loop`; `hint` says what to do). The next successful start clears the error. Absent otherwise and from older servers.","uniqueKey":"error.at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthenticated","message":"\u003cstring>","requestId":"\u003cstring>","retryable":true,"operationId":"\u003cstring>","reason":"missing_key","hint":"\u003cstring>","docs":"\u003cstring>","docs_url":"\u003cstring>","requiredScopes":["\u003cstring>"],"retryAfterSeconds":2,"at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"36a26c31-8fb7-41ba-baa7-323e93f1d601":{"description":"`not_found`: no such resource (also for deleted sandboxes).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","requestId","retryable","operationId"],"properties":{"code":{"type":"string","description":"Machine-readable code. HTTP status per code is fixed.","enum":["unauthenticated","missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","permission_denied","not_found","bad_request","feature_disabled","unknown_field","operation_conflict","idempotency_conflict","machine_not_running","restore_unavailable","delete_confirmation_required","fork_unavailable","machine_cooldown","max_run_disabled","desktop_not_running","disk_too_small","grow_needs_stop","resize_restart_off","private_ports_unavailable","quota_exceeded","no_capacity","host_unavailable","metrics_unavailable","restore_failed","internal","authorization_pending","slow_down","expired_token","access_denied","invalid_grant","invite_required","invite_invalid","invite_email_mismatch","api_key_expired","api_key_revoked","insufficient_scope","orca_unsupported","runtime_not_ready","spec_not_allowed","template_not_allowed","template_limit","kernel_unavailable","template_unavailable","invalid_guest_user","vault_unavailable","vault_retired","credit_exhausted","spend_limit_reached","subscription_required","payment_method_required","early_allowance_ended","rate_limited","concurrency_limit","payment_failed","missing_parent","not_a_file","no_space","too_large","data_disk_not_browsable","support_unavailable","host_oom","vmm_crashed","guest_reboot_loop"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"retryable":{"type":"boolean","description":"True if the same request may succeed later.","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"operationId":{"oneOf":[{"type":"string","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.operationId","typeLabel":"string | null"},"reason":{"type":"string","description":"The same as `code` for credential errors (401 `missing_key`, `malformed_key`, `invalid_key`, `expired_key`, `revoked_key`, `session_expired`; 403 `missing_scope`). For 409 `machine_cooldown`, the automatic abuse check whose pause locks the sandbox: `abuse_egress_blocklist` (it tried to connect to a blocked destination on the egress blocklist, not a DNS lookup), `abuse_network_flows` (scanning or attack traffic), `abuse_cpu` (mining); absent for a max-run cooldown. For a retryable 409 `fork_unavailable`, why the source's host cannot take the fork: `source_host_unavailable` (it takes no new sandboxes) or `source_host_full` (no room now). Absent on other errors and from older servers.","enum":["missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","abuse_egress_blocklist","abuse_network_flows","abuse_cpu","source_host_unavailable","source_host_full"],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","description":"The next step that fixes the error (credential errors). Absent otherwise.","uniqueKey":"error.hint","typeLabel":"string"},"docs":{"type":"string","format":"uri","description":"A URL documenting the error (credential errors). Absent otherwise.","uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"docs_url":{"type":"string","format":"uri","description":"The code's entry on the errors page, on every error response: https://instabox.sh/docs/errors#\u003ccode> with underscores as dashes (e.g. #credit-exhausted): its HTTP status, whether to retry and what to do. Snake case, unlike the other fields. Absent from a failed operation's `error` and from older servers.","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"requiredScopes":{"type":"array","items":{"type":"string","uniqueKey":"error.requiredScopes.items.[INDEX]","typeLabel":"string"},"description":"For `missing_scope`, the scopes the route accepts; the key needs one of them.","uniqueKey":"error.requiredScopes","typeLabel":"string[]"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"Seconds to wait before trying again: a retryable `no_capacity` (60, as a 503 or on a failed operation's `error`), `rate_limited`, `machine_cooldown` and agent sign-up `quota_exceeded`. An error response also sends it as the `Retry-After` header; a failed operation's `error` has only this field. Absent otherwise and from older servers.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"},"at":{"type":"string","format":"date-time","description":"When it happened, for a stop the platform found (a sandbox's `lastError` with code `host_oom`, `vmm_crashed` or `guest_reboot_loop`; `hint` says what to do). The next successful start clears the error. Absent otherwise and from older servers.","uniqueKey":"error.at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthenticated","message":"\u003cstring>","requestId":"\u003cstring>","retryable":true,"operationId":"\u003cstring>","reason":"missing_key","hint":"\u003cstring>","docs":"\u003cstring>","docs_url":"\u003cstring>","requiredScopes":["\u003cstring>"],"retryAfterSeconds":2,"at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"7f434b08-394f-4809-9904-83766bfd09ea":{"description":"`operation_conflict` (another operation is active; `operationId` names it,\nor the transition is not allowed), `idempotency_conflict` (key reused for\na different request), `delete_confirmation_required` (a delete's\n`X-Confirm-Delete` header is not the sandbox's or snapshot's ID or name,\nor a key that must send it left it out),\n`machine_not_running` (the sandbox is not running), `desktop_not_running` (the\nVNC endpoint before the desktop started), or for Orca connections\n`orca_unsupported` and `runtime_not_ready` (retryable).\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","requestId","retryable","operationId"],"properties":{"code":{"type":"string","description":"Machine-readable code. HTTP status per code is fixed.","enum":["unauthenticated","missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","permission_denied","not_found","bad_request","feature_disabled","unknown_field","operation_conflict","idempotency_conflict","machine_not_running","restore_unavailable","delete_confirmation_required","fork_unavailable","machine_cooldown","max_run_disabled","desktop_not_running","disk_too_small","grow_needs_stop","resize_restart_off","private_ports_unavailable","quota_exceeded","no_capacity","host_unavailable","metrics_unavailable","restore_failed","internal","authorization_pending","slow_down","expired_token","access_denied","invalid_grant","invite_required","invite_invalid","invite_email_mismatch","api_key_expired","api_key_revoked","insufficient_scope","orca_unsupported","runtime_not_ready","spec_not_allowed","template_not_allowed","template_limit","kernel_unavailable","template_unavailable","invalid_guest_user","vault_unavailable","vault_retired","credit_exhausted","spend_limit_reached","subscription_required","payment_method_required","early_allowance_ended","rate_limited","concurrency_limit","payment_failed","missing_parent","not_a_file","no_space","too_large","data_disk_not_browsable","support_unavailable","host_oom","vmm_crashed","guest_reboot_loop"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"retryable":{"type":"boolean","description":"True if the same request may succeed later.","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"operationId":{"oneOf":[{"type":"string","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.operationId","typeLabel":"string | null"},"reason":{"type":"string","description":"The same as `code` for credential errors (401 `missing_key`, `malformed_key`, `invalid_key`, `expired_key`, `revoked_key`, `session_expired`; 403 `missing_scope`). For 409 `machine_cooldown`, the automatic abuse check whose pause locks the sandbox: `abuse_egress_blocklist` (it tried to connect to a blocked destination on the egress blocklist, not a DNS lookup), `abuse_network_flows` (scanning or attack traffic), `abuse_cpu` (mining); absent for a max-run cooldown. For a retryable 409 `fork_unavailable`, why the source's host cannot take the fork: `source_host_unavailable` (it takes no new sandboxes) or `source_host_full` (no room now). Absent on other errors and from older servers.","enum":["missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","abuse_egress_blocklist","abuse_network_flows","abuse_cpu","source_host_unavailable","source_host_full"],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","description":"The next step that fixes the error (credential errors). Absent otherwise.","uniqueKey":"error.hint","typeLabel":"string"},"docs":{"type":"string","format":"uri","description":"A URL documenting the error (credential errors). Absent otherwise.","uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"docs_url":{"type":"string","format":"uri","description":"The code's entry on the errors page, on every error response: https://instabox.sh/docs/errors#\u003ccode> with underscores as dashes (e.g. #credit-exhausted): its HTTP status, whether to retry and what to do. Snake case, unlike the other fields. Absent from a failed operation's `error` and from older servers.","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"requiredScopes":{"type":"array","items":{"type":"string","uniqueKey":"error.requiredScopes.items.[INDEX]","typeLabel":"string"},"description":"For `missing_scope`, the scopes the route accepts; the key needs one of them.","uniqueKey":"error.requiredScopes","typeLabel":"string[]"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"Seconds to wait before trying again: a retryable `no_capacity` (60, as a 503 or on a failed operation's `error`), `rate_limited`, `machine_cooldown` and agent sign-up `quota_exceeded`. An error response also sends it as the `Retry-After` header; a failed operation's `error` has only this field. Absent otherwise and from older servers.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"},"at":{"type":"string","format":"date-time","description":"When it happened, for a stop the platform found (a sandbox's `lastError` with code `host_oom`, `vmm_crashed` or `guest_reboot_loop`; `hint` says what to do). The next successful start clears the error. Absent otherwise and from older servers.","uniqueKey":"error.at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthenticated","message":"\u003cstring>","requestId":"\u003cstring>","retryable":true,"operationId":"\u003cstring>","reason":"missing_key","hint":"\u003cstring>","docs":"\u003cstring>","docs_url":"\u003cstring>","requiredScopes":["\u003cstring>"],"retryAfterSeconds":2,"at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"5b0520fb-9e08-44ee-b516-f09ab26f81bb":{"description":"`quota_exceeded`: one of your limits was reached: the number of sandboxes (on the free plan 1, in any state, stopped and paused included; Pro 500; Builder 1000), stored data (on the free plan 200 GiB), snapshots (on the free plan 5), API keys, execs or terminals. The message says which, e.g. \"sandbox limit reached (1 of 1) in org alice (free plan): delete a sandbox first\". Delete a sandbox or snapshot, upgrade the plan, or ask an admin to raise your limit.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","requestId","retryable","operationId"],"properties":{"code":{"type":"string","description":"Machine-readable code. HTTP status per code is fixed.","enum":["unauthenticated","missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","permission_denied","not_found","bad_request","feature_disabled","unknown_field","operation_conflict","idempotency_conflict","machine_not_running","restore_unavailable","delete_confirmation_required","fork_unavailable","machine_cooldown","max_run_disabled","desktop_not_running","disk_too_small","grow_needs_stop","resize_restart_off","private_ports_unavailable","quota_exceeded","no_capacity","host_unavailable","metrics_unavailable","restore_failed","internal","authorization_pending","slow_down","expired_token","access_denied","invalid_grant","invite_required","invite_invalid","invite_email_mismatch","api_key_expired","api_key_revoked","insufficient_scope","orca_unsupported","runtime_not_ready","spec_not_allowed","template_not_allowed","template_limit","kernel_unavailable","template_unavailable","invalid_guest_user","vault_unavailable","vault_retired","credit_exhausted","spend_limit_reached","subscription_required","payment_method_required","early_allowance_ended","rate_limited","concurrency_limit","payment_failed","missing_parent","not_a_file","no_space","too_large","data_disk_not_browsable","support_unavailable","host_oom","vmm_crashed","guest_reboot_loop"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"retryable":{"type":"boolean","description":"True if the same request may succeed later.","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"operationId":{"oneOf":[{"type":"string","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.operationId","typeLabel":"string | null"},"reason":{"type":"string","description":"The same as `code` for credential errors (401 `missing_key`, `malformed_key`, `invalid_key`, `expired_key`, `revoked_key`, `session_expired`; 403 `missing_scope`). For 409 `machine_cooldown`, the automatic abuse check whose pause locks the sandbox: `abuse_egress_blocklist` (it tried to connect to a blocked destination on the egress blocklist, not a DNS lookup), `abuse_network_flows` (scanning or attack traffic), `abuse_cpu` (mining); absent for a max-run cooldown. For a retryable 409 `fork_unavailable`, why the source's host cannot take the fork: `source_host_unavailable` (it takes no new sandboxes) or `source_host_full` (no room now). Absent on other errors and from older servers.","enum":["missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","abuse_egress_blocklist","abuse_network_flows","abuse_cpu","source_host_unavailable","source_host_full"],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","description":"The next step that fixes the error (credential errors). Absent otherwise.","uniqueKey":"error.hint","typeLabel":"string"},"docs":{"type":"string","format":"uri","description":"A URL documenting the error (credential errors). Absent otherwise.","uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"docs_url":{"type":"string","format":"uri","description":"The code's entry on the errors page, on every error response: https://instabox.sh/docs/errors#\u003ccode> with underscores as dashes (e.g. #credit-exhausted): its HTTP status, whether to retry and what to do. Snake case, unlike the other fields. Absent from a failed operation's `error` and from older servers.","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"requiredScopes":{"type":"array","items":{"type":"string","uniqueKey":"error.requiredScopes.items.[INDEX]","typeLabel":"string"},"description":"For `missing_scope`, the scopes the route accepts; the key needs one of them.","uniqueKey":"error.requiredScopes","typeLabel":"string[]"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"Seconds to wait before trying again: a retryable `no_capacity` (60, as a 503 or on a failed operation's `error`), `rate_limited`, `machine_cooldown` and agent sign-up `quota_exceeded`. An error response also sends it as the `Retry-After` header; a failed operation's `error` has only this field. Absent otherwise and from older servers.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"},"at":{"type":"string","format":"date-time","description":"When it happened, for a stop the platform found (a sandbox's `lastError` with code `host_oom`, `vmm_crashed` or `guest_reboot_loop`; `hint` says what to do). The next successful start clears the error. Absent otherwise and from older servers.","uniqueKey":"error.at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthenticated","message":"\u003cstring>","requestId":"\u003cstring>","retryable":true,"operationId":"\u003cstring>","reason":"missing_key","hint":"\u003cstring>","docs":"\u003cstring>","docs_url":"\u003cstring>","requiredScopes":["\u003cstring>"],"retryAfterSeconds":2,"at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"2bcf3391-f9ff-420e-9bf0-178d601cd2c1":{"description":"`internal`: unexpected server error.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","requestId","retryable","operationId"],"properties":{"code":{"type":"string","description":"Machine-readable code. HTTP status per code is fixed.","enum":["unauthenticated","missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","permission_denied","not_found","bad_request","feature_disabled","unknown_field","operation_conflict","idempotency_conflict","machine_not_running","restore_unavailable","delete_confirmation_required","fork_unavailable","machine_cooldown","max_run_disabled","desktop_not_running","disk_too_small","grow_needs_stop","resize_restart_off","private_ports_unavailable","quota_exceeded","no_capacity","host_unavailable","metrics_unavailable","restore_failed","internal","authorization_pending","slow_down","expired_token","access_denied","invalid_grant","invite_required","invite_invalid","invite_email_mismatch","api_key_expired","api_key_revoked","insufficient_scope","orca_unsupported","runtime_not_ready","spec_not_allowed","template_not_allowed","template_limit","kernel_unavailable","template_unavailable","invalid_guest_user","vault_unavailable","vault_retired","credit_exhausted","spend_limit_reached","subscription_required","payment_method_required","early_allowance_ended","rate_limited","concurrency_limit","payment_failed","missing_parent","not_a_file","no_space","too_large","data_disk_not_browsable","support_unavailable","host_oom","vmm_crashed","guest_reboot_loop"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"retryable":{"type":"boolean","description":"True if the same request may succeed later.","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"operationId":{"oneOf":[{"type":"string","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.operationId","typeLabel":"string | null"},"reason":{"type":"string","description":"The same as `code` for credential errors (401 `missing_key`, `malformed_key`, `invalid_key`, `expired_key`, `revoked_key`, `session_expired`; 403 `missing_scope`). For 409 `machine_cooldown`, the automatic abuse check whose pause locks the sandbox: `abuse_egress_blocklist` (it tried to connect to a blocked destination on the egress blocklist, not a DNS lookup), `abuse_network_flows` (scanning or attack traffic), `abuse_cpu` (mining); absent for a max-run cooldown. For a retryable 409 `fork_unavailable`, why the source's host cannot take the fork: `source_host_unavailable` (it takes no new sandboxes) or `source_host_full` (no room now). Absent on other errors and from older servers.","enum":["missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","abuse_egress_blocklist","abuse_network_flows","abuse_cpu","source_host_unavailable","source_host_full"],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","description":"The next step that fixes the error (credential errors). Absent otherwise.","uniqueKey":"error.hint","typeLabel":"string"},"docs":{"type":"string","format":"uri","description":"A URL documenting the error (credential errors). Absent otherwise.","uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"docs_url":{"type":"string","format":"uri","description":"The code's entry on the errors page, on every error response: https://instabox.sh/docs/errors#\u003ccode> with underscores as dashes (e.g. #credit-exhausted): its HTTP status, whether to retry and what to do. Snake case, unlike the other fields. Absent from a failed operation's `error` and from older servers.","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"requiredScopes":{"type":"array","items":{"type":"string","uniqueKey":"error.requiredScopes.items.[INDEX]","typeLabel":"string"},"description":"For `missing_scope`, the scopes the route accepts; the key needs one of them.","uniqueKey":"error.requiredScopes","typeLabel":"string[]"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"Seconds to wait before trying again: a retryable `no_capacity` (60, as a 503 or on a failed operation's `error`), `rate_limited`, `machine_cooldown` and agent sign-up `quota_exceeded`. An error response also sends it as the `Retry-After` header; a failed operation's `error` has only this field. Absent otherwise and from older servers.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"},"at":{"type":"string","format":"date-time","description":"When it happened, for a stop the platform found (a sandbox's `lastError` with code `host_oom`, `vmm_crashed` or `guest_reboot_loop`; `hint` says what to do). The next successful start clears the error. Absent otherwise and from older servers.","uniqueKey":"error.at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthenticated","message":"\u003cstring>","requestId":"\u003cstring>","retryable":true,"operationId":"\u003cstring>","reason":"missing_key","hint":"\u003cstring>","docs":"\u003cstring>","docs_url":"\u003cstring>","requiredScopes":["\u003cstring>"],"retryAfterSeconds":2,"at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"ddd58b24-e9b6-434f-b7d2-ae266ab7c23f":{"description":"`no_capacity` (there is no room for the sandbox right now; the message says what could not run and when to retry) or `host_unavailable` (the sandbox cannot be reached right now). Usually `retryable`; try again shortly. `no_capacity` is `retryable`: retry with exponential backoff (for example after 15 s, 30 s, 60 s, then every few minutes), or try another size or template. A create whose operation failed with it replays that failed operation for the same `Idempotency-Key`, so retry it with a new key. With `--fail-fast` the CLI's `create` and `run` exit 75 on it (otherwise 1). A retryable `no_capacity` has `retryAfterSeconds` and the same `Retry-After` header: wait at least that long before the first retry.","headers":{"Retry-After":{"description":"Seconds to wait before retrying; the body's `retryAfterSeconds`.","schema":{"type":"integer","minimum":1,"examples":[60]}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","requestId","retryable","operationId"],"properties":{"code":{"type":"string","description":"Machine-readable code. HTTP status per code is fixed.","enum":["unauthenticated","missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","permission_denied","not_found","bad_request","feature_disabled","unknown_field","operation_conflict","idempotency_conflict","machine_not_running","restore_unavailable","delete_confirmation_required","fork_unavailable","machine_cooldown","max_run_disabled","desktop_not_running","disk_too_small","grow_needs_stop","resize_restart_off","private_ports_unavailable","quota_exceeded","no_capacity","host_unavailable","metrics_unavailable","restore_failed","internal","authorization_pending","slow_down","expired_token","access_denied","invalid_grant","invite_required","invite_invalid","invite_email_mismatch","api_key_expired","api_key_revoked","insufficient_scope","orca_unsupported","runtime_not_ready","spec_not_allowed","template_not_allowed","template_limit","kernel_unavailable","template_unavailable","invalid_guest_user","vault_unavailable","vault_retired","credit_exhausted","spend_limit_reached","subscription_required","payment_method_required","early_allowance_ended","rate_limited","concurrency_limit","payment_failed","missing_parent","not_a_file","no_space","too_large","data_disk_not_browsable","support_unavailable","host_oom","vmm_crashed","guest_reboot_loop"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"retryable":{"type":"boolean","description":"True if the same request may succeed later.","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"operationId":{"oneOf":[{"type":"string","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"For `operation_conflict`, the active operation.","isRequired":true,"uniqueKey":"error.operationId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.operationId","typeLabel":"string | null"},"reason":{"type":"string","description":"The same as `code` for credential errors (401 `missing_key`, `malformed_key`, `invalid_key`, `expired_key`, `revoked_key`, `session_expired`; 403 `missing_scope`). For 409 `machine_cooldown`, the automatic abuse check whose pause locks the sandbox: `abuse_egress_blocklist` (it tried to connect to a blocked destination on the egress blocklist, not a DNS lookup), `abuse_network_flows` (scanning or attack traffic), `abuse_cpu` (mining); absent for a max-run cooldown. For a retryable 409 `fork_unavailable`, why the source's host cannot take the fork: `source_host_unavailable` (it takes no new sandboxes) or `source_host_full` (no room now). Absent on other errors and from older servers.","enum":["missing_key","malformed_key","invalid_key","expired_key","revoked_key","session_expired","missing_scope","abuse_egress_blocklist","abuse_network_flows","abuse_cpu","source_host_unavailable","source_host_full"],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","description":"The next step that fixes the error (credential errors). Absent otherwise.","uniqueKey":"error.hint","typeLabel":"string"},"docs":{"type":"string","format":"uri","description":"A URL documenting the error (credential errors). Absent otherwise.","uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"docs_url":{"type":"string","format":"uri","description":"The code's entry on the errors page, on every error response: https://instabox.sh/docs/errors#\u003ccode> with underscores as dashes (e.g. #credit-exhausted): its HTTP status, whether to retry and what to do. Snake case, unlike the other fields. Absent from a failed operation's `error` and from older servers.","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"requiredScopes":{"type":"array","items":{"type":"string","uniqueKey":"error.requiredScopes.items.[INDEX]","typeLabel":"string"},"description":"For `missing_scope`, the scopes the route accepts; the key needs one of them.","uniqueKey":"error.requiredScopes","typeLabel":"string[]"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"Seconds to wait before trying again: a retryable `no_capacity` (60, as a 503 or on a failed operation's `error`), `rate_limited`, `machine_cooldown` and agent sign-up `quota_exceeded`. An error response also sends it as the `Retry-After` header; a failed operation's `error` has only this field. Absent otherwise and from older servers.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"},"at":{"type":"string","format":"date-time","description":"When it happened, for a stop the platform found (a sandbox's `lastError` with code `host_oom`, `vmm_crashed` or `guest_reboot_loop`; `hint` says what to do). The next successful start clears the error. Absent otherwise and from older servers.","uniqueKey":"error.at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthenticated","message":"\u003cstring>","requestId":"\u003cstring>","retryable":true,"operationId":"\u003cstring>","reason":"missing_key","hint":"\u003cstring>","docs":"\u003cstring>","docs_url":"\u003cstring>","requiredScopes":["\u003cstring>"],"retryAfterSeconds":2,"at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"7dcab6c2-791a-439d-9613-e0fc3cbf7dce":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Opaque instabox access token (1 hour). Refresh with `/v1/auth/refresh` (refresh token valid 30 days, rotates on use).","scopes":[],"schemeName":"bearerAuth"}},"54d32ddb-7d47-450d-8351-0242a3cb91d8":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key (`ibk_...`) with scopes; also accepted as `Authorization: Bearer ibk_...`.\nAccepted on sandbox, snapshot, operation, template and usage routes per scope\n(see API keys), never on key management, sessions, logout or admin routes.\n","scopes":[],"schemeName":"apiKey"}},"3fd66a2b-a31f-447c-a6c6-624e361b0424":{"sessionCookie":{"type":"apiKey","in":"cookie","name":"instabox_session","description":"Dashboard browser session from `/auth/github/login` (7 days idle, 30 days at\nmost). Used only when no Authorization header is sent. Requests other than\nGET and HEAD must send `X-Instabox-CSRF` (from `GET /v1/me`) and an `Origin`\nequal to the server's `publicUrl`; otherwise `403 permission_denied`.\n","scopes":[],"schemeName":"sessionCookie"}}},"servers":{"e2c665bb-4b53-46fa-8dd3-3dba6e3ac4a8":{"url":"https://api.instabox.sh"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Opaque instabox access token (1 hour). Refresh with `/v1/auth/refresh` (refresh token valid 30 days, rotates on use).","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Opaque instabox access token (1 hour). Refresh with `/v1/auth/refresh` (refresh token valid 30 days, rotates on use).","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key (`ibk_...`) with scopes; also accepted as `Authorization: Bearer ibk_...`.\nAccepted on sandbox, snapshot, operation, template and usage routes per scope\n(see API keys), never on key management, sessions, logout or admin routes.\n","scopes":[],"schemeName":"apiKey"},"schema":{"title":"X-API-Key","type":"string","description":"API key (`ibk_...`) with scopes; also accepted as `Authorization: Bearer ibk_...`.\nAccepted on sandbox, snapshot, operation, template and usage routes per scope\n(see API keys), never on key management, sessions, logout or admin routes.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"X-API-Key"}],"title":"apiKey"},{"schemes":[{"scheme":{"type":"apiKey","in":"cookie","name":"instabox_session","description":"Dashboard browser session from `/auth/github/login` (7 days idle, 30 days at\nmost). Used only when no Authorization header is sent. Requests other than\nGET and HEAD must send `X-Instabox-CSRF` (from `GET /v1/me`) and an `Origin`\nequal to the server's `publicUrl`; otherwise `403 permission_denied`.\n","scopes":[],"schemeName":"sessionCookie"},"schema":{"title":"instabox_session","type":"string","description":"Dashboard browser session from `/auth/github/login` (7 days idle, 30 days at\nmost). Used only when no Authorization header is sent. Requests other than\nGET and HEAD must send `X-Instabox-CSRF` (from `GET /v1/me`) and an `Origin`\nequal to the server's `publicUrl`; otherwise `403 permission_denied`.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"sessionCookie","name":"instabox_session"}],"title":"sessionCookie"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"instacloud","siteName":"InstaBox","title":"Save a sandbox's system files and storage as a snapshot. - InstaBox","relatedPagesConfig":{"enabled":false,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T06:53:03.761Z","originalFileLocation":"api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot.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=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"A stopped sandbox (fully saved, no operation in progress): synchronous (201) and quick, since no data is copied. A running sandbox, where the server allows live snapshots: 202 with the snapshot pending; the sandbox\u0026#x27;s files are frozen briefly while they are copied, and the snapshot becomes ready (or failed) once the copy is uploaded. Unless rootOnly is true, both system files and storage are saved, including credentials under HOME (/data/home). Memory and running programs are not included. API keys: needs one of the scopes images:write.\">\u003cmeta data-mint-head name=\"application-name\" content=\"InstaBox\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/instacloud/B4TOiHlk6CDYfBRt/_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=\"/docs/mintlify-assets/_mintlify/favicons/instacloud/B4TOiHlk6CDYfBRt/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/instacloud/B4TOiHlk6CDYfBRt/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/instacloud/B4TOiHlk6CDYfBRt/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/instacloud/B4TOiHlk6CDYfBRt/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/instacloud/B4TOiHlk6CDYfBRt/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/instacloud/B4TOiHlk6CDYfBRt/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/instacloud/B4TOiHlk6CDYfBRt/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/instacloud/B4TOiHlk6CDYfBRt/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Save a sandbox\u0026#x27;s system files and storage as a snapshot. - InstaBox\">\u003cmeta data-mint-head property=\"og:description\" content=\"A stopped sandbox (fully saved, no operation in progress): synchronous (201) and quick, since no data is copied. A running sandbox, where the server allows live snapshots: 202 with the snapshot pending; the sandbox\u0026#x27;s files are frozen briefly while they are copied, and the snapshot becomes ready (or failed) once the copy is uploaded. Unless rootOnly is true, both system files and storage are saved, including credentials under HOME (/data/home). Memory and running programs are not included. API keys: needs one of the scopes images:write.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"InstaBox\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://instabox.sh/docs/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://instacloud.mintlify.site/docs/_mintlify/api/og/v2?division=Snapshots\u0026amp;title=Save+a+sandbox%27s+system+files+and+storage+as+a+snapshot.\u0026amp;description=A+stopped+sandbox+%28fully+saved%2C+no+operation+in+progress%29%3A+synchronous+%28%60201%60%29+and+quick%2C+since+no+data+is+copied.+A+running+sandbox%2C+where+the+server+allows+li\u0026amp;theme=4d60089f83d6d00671834b24\u0026amp;signature=e169df414657787f18cab5d6bc579e2d531311b959411a9840bf11979983a9a6\">\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=\"Save a sandbox\u0026#x27;s system files and storage as a snapshot. - InstaBox\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"A stopped sandbox (fully saved, no operation in progress): synchronous (201) and quick, since no data is copied. A running sandbox, where the server allows live snapshots: 202 with the snapshot pending; the sandbox\u0026#x27;s files are frozen briefly while they are copied, and the snapshot becomes ready (or failed) once the copy is uploaded. Unless rootOnly is true, both system files and storage are saved, including credentials under HOME (/data/home). Memory and running programs are not included. API keys: needs one of the scopes images:write.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://instacloud.mintlify.site/docs/_mintlify/api/og/v2?division=Snapshots\u0026amp;title=Save+a+sandbox%27s+system+files+and+storage+as+a+snapshot.\u0026amp;description=A+stopped+sandbox+%28fully+saved%2C+no+operation+in+progress%29%3A+synchronous+%28%60201%60%29+and+quick%2C+since+no+data+is+copied.+A+running+sandbox%2C+where+the+server+allows+li\u0026amp;theme=4d60089f83d6d00671834b24\u0026amp;signature=e169df414657787f18cab5d6bc579e2d531311b959411a9840bf11979983a9a6\">\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=\"/docs/mintlify-assets/_mintlify/favicons/instacloud/B4TOiHlk6CDYfBRt/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"InstaBox\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0A0A0A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://instabox.sh/docs/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://instabox.sh/#organization\",\"name\":\"InstaBox\",\"url\":\"https://instabox.sh\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://instacloud.mintlify.site/docs/logo/light.svg\"}},{\"@type\":\"WebSite\",\"@id\":\"https://instabox.sh/docs#website\",\"name\":\"InstaBox\",\"url\":\"https://instabox.sh/docs\",\"publisher\":{\"@id\":\"https://instabox.sh/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://instabox.sh/docs/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot#webpage\",\"url\":\"https://instabox.sh/docs/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot\",\"name\":\"Save a sandbox's system files and storage as a snapshot.\",\"description\":\"A stopped sandbox (fully saved, no operation in progress): synchronous (201) and quick, since no data is copied. A running sandbox, where the server allows live snapshots: 202 with the snapshot pending; the sandbox's files are frozen briefly while they are copied, and the snapshot becomes ready (or failed) once the copy is uploaded. Unless rootOnly is true, both system files and storage are saved, including credentials under HOME (/data/home). Memory and running programs are not included. API keys: needs one of the scopes images:write.\",\"dateModified\":\"2026-11-09T06:53:03.761Z\",\"isPartOf\":{\"@id\":\"https://instabox.sh/docs#website\"},\"breadcrumb\":{\"@id\":\"https://instabox.sh/docs/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://instabox.sh/docs/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API reference\",\"item\":\"https://instabox.sh/docs/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Save a sandbox's system files and storage as a snapshot.\",\"item\":\"https://instabox.sh/docs/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://instabox.sh/docs/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot#apireference\",\"headline\":\"Save a sandbox's system files and storage as a snapshot.\",\"name\":\"Save a sandbox's system files and storage as a snapshot.\",\"description\":\"A stopped sandbox (fully saved, no operation in progress): synchronous (201) and quick, since no data is copied. A running sandbox, where the server allows live snapshots: 202 with the snapshot pending; the sandbox's files are frozen briefly while they are copied, and the snapshot becomes ready (or failed) once the copy is uploaded. Unless rootOnly is true, both system files and storage are saved, including credentials under HOME (/data/home). Memory and running programs are not included. API keys: needs one of the scopes images:write.\",\"url\":\"https://instabox.sh/docs/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot\",\"mainEntityOfPage\":{\"@id\":\"https://instabox.sh/docs/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot#webpage\"},\"dateModified\":\"2026-11-09T06:53:03.761Z\",\"publisher\":{\"@id\":\"https://instabox.sh/#organization\"},\"isPartOf\":{\"@id\":\"https://instabox.sh/docs#website\"}}]}\u003c/script>","siteName":"InstaBox","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API reference","groups":[{"group":"API reference","pages":[{"title":"API overview","icon":"braces","href":"/api-reference/introduction"},{"group":"Machines","pages":[{"title":"Create a sandbox.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines","href":"/api-reference/machines/create-a-sandbox"},{"title":"List the sandboxes of your orgs.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/machines","href":"/api-reference/machines/list-the-sandboxes-of-your-orgs"},{"title":"Get a sandbox.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/machines/{id}","href":"/api-reference/machines/get-a-sandbox"},{"title":"Rename, resize (vCPUs, memory, disk) a stopped sandbox, or set its idle pause and metadata.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/machines/{id}","href":"/api-reference/machines/rename-resize-vcpus-memory-disk-a-stopped-sandbox-or-set-its-idle-pause-and-metadata"},{"title":"Delete a sandbox, its system files and its storage.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/machines/{id}","href":"/api-reference/machines/delete-a-sandbox-its-system-files-and-its-storage"}]},{"group":"Lifecycle","pages":[{"title":"Start a stopped or paused sandbox.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/start","href":"/api-reference/machines/start-a-stopped-or-paused-sandbox"},{"title":"Stop a running sandbox (shuts it down; running programs end, files are kept).","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/stop","href":"/api-reference/machines/stop-a-running-sandbox-shuts-it-down;-running-programs-end-files-are-kept"},{"title":"Pause a running sandbox, keeping its running programs.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/suspend","href":"/api-reference/machines/pause-a-running-sandbox-keeping-its-running-programs"},{"title":"Resume a paused sandbox where it left off.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/resume","href":"/api-reference/machines/resume-a-paused-sandbox-where-it-left-off"},{"title":"Resume an idle-suspended machine before using it.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/wake","href":"/api-reference/machines/resume-an-idle-suspended-machine-before-using-it"},{"title":"Put a sandbox's disks back to a snapshot's, in place.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/restore","href":"/api-reference/machines/put-a-sandboxs-disks-back-to-a-snapshots-in-place"},{"title":"Create a copy of a sandbox on its host, without a snapshot.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/fork","href":"/api-reference/machines/create-a-copy-of-a-sandbox-on-its-host-without-a-snapshot"},{"title":"Get an operation (the progress of a sandbox change).","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/operations/{id}","href":"/api-reference/operations/get-an-operation-the-progress-of-a-sandbox-change"}]},{"group":"Commands and files","pages":[{"title":"Run a command in the sandbox and return its output.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/exec","href":"/api-reference/connections/run-a-command-in-the-sandbox-and-return-its-output"},{"title":"Read a file or directory of a running sandbox.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/machines/{id}/files","href":"/api-reference/machines/read-a-file-or-directory-of-a-running-sandbox"},{"title":"Write (upload) a file to a running sandbox.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/machines/{id}/files","href":"/api-reference/machines/write-upload-a-file-to-a-running-sandbox"},{"title":"Download a file's raw bytes from a running sandbox.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/machines/{id}/files/content","href":"/api-reference/machines/download-a-files-raw-bytes-from-a-running-sandbox"},{"title":"Get a short-lived signed URL that uploads one file.","description":"Returns a URL on the API's own origin that takes `PUT` of the file's raw bytes to `path` (PUT /v1/machines/{id}/files with a signed `token`) with no other credential, until `expiresAt`: by default 15 minutes, at most 1 hour. Hand it to a tool that should not hold your API key, or use it for a long upload. The token is HMAC-signed and binds the sandbox, `path`, `mode` and `parents`; it may be used more than once until it expires. Each upload still acts as you: it fails once your account is gone, or the API key that made the URL is revoked or expired, or you lose access to the sandbox (org membership is checked on every upload). The sandbox need not be running to create a URL; the upload has the PUT route's limits and errors (5 GiB). API keys: needs one of the scopes `machines:write`, `machines:exec` (legacy).","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/files/upload-url","href":"/api-reference/machines/get-a-short-lived-signed-url-that-uploads-one-file"}]},{"group":"Snapshots","pages":[{"title":"Save a sandbox's system files and storage as a snapshot.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/snapshots","href":"/api-reference/snapshots/save-a-sandboxs-system-files-and-storage-as-a-snapshot"},{"title":"List the snapshots of your orgs.","description":"API keys: needs one of the scopes `images:read`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/snapshots","href":"/api-reference/snapshots/list-the-snapshots-of-your-orgs"},{"title":"Get a snapshot of one of your orgs.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/snapshots/{id}","href":"/api-reference/snapshots/get-a-snapshot-of-one-of-your-orgs"},{"title":"Read a file or directory of a snapshot's system files.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/snapshots/{id}/files","href":"/api-reference/snapshots/read-a-file-or-directory-of-a-snapshots-system-files"},{"title":"Delete a snapshot.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/snapshots/{id}","href":"/api-reference/snapshots/delete-a-snapshot"}]},{"group":"Ports","pages":[{"title":"Give one HTTP port of a sandbox an HTTPS URL, public or private.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/ports","href":"/api-reference/give-one-http-port-of-a-sandbox-an-https-url-public-or-private"},{"title":"List a sandbox's public ports.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/machines/{id}/ports","href":"/api-reference/list-a-sandboxs-public-ports"},{"title":"List the public ports of all your sandboxes.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/ports","href":"/api-reference/list-the-public-ports-of-all-your-sandboxes"},{"title":"Remove a port's public URL and close its active connections.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/machines/{id}/ports/{port}","href":"/api-reference/remove-a-ports-public-url-and-close-its-active-connections"}]},{"group":"SSH","pages":[{"title":"Issue an SSH token, for a plain `ssh` command without a key.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/ssh-tokens","href":"/api-reference/connections/issue-an-ssh-token-for-a-plain-`ssh`-command-without-a-key"},{"title":"List SSH token metadata, including revoked and recently expired tokens.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/machines/{id}/ssh-tokens","href":"/api-reference/connections/list-ssh-token-metadata-including-revoked-and-recently-expired-tokens"},{"title":"Revoke one SSH token and close its SSH and mosh connections.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/machines/{id}/ssh-tokens/{tokenID}","href":"/api-reference/connections/revoke-one-ssh-token-and-close-its-ssh-and-mosh-connections"},{"title":"Revoke every SSH token of the sandbox and close their connections.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/machines/{id}/ssh-tokens","href":"/api-reference/connections/revoke-every-ssh-token-of-the-sandbox-and-close-their-connections"},{"title":"Issue a short-lived SSH user certificate for the sandbox.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/connections","href":"/api-reference/connections/issue-a-short-lived-ssh-user-certificate-for-the-sandbox"}]},{"group":"Secrets","pages":[{"title":"List an org's Secret metadata, never values.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/orgs/{id}/secrets","href":"/api-reference/secrets/list-an-orgs-secret-metadata-never-values"},{"title":"Create or replace an org Secret.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/orgs/{id}/secrets/{name}","href":"/api-reference/secrets/create-or-replace-an-org-secret"},{"title":"Atomically create or replace a batch of org Secrets.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/orgs/{id}/secrets/import","href":"/api-reference/secrets/atomically-create-or-replace-a-batch-of-org-secrets"},{"title":"Delete an org Secret and its explicit sandbox grants.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/orgs/{id}/secrets/{name}","href":"/api-reference/secrets/delete-an-org-secret-and-its-explicit-sandbox-grants"},{"title":"Read a sandbox's Secret selections and delivery status.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/machines/{id}/secrets","href":"/api-reference/secrets/read-a-sandboxs-secret-selections-and-delivery-status"},{"title":"Replace supplied Secret selections for a sandbox.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/machines/{id}/secrets","href":"/api-reference/secrets/replace-supplied-secret-selections-for-a-sandbox"},{"title":"Refresh managed Secret delivery in a running sandbox.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/machines/{id}/secrets","href":"/api-reference/secrets/refresh-managed-secret-delivery-in-a-running-sandbox"}]},{"group":"Account","pages":[{"title":"The signed-in user and the sandbox size they get.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/me","href":"/api-reference/auth/the-signed-in-user-and-the-sandbox-size-they-get"},{"title":"List the templates a sandbox can start from.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/templates","href":"/api-reference/machines/list-the-templates-a-sandbox-can-start-from"},{"title":"Your storage use, limits, this month's cost and credit balance.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/usage","href":"/api-reference/usage/your-storage-use-limits-this-months-cost-and-credit-balance"}]}]}]},{"tab":"SDK reference","pages":[{"title":"SDK reference","href":"/integrations/sdk-quickstart"}]}]},"basePath":"","title":"Save a sandbox's system files and storage as a snapshot. - InstaBox","buildId":"dpl_3pZeXn3XukjzFRgAX73A7GNDfRJ1","deploymentId":"dpl_3pZeXn3XukjzFRgAX73A7GNDfRJ1","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CW3yP2DK.js","utils-BN0nty2W.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C8_MydSG.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bsl5xDMQ.js","snippetPresets-DYv9OBej.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-9OnYPrVf.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-xr67xWGO.js","shallow-DO1aDdBF.js","getApiPlaygroundDisplay-o7cLzFL-.js","CodeSnippet-CGr2yOA8.js","CodeSnippets-CzBbqPNh.js","Page-CBlOSKZG.js","getPastedJson-dpi9sn5Y.js","icon-aIWHt8Pn.js","MethodPill-Bv2zLsGY.js","DuplicateIcon-DxFSz0J6.js","createIcon-uDNv6jwj.js","DynamicMarkdown-C91yhnNP.js","SectionHeading-DG_xjOLR.js","axios-vUo_bRtp.js","Markdown-B4M_Eo1P.js","clsx-DShopWo_.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BX6wab7q.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-48h67xm_.js"]}