“API keys: any key.” Not behind the invite gate: inviteRequired and activated tell a client whether the account must redeem an invite code (POST /v1/invites/redeem) before the other routes answer.
Clients show this account per-sandbox metrics (the dashboard's Metrics tab, instabox metrics): admins always, every account once the server sets machineMetricsForAll. Absent: hidden. GET /v1/machines/{id}/metrics answers either way.
An account the invite gate holds back may buy a workspace (POST /v1/orgs) instead, and is activated once its plan takes effect (docs/invites.md). Absent: only an invite code lets it in.
The sizes your new sandboxes may have in your personal org (no rootDiskGiB: the template's). The first is the server's limits.machineSpec (4 vCPUs and 8 GiB memory by default), what a create naming no size gets; the others are your plan's (Pro: 2/4, 4/8, 8/16; Builder: 2/4 up to 16/32; Team and Enterprise: 2/4 up to 32/64) and sizes an admin granted you, picked by naming their vcpus and memMiB on create. Any other size is refused with spec_not_allowed, admins included.
Your other orgs, each with its own plan and limits (GET /v1/usage?org=ID, GET /v1/orgs/{id}). Omitted when there are none, and for a workspace API key, which reaches only its own org.
This account passed the invite gate (admins always have). When inviteRequired and not activated, every route but this one, POST /v1/invites/redeem and POST /v1/auth/logout answers 403 invite_required.
An admin let this account manage its sandboxes' lifecycle (docs/idle-suspend.md): the autoSuspendAfterSeconds it sends applies (0: off). Otherwise every sandbox pauses after fixedAutoSuspendSeconds idle, whatever a request says.
The idle auto-suspend every sandbox of this account gets on a server that offers no choice; absent when the account chooses (manualLifecycle, or idleChoicesSeconds).
The idle times offered (300 to 1800, 5 to 30 minutes; docs/pricing.md): a request may send any whole minute from the first to the last. 0 (off) is never listed: alwaysOnAllowed says whether it is a choice too. Absent with manualLifecycle.
Whether 0 (off) is a choice too, on org's plan (the personal org's for a sign-in session). A sandbox in another org follows that org's plan: see its workspaces entry's alwaysOnAllowed.
This server takes PATCH /v1/machines/{id}apply: "restart" (one stop, resize, start operation). Absent: it answers 400 resize_restart_off; resize with your own stop, PATCH, start.
This site takes direct Secret file references and renamed variables (directSecrets) and exec secretEnvs. Absent: they are refused with 400 (same-name references work); clients should not send them, since a control host from before them would ignore or misread them.
The account's place in the line invite codes go out from and its referral link (docs/invites.md, "Referrals"). Absent: not in line (activated, the gate off, or a live code claimed for its email).
Show child attributes
Was this page helpful?
{"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/auth/the-signed-in-user-and-the-sandbox-size-they-get","slug":"/api-reference/auth/the-signed-in-user-and-the-sandbox-size-they-get","pageMetadata":{"title":"The signed-in user and the sandbox size they get.","description":"\"API keys: any key.\" Not behind the invite gate: `inviteRequired` and `activated` tell a client whether the account must redeem an invite code (`POST /v1/invites/redeem`) before the other routes answer.","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","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: [\"“API keys: any key.” Not behind the invite gate: \", _jsx(_components.code, {\n children: \"inviteRequired\"\n }), \" and \", _jsx(_components.code, {\n children: \"activated\"\n }), \" tell a client whether the account must redeem an invite code (\", _jsx(_components.code, {\n children: \"POST /v1/invites/redeem\"\n }), \") before the other routes answer.\"]\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":"The signed-in user and the sandbox size they get.","description":"\"API keys: any key.\" Not behind the invite gate: `inviteRequired` and `activated` tell a client whether the account must redeem an invite code (`POST /v1/invites/redeem`) before the other routes answer.","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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["auth"],"operationId":"getMe","summary":"The signed-in user and the sandbox size they get.","security":["c39c9c6c-dc4f-4c09-901d-2c170826cce7","e13d5a62-f051-466a-8f32-710f5e09ce8a","88a407eb-fcf4-4248-92a3-da35c49819c0"],"description":"\"API keys: any key.\" Not behind the invite gate: `inviteRequired` and `activated` tell a client whether the account must redeem an invite code (`POST /v1/invites/redeem`) before the other routes answer.","responses":{"200":"fdd2ce23-291e-47b2-aa06-dca75150d3d3","401":"d575c74d-d738-4514-9575-9d2a94b2dcb8","403":"dfe77774-8e21-4be6-b4bb-67073f41170f"},"method":"get","type":"path","servers":["e2c665bb-4b53-46fa-8dd3-3dba6e3ac4a8"],"path":"/v1/me","baseUrlOptions":["https://api.instabox.sh"],"title":"The signed-in user and the sandbox size they get.","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"responses":{"fdd2ce23-291e-47b2-aa06-dca75150d3d3":{"description":"The user.","content":{"application/json":{"schema":{"type":"object","required":["userId","login"],"properties":{"userId":{"type":"integer","format":"int64","description":"Instabox user ID.","isRequired":true,"uniqueKey":"userId","typeLabel":"integer\u003cint64>"},"login":{"type":"string","description":"GitHub login at last sign-in (display only).","isRequired":true,"uniqueKey":"login","typeLabel":"string"},"name":{"type":"string","uniqueKey":"name","typeLabel":"string"},"email":{"type":"string","description":"The account's email, which an org invite must be sent to for it to join.","uniqueKey":"email","typeLabel":"string"},"avatarUrl":{"type":"string","format":"uri","uniqueKey":"avatarUrl","typeLabel":"string\u003curi>"},"admin":{"type":"boolean","description":"The user is an admin and may use the admin-only endpoints (`/v1/admin`).","uniqueKey":"admin","typeLabel":"boolean"},"machineMetrics":{"type":"boolean","description":"Clients show this account per-sandbox metrics (the dashboard's Metrics tab, `instabox metrics`): admins always, every account once the server sets `machineMetricsForAll`. Absent: hidden. `GET /v1/machines/{id}/metrics` answers either way.","uniqueKey":"machineMetrics","typeLabel":"boolean"},"orgId":{"type":"string","description":"Set for a workspace API key: its workspace. The user is then the workspace's owner, whom the key acts as.","uniqueKey":"orgId","typeLabel":"string"},"adminUrl":{"type":"string","format":"uri","description":"Admins only: the origin of the admin console when it has its own (the server's `adminUrl`). Absent, the console is `/admin/` on the dashboard's origin.","uniqueKey":"adminUrl","typeLabel":"string\u003curi>"},"billingEnabled":{"type":"boolean","description":"Paid plans can be subscribed: the server has Stripe configured. False: the dashboard offers no plan actions and the billing routes answer 503.","uniqueKey":"billingEnabled","typeLabel":"boolean"},"webhooksEnabled":{"type":"boolean","description":"This server offers org webhooks (docs/webhooks.md). False: the dashboard hides them, the CLI says they are off and the webhook routes answer 404.","uniqueKey":"webhooksEnabled","typeLabel":"boolean"},"emailInvites":{"type":"boolean","description":"This server emails workspace invites (server.json `email`). Absent: creating or resending an invite answers 503.","uniqueKey":"emailInvites","typeLabel":"boolean"},"paidActivation":{"type":"boolean","description":"An account the invite gate holds back may buy a workspace (`POST /v1/orgs`) instead, and is activated once its plan takes effect (docs/invites.md). Absent: only an invite code lets it in.","uniqueKey":"paidActivation","typeLabel":"boolean"},"plans":{"type":"array","items":{"type":"object","description":"A paid plan as this server sells it (server.json `plans`).","required":["tier","monthlyFeeUSD","maxMachines","maxRunning","maxVCPUs","maxDiskGiB"],"properties":{"tier":{"type":"string","enum":["pro","builder","team"],"isRequired":true,"uniqueKey":"plans.items.[INDEX].tier","typeLabel":"enum\u003cstring>"},"monthlyFeeUSD":{"type":"number","description":"The monthly fee, also the usage it includes each month.","isRequired":true,"uniqueKey":"plans.items.[INDEX].monthlyFeeUSD","typeLabel":"number"},"maxMachines":{"type":"integer","description":"Sandboxes the org may have on this plan, every one billed; 0: no limit.","isRequired":true,"uniqueKey":"plans.items.[INDEX].maxMachines","typeLabel":"integer"},"maxRunning":{"type":"integer","description":"Paid sandboxes running at once; 0: no limit.","isRequired":true,"uniqueKey":"plans.items.[INDEX].maxRunning","typeLabel":"integer"},"maxVCPUs":{"type":"integer","description":"The largest sandbox size's vCPUs.","isRequired":true,"uniqueKey":"plans.items.[INDEX].maxVCPUs","typeLabel":"integer"},"maxDiskGiB":{"type":"integer","description":"How far a sandbox's disk (`/data`) may grow on this plan, in GiB (free 20, fixed: it neither grows nor shrinks; pro 200; builder 500; team and enterprise 1024); a disk already past it is kept. 0: no limit.","isRequired":true,"uniqueKey":"plans.items.[INDEX].maxDiskGiB","typeLabel":"integer"}},"uniqueKey":"plans.items.[INDEX]","typeLabel":"object"},"description":"The paid plans an org can go on (Pro, Builder, Team) as this server sells them, for plan pickers.","uniqueKey":"plans","typeLabel":"object[]"},"csrfToken":{"type":"string","description":"Browser sessions only. Send it as `X-Instabox-CSRF` on every request that is not GET or HEAD.","uniqueKey":"csrfToken","typeLabel":"string"},"allowedSpecs":{"type":"array","items":{"type":"object","description":"A sandbox's size.","required":["vcpus","memMiB","persistentDiskGiB"],"properties":{"vcpus":{"type":"integer","isRequired":true,"uniqueKey":"allowedSpecs.items.[INDEX].vcpus","typeLabel":"integer"},"memMiB":{"type":"integer","description":"Memory in MiB.","isRequired":true,"uniqueKey":"allowedSpecs.items.[INDEX].memMiB","typeLabel":"integer"},"persistentDiskGiB":{"type":"integer","description":"Disk (`/data`) size in GiB.","isRequired":true,"uniqueKey":"allowedSpecs.items.[INDEX].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":"allowedSpecs.items.[INDEX].rootDiskGiB","typeLabel":"integer"}},"uniqueKey":"allowedSpecs.items.[INDEX]","typeLabel":"object"},"description":"The sizes your new sandboxes may have in your personal org (no `rootDiskGiB`: the template's). The first is the server's `limits.machineSpec` (4 vCPUs and 8 GiB memory by default), what a create naming no size gets; the others are your plan's (Pro: 2/4, 4/8, 8/16; Builder: 2/4 up to 16/32; Team and Enterprise: 2/4 up to 32/64) and sizes an admin granted you, picked by naming their `vcpus` and `memMiB` on create. Any other size is refused with `spec_not_allowed`, admins included.","uniqueKey":"allowedSpecs","typeLabel":"object[]"},"org":{"type":"object","description":"The org `allowedSpecs`, `idleChoicesSeconds` and `alwaysOnAllowed` describe: your personal org, or a workspace key's workspace. Absent from older servers.","required":["id","name","tier","kind"],"properties":{"id":{"type":"string","description":"Org ID (org_...).","isRequired":true,"uniqueKey":"org.id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"org.name","typeLabel":"string"},"tier":{"type":"string","enum":["free","pro","builder","team","enterprise"],"description":"The org's plan.","isRequired":true,"uniqueKey":"org.tier","typeLabel":"enum\u003cstring>"},"kind":{"type":"string","enum":["personal","workspace"],"isRequired":true,"uniqueKey":"org.kind","typeLabel":"enum\u003cstring>"},"alwaysOnAllowed":{"type":"boolean","description":"Set on `GET /v1/me` (`org`, `workspaces`): this org's plan lets its sandboxes take `autoSuspendAfterSeconds` 0 (off). Absent on a plan that does not, elsewhere, and from older servers.","uniqueKey":"org.alwaysOnAllowed","typeLabel":"boolean"}},"uniqueKey":"org","typeLabel":"object"},"workspaces":{"type":"array","items":{"type":"object","required":["id","name","tier","kind"],"properties":{"id":{"type":"string","description":"Org ID (org_...).","isRequired":true,"uniqueKey":"workspaces.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"workspaces.items.[INDEX].name","typeLabel":"string"},"tier":{"type":"string","enum":["free","pro","builder","team","enterprise"],"description":"The org's plan.","isRequired":true,"uniqueKey":"workspaces.items.[INDEX].tier","typeLabel":"enum\u003cstring>"},"kind":{"type":"string","enum":["personal","workspace"],"isRequired":true,"uniqueKey":"workspaces.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"alwaysOnAllowed":{"type":"boolean","description":"Set on `GET /v1/me` (`org`, `workspaces`): this org's plan lets its sandboxes take `autoSuspendAfterSeconds` 0 (off). Absent on a plan that does not, elsewhere, and from older servers.","uniqueKey":"workspaces.items.[INDEX].alwaysOnAllowed","typeLabel":"boolean"}},"uniqueKey":"workspaces.items.[INDEX]","typeLabel":"object"},"description":"Your other orgs, each with its own plan and limits (`GET /v1/usage?org=ID`, `GET /v1/orgs/{id}`). Omitted when there are none, and for a workspace API key, which reaches only its own org.","uniqueKey":"workspaces","typeLabel":"object[]"},"inviteRequired":{"type":"boolean","description":"This server gates new accounts behind an invite code (docs/invites.md).","uniqueKey":"inviteRequired","typeLabel":"boolean"},"activated":{"type":"boolean","description":"This account passed the invite gate (admins always have). When `inviteRequired` and not `activated`, every route but this one, `POST /v1/invites/redeem` and `POST /v1/auth/logout` answers `403 invite_required`.","uniqueKey":"activated","typeLabel":"boolean"},"manualLifecycle":{"type":"boolean","description":"An admin let this account manage its sandboxes' lifecycle (docs/idle-suspend.md): the `autoSuspendAfterSeconds` it sends applies (0: off). Otherwise every sandbox pauses after `fixedAutoSuspendSeconds` idle, whatever a request says.","uniqueKey":"manualLifecycle","typeLabel":"boolean"},"fixedAutoSuspendSeconds":{"type":"integer","description":"The idle auto-suspend every sandbox of this account gets on a server that offers no choice; absent when the account chooses (`manualLifecycle`, or `idleChoicesSeconds`).","uniqueKey":"fixedAutoSuspendSeconds","typeLabel":"integer"},"idleChoicesSeconds":{"type":"array","items":{"type":"integer","uniqueKey":"idleChoicesSeconds.items.[INDEX]","typeLabel":"integer"},"description":"The idle times offered (300 to 1800, 5 to 30 minutes; docs/pricing.md): a request may send any whole minute from the first to the last. 0 (off) is never listed: `alwaysOnAllowed` says whether it is a choice too. Absent with `manualLifecycle`.","uniqueKey":"idleChoicesSeconds","typeLabel":"integer[]"},"alwaysOnAllowed":{"type":"boolean","description":"Whether 0 (off) is a choice too, on `org`'s plan (the personal org's for a sign-in session). A sandbox in another org follows that org's plan: see its `workspaces` entry's `alwaysOnAllowed`.","uniqueKey":"alwaysOnAllowed","typeLabel":"boolean"},"diskResize":{"type":"string","enum":["allow","deny"],"description":"An admin's override of disk growth (`PATCH /v1/machines/{id}` `persistentDiskGiB`, `rootDiskGiB`): `allow` grows free sandboxes' disks too, `deny` none. Absent: paid sandboxes grow, free ones are fixed.","uniqueKey":"diskResize","typeLabel":"enum\u003cstring>"},"resizeRestart":{"type":"boolean","description":"This server takes `PATCH /v1/machines/{id}` `apply: \"restart\"` (one stop, resize, start operation). Absent: it answers `400 resize_restart_off`; resize with your own stop, `PATCH`, start.","uniqueKey":"resizeRestart","typeLabel":"boolean"},"directSecretRefs":{"type":"boolean","description":"This site takes direct Secret file references and renamed variables (`directSecrets`) and exec `secretEnvs`. Absent: they are refused with 400 (same-name references work); clients should not send them, since a control host from before them would ignore or misread them.","uniqueKey":"directSecretRefs","typeLabel":"boolean"},"termsVersion":{"type":"string","description":"The version of the rules of the road (the Terms of Service's acceptable use) this account last agreed to (`PUT /v1/me/terms`). Absent: none.","uniqueKey":"termsVersion","typeLabel":"string"},"waitlist":{"type":"object","required":["referralUrl"],"description":"The account's place in the line invite codes go out from and its referral link (docs/invites.md, \"Referrals\"). Absent: not in line (activated, the gate off, or a live code claimed for its email).","properties":{"referralUrl":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"waitlist.referralUrl","typeLabel":"string\u003curi>"},"position":{"type":"integer","minimum":1,"description":"Absent when this server could not rank the line just now.","uniqueKey":"waitlist.position","typeLabel":"integer"}},"uniqueKey":"waitlist","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"userId":123,"login":"\u003cstring>","name":"\u003cstring>","email":"\u003cstring>","avatarUrl":"\u003cstring>","admin":true,"machineMetrics":true,"orgId":"\u003cstring>","adminUrl":"\u003cstring>","billingEnabled":true,"webhooksEnabled":true,"emailInvites":true,"paidActivation":true,"plans":[{"tier":"pro","monthlyFeeUSD":123,"maxMachines":123,"maxRunning":123,"maxVCPUs":123,"maxDiskGiB":123}],"csrfToken":"\u003cstring>","allowedSpecs":[{"vcpus":123,"memMiB":123,"persistentDiskGiB":123,"rootDiskGiB":123}],"org":{"id":"\u003cstring>","name":"\u003cstring>","tier":"free","kind":"personal","alwaysOnAllowed":true},"workspaces":[{"id":"\u003cstring>","name":"\u003cstring>","tier":"free","kind":"personal","alwaysOnAllowed":true}],"inviteRequired":true,"activated":true,"manualLifecycle":true,"fixedAutoSuspendSeconds":123,"idleChoicesSeconds":[123],"alwaysOnAllowed":true,"diskResize":"allow","resizeRestart":true,"directSecretRefs":true,"termsVersion":"\u003cstring>","waitlist":{"referralUrl":"\u003cstring>","position":2}}}},"exampleType":"generated"}},"exampleType":"generated"},"d575c74d-d738-4514-9575-9d2a94b2dcb8":{"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"},"dfe77774-8e21-4be6-b4bb-67073f41170f":{"description":"`permission_denied`: the user is not allowed (not on the allowlist, or not the owner), or an API key was used where only a sign-in session is; `missing_scope`: the API key lacks the route's scope (`requiredScopes` names it; older servers sent `insufficient_scope`).","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":{"c39c9c6c-dc4f-4c09-901d-2c170826cce7":{"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"}},"e13d5a62-f051-466a-8f32-710f5e09ce8a":{"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"}},"88a407eb-fcf4-4248-92a3-da35c49819c0":{"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":"The signed-in user and the sandbox size they get. - InstaBox","relatedPagesConfig":{"enabled":false,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T06:53:04.050Z","originalFileLocation":"api-reference/auth/the-signed-in-user-and-the-sandbox-size-they-get.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=\"\u0026quot;API keys: any key.\u0026quot; Not behind the invite gate: inviteRequired and activated tell a client whether the account must redeem an invite code (POST /v1/invites/redeem) before the other routes answer.\">\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=\"The signed-in user and the sandbox size they get. - InstaBox\">\u003cmeta data-mint-head property=\"og:description\" content=\"\u0026quot;API keys: any key.\u0026quot; Not behind the invite gate: inviteRequired and activated tell a client whether the account must redeem an invite code (POST /v1/invites/redeem) before the other routes answer.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"InstaBox\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://instabox.sh/docs/api-reference/auth/the-signed-in-user-and-the-sandbox-size-they-get\">\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=Account\u0026amp;title=The+signed-in+user+and+the+sandbox+size+they+get.\u0026amp;description=%22API+keys%3A+any+key.%22+Not+behind+the+invite+gate%3A+%60inviteRequired%60+and+%60activated%60+tell+a+client+whether+the+account+must+redeem+an+invite+code+%28%60POST+%2Fv1%2Finvite\u0026amp;theme=4d60089f83d6d00671834b24\u0026amp;signature=2ac73ee65bef5a4f86d3fd01760aebd727fee477598af3bcf5512786b91555ea\">\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=\"The signed-in user and the sandbox size they get. - InstaBox\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"\u0026quot;API keys: any key.\u0026quot; Not behind the invite gate: inviteRequired and activated tell a client whether the account must redeem an invite code (POST /v1/invites/redeem) before the other routes answer.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://instacloud.mintlify.site/docs/_mintlify/api/og/v2?division=Account\u0026amp;title=The+signed-in+user+and+the+sandbox+size+they+get.\u0026amp;description=%22API+keys%3A+any+key.%22+Not+behind+the+invite+gate%3A+%60inviteRequired%60+and+%60activated%60+tell+a+client+whether+the+account+must+redeem+an+invite+code+%28%60POST+%2Fv1%2Finvite\u0026amp;theme=4d60089f83d6d00671834b24\u0026amp;signature=2ac73ee65bef5a4f86d3fd01760aebd727fee477598af3bcf5512786b91555ea\">\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/auth/the-signed-in-user-and-the-sandbox-size-they-get\">\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/auth/the-signed-in-user-and-the-sandbox-size-they-get.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/auth/the-signed-in-user-and-the-sandbox-size-they-get#webpage\",\"url\":\"https://instabox.sh/docs/api-reference/auth/the-signed-in-user-and-the-sandbox-size-they-get\",\"name\":\"The signed-in user and the sandbox size they get.\",\"description\":\"\\\"API keys: any key.\\\" Not behind the invite gate: inviteRequired and activated tell a client whether the account must redeem an invite code (POST /v1/invites/redeem) before the other routes answer.\",\"dateModified\":\"2026-11-09T06:53:04.050Z\",\"isPartOf\":{\"@id\":\"https://instabox.sh/docs#website\"},\"breadcrumb\":{\"@id\":\"https://instabox.sh/docs/api-reference/auth/the-signed-in-user-and-the-sandbox-size-they-get#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://instabox.sh/docs/api-reference/auth/the-signed-in-user-and-the-sandbox-size-they-get#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API reference\",\"item\":\"https://instabox.sh/docs/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The signed-in user and the sandbox size they get.\",\"item\":\"https://instabox.sh/docs/api-reference/auth/the-signed-in-user-and-the-sandbox-size-they-get\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://instabox.sh/docs/api-reference/auth/the-signed-in-user-and-the-sandbox-size-they-get#apireference\",\"headline\":\"The signed-in user and the sandbox size they get.\",\"name\":\"The signed-in user and the sandbox size they get.\",\"description\":\"\\\"API keys: any key.\\\" Not behind the invite gate: inviteRequired and activated tell a client whether the account must redeem an invite code (POST /v1/invites/redeem) before the other routes answer.\",\"url\":\"https://instabox.sh/docs/api-reference/auth/the-signed-in-user-and-the-sandbox-size-they-get\",\"mainEntityOfPage\":{\"@id\":\"https://instabox.sh/docs/api-reference/auth/the-signed-in-user-and-the-sandbox-size-they-get#webpage\"},\"dateModified\":\"2026-11-09T06:53:04.050Z\",\"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.","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.","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.","description":"API keys require `machines:write`. Takes no body or Idempotency-Key.\nInstalls selected env values, proxy placeholders and the public CA;\nrequests proxy reconciliation and returns each path's current status.\nExisting processes must reload env values themselves. A refresh cannot\nerase credentials already copied by applications.\n","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.","description":"API keys: needs one of the scopes `machines:read`, `images:read`.","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":"The signed-in user and the sandbox size they get. - 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"]}