Returns the sandbox’s preview routing mode and its published ports.
For a strict public or private sandbox, only the ports listed here
are published at https://{port}-{sandbox_id}.<sandbox-domain>; every
other numeric port returns 404. Each row reports its independent access
mode. Private ports require a port-scoped token. Clients may send it in
a request header named X-Superserve-Preview-Token, or use the signed-link
query bootstrap described by PreviewTokenResponse; unknown ports
remain closed. An older legacy_public sandbox may still route every
listening port until it is updated to a strict mode.
GET
/
sandboxes
/
{sandbox_id}
/
preview-ports
List published preview ports
curl --request GET \
--url https://api.superserve.ai/sandboxes/{sandbox_id}/preview-ports \
--header 'X-API-Key: <api-key>'
The unique identifier of the sandbox.
Public sandbox ID: a bare UUID, or the region-tagged form sb-<region>-<uuid> (e.g. sb-use-1b4e28ba-…). Treat as an opaque string; the tagged form routes the request to the sandbox's home region. Endpoints accept both forms interchangeably.
Sandbox default for newly published ports. public and private
enforce the listed set; legacy_public preserves pre-publication
all-port routing for older sandboxes until they are updated.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Superserve","colors":{"primary":"#B2FAB4","light":"#B2FAB4","dark":"#B2FAB4"},"logo":"https://mintcdn.com/superserve-ai-superserve-33/G055TX3BjwXpQedU/logo.svg?fit=max\u0026auto=format\u0026n=G055TX3BjwXpQedU\u0026q=85\u0026s=69233fb550a17b81d7d7fa083ca7f3de","favicon":"https://mintcdn.com/superserve-ai-superserve-33/G055TX3BjwXpQedU/favicon.svg?fit=max\u0026auto=format\u0026n=G055TX3BjwXpQedU\u0026q=85\u0026s=5c49ee9ed883d587b192cd419a4747d8","appearance":{"default":"dark","strict":true},"background":{"decoration":"gradient","color":{"dark":"#141414"}},"navbar":{"links":[{"href":"https://github.com/superserve-ai/superserve","label":"GitHub","type":"github"}],"primary":{"type":"button","label":"Get Started","href":"https://console.superserve.ai/auth/signup/?utm_source=docs\u0026utm_medium=navbar"}},"footer":{"socials":{"x":"https://x.com/superserve_ai","github":"https://github.com/superserve-ai","linkedin":"https://www.linkedin.com/company/super-serve-ai"}},"fonts":{"heading":{"family":"Instrument Sans"},"body":{"family":"Instrument Sans"}},"styling":{"codeblocks":{"theme":{"light":"github-light","dark":"vitesse-dark"}},"latex":false},"integrations":{"posthog":{"apiKey":"phc_gjpDKKKQJAnkxkqLrPGrAhoariKsaHNuTpI5rVhkYre","apiHost":"https://p.superserve.ai"}},"contextual":{"options":["copy","view","claude","mcp","add-mcp","cursor","vscode"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"superserve-ai-superserve-33","hasAudioNarration":false,"actualSubdomain":"superserve-ai-superserve-33","customDomains":["docs.superserve.ai"],"gitSource":{"type":"github","owner":"superserve-ai","repo":"superserve","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adffab42bfdf246e7570477","collectionId":"26d313d8-8b08-417b-a978-6a4c8a1c625e","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adffab42bfdf246e7570477"},"entitlements":{},"buildId":"6ae021947e8b60a72ba306cc","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"REST API","count":51},{"language":"default","tag":"Documentation","count":31},{"language":"default","tag":"Sandboxes","count":14},{"language":"default","tag":"Cookbook","count":13},{"language":"default","tag":"Templates","count":13},{"language":"default","tag":"Sandbox","count":10},{"language":"default","tag":"Secrets","count":10},{"language":"default","tag":"SDK Reference","count":6},{"language":"default","tag":"Reference","count":6},{"language":"default","tag":"Team Management","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api-reference/sandboxes/list-published-preview-ports","slug":"/api-reference/sandboxes/list-published-preview-ports","pageMetadata":{"title":"List published preview ports","description":"Returns the sandbox's preview routing mode and its published ports.\nFor a strict `public` or `private` sandbox, only the ports listed here\nare published at `https://{port}-{sandbox_id}.\u003csandbox-domain>`; every\nother numeric port returns 404. Each row reports its independent access\nmode. Private ports require a port-scoped token. Clients may send it in\na request header named `X-Superserve-Preview-Token`, or use the signed-link\nquery bootstrap described by `PreviewTokenResponse`; unknown ports\nremain closed. An older `legacy_public` sandbox may still route every\nlistening port until it is updated to a strict mode.\n","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /sandboxes/{sandbox_id}/preview-ports","href":"/api-reference/sandboxes/list-published-preview-ports","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: [\"Returns the sandbox’s preview routing mode and its published ports.\\nFor a strict \", _jsx(_components.code, {\n children: \"public\"\n }), \" or \", _jsx(_components.code, {\n children: \"private\"\n }), \" sandbox, only the ports listed here\\nare published at \", _jsx(_components.code, {\n children: \"https://{port}-{sandbox_id}.\u003csandbox-domain>\"\n }), \"; every\\nother numeric port returns 404. Each row reports its independent access\\nmode. Private ports require a port-scoped token. Clients may send it in\\na request header named \", _jsx(_components.code, {\n children: \"X-Superserve-Preview-Token\"\n }), \", or use the signed-link\\nquery bootstrap described by \", _jsx(_components.code, {\n children: \"PreviewTokenResponse\"\n }), \"; unknown ports\\nremain closed. An older \", _jsx(_components.code, {\n children: \"legacy_public\"\n }), \" sandbox may still route every\\nlistening port until it is updated to a strict mode.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light","dark":"vitesse-dark"}},"config":{},"pageMetadata":{"title":"List published preview ports","description":"Returns the sandbox's preview routing mode and its published ports.\nFor a strict `public` or `private` sandbox, only the ports listed here\nare published at `https://{port}-{sandbox_id}.\u003csandbox-domain>`; every\nother numeric port returns 404. Each row reports its independent access\nmode. Private ports require a port-scoped token. Clients may send it in\na request header named `X-Superserve-Preview-Token`, or use the signed-link\nquery bootstrap described by `PreviewTokenResponse`; unknown ports\nremain closed. An older `legacy_public` sandbox may still route every\nlistening port until it is updated to a strict mode.\n","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /sandboxes/{sandbox_id}/preview-ports","href":"/api-reference/sandboxes/list-published-preview-ports","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"listSandboxPreviewPorts","tags":["Sandboxes"],"summary":"List published preview ports","description":"Returns the sandbox's preview routing mode and its published ports.\nFor a strict `public` or `private` sandbox, only the ports listed here\nare published at `https://{port}-{sandbox_id}.\u003csandbox-domain>`; every\nother numeric port returns 404. Each row reports its independent access\nmode. Private ports require a port-scoped token. Clients may send it in\na request header named `X-Superserve-Preview-Token`, or use the signed-link\nquery bootstrap described by `PreviewTokenResponse`; unknown ports\nremain closed. An older `legacy_public` sandbox may still route every\nlistening port until it is updated to a strict mode.\n","security":["d820f898-522b-4fc3-a2ac-eca1ca600355"],"responses":{"200":"9a446661-9f4f-44d5-ba46-a90e7e169264","401":"dc727326-f717-4cd5-be9c-1c7b09dc7965","403":"5c9b068e-5698-4b7f-90c5-bd4f9ed0117b","404":"c6576e7f-036a-4731-9f21-2e873d13efc7","500":"8c89b223-9257-4c1b-90da-c2b3af81201f"},"method":"get","type":"path","servers":["74750335-6cc1-440a-ba6c-1a5c5e90ad84"],"path":"/sandboxes/{sandbox_id}/preview-ports","baseUrlOptions":["https://api.superserve.ai"],"title":"List published preview ports","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"5391a721-cb97-41c6-a56b-92ea5cc88177":{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","pattern":"^(sb-[a-z0-9]+-)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$","description":"The unique identifier of the sandbox.\nPublic sandbox ID: a bare UUID, or the region-tagged form `sb-\u003cregion>-\u003cuuid>` (e.g. `sb-use-1b4e28ba-…`). Treat as an opaque string; the tagged form routes the request to the sandbox's home region. Endpoints accept both forms interchangeably.\n","isRequired":true,"uniqueKey":"","typeLabel":"string"},"description":"The unique identifier of the sandbox."}},"responses":{"9a446661-9f4f-44d5-ba46-a90e7e169264":{"description":"Preview routing mode and published-port set","content":{"application/json":{"schema":{"type":"object","required":["preview_access","ports"],"properties":{"preview_access":{"type":"string","enum":["legacy_public","public","private"],"description":"Sandbox default for newly published ports. `public` and `private`\nenforce the listed set; `legacy_public` preserves pre-publication\nall-port routing for older sandboxes until they are updated.\n","isRequired":true,"uniqueKey":"preview_access","typeLabel":"enum\u003cstring>"},"ports":{"type":"array","items":{"type":"object","required":["port","access","token_version"],"properties":{"port":{"type":"integer","minimum":1024,"maximum":65535,"not":{"enum":[49983]},"description":"Published port. Port 49983 is reserved for Superserve's sandbox service.","isRequired":true,"uniqueKey":"ports.items.[INDEX].port","typeLabel":"integer"},"access":{"type":"string","enum":["public","private"],"description":"Independent access mode for this published port. Requests to a\nprivate port must present its preview token using the header named\nby the token-mint response's `header` field, the signed-link query\nparameter named by `query_param`, or the cookie established by a\nsuccessful signed-link `GET` bootstrap.\n","isRequired":true,"uniqueKey":"ports.items.[INDEX].access","typeLabel":"enum\u003cstring>"},"token_version":{"type":"integer","format":"int64","minimum":1,"description":"Durable generation used to scope credentials for this port.\nRotation, access changes, and unpublish/re-publish advance it.\n","isRequired":true,"uniqueKey":"ports.items.[INDEX].token_version","typeLabel":"integer\u003cint64>"}},"uniqueKey":"ports.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"ports","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"preview_access":"legacy_public","ports":[{"port":33279,"access":"public","token_version":2}]}}},"exampleType":"generated"}},"exampleType":"generated"},"dc727326-f717-4cd5-be9c-1c7b09dc7965":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `build_failed`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"5c9b068e-5698-4b7f-90c5-bd4f9ed0117b":{"description":"Caller is authenticated but not allowed to perform the action","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `build_failed`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"c6576e7f-036a-4731-9f21-2e873d13efc7":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `build_failed`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"8c89b223-9257-4c1b-90da-c2b3af81201f":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","description":"Error envelope. `error.code` is a stable, machine-readable identifier\n(e.g. `bad_request`, `not_found`, `conflict`, `sandbox_pausing`,\n`rate_limited`, `too_many_builds`, `too_many_templates`, `too_many_sandboxes`,\n`image_pull_failed`, `step_failed`, `snapshot_failed`,\n`start_cmd_failed`, `ready_cmd_failed`, `build_failed`).\n`error.message` is human-readable and may change between releases;\nclients should branch on `code`, not `message`.\n","properties":{"error":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"d820f898-522b-4fc3-a2ac-eca1ca600355":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key","scopes":[],"schemeName":"apiKey"}}},"servers":{"74750335-6cc1-440a-ba6c-1a5c5e90ad84":{"url":"https://api.superserve.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","scopes":[],"schemeName":"apiKey"},"schema":{"title":"X-API-Key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"X-API-Key"}],"title":"apiKey"}]},"originalFileLocation":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml"},"subdomain":"superserve-ai-superserve-33","siteName":"Superserve","title":"List published preview ports - Superserve","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T03:59:19.450Z","originalFileLocation":"api-reference/sandboxes/list-published-preview-ports.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Returns the sandbox\u0026#x27;s preview routing mode and its published ports. For a strict public or private sandbox, only the ports listed here are published at https://{port}-{sandbox_id}.; every other numeric port returns 404. Each row reports its independent access mode. Private ports require a port-scoped token. Clients may send it in a request header named X-Superserve-Preview-Token, or use the signed-link query bootstrap described by PreviewTokenResponse; unknown ports remain closed. An older legacy_public sandbox may still route every listening port until it is updated to a strict mode.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Superserve\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List published preview ports - Superserve\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns the sandbox\u0026#x27;s preview routing mode and its published ports. For a strict public or private sandbox, only the ports listed here are published at https://{port}-{sandbox_id}.; every other numeric port returns 404. Each row reports its independent access mode. Private ports require a port-scoped token. Clients may send it in a request header named X-Superserve-Preview-Token, or use the signed-link query bootstrap described by PreviewTokenResponse; unknown ports remain closed. An older legacy_public sandbox may still route every listening port until it is updated to a strict mode.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Superserve\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.superserve.ai/api-reference/sandboxes/list-published-preview-ports\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://superserve-ai-superserve-33.mintlify.app/_mintlify/api/og/v2?division=Sandboxes\u0026amp;title=List+published+preview+ports\u0026amp;description=Returns+the+sandbox%27s+preview+routing+mode+and+its+published+ports.%0AFor+a+strict+%60public%60+or+%60private%60+sandbox%2C+only+the+ports+listed+here%0Aare+published+at+%60htt\u0026amp;theme=812d3aa274a9b09d054f08f6\u0026amp;signature=d37f208955d309d1266aa7722633d017b71bf70017b5c44a794e63568eaa9e61\">\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=\"List published preview ports - Superserve\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns the sandbox\u0026#x27;s preview routing mode and its published ports. For a strict public or private sandbox, only the ports listed here are published at https://{port}-{sandbox_id}.; every other numeric port returns 404. Each row reports its independent access mode. Private ports require a port-scoped token. Clients may send it in a request header named X-Superserve-Preview-Token, or use the signed-link query bootstrap described by PreviewTokenResponse; unknown ports remain closed. An older legacy_public sandbox may still route every listening port until it is updated to a strict mode.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://superserve-ai-superserve-33.mintlify.app/_mintlify/api/og/v2?division=Sandboxes\u0026amp;title=List+published+preview+ports\u0026amp;description=Returns+the+sandbox%27s+preview+routing+mode+and+its+published+ports.%0AFor+a+strict+%60public%60+or+%60private%60+sandbox%2C+only+the+ports+listed+here%0Aare+published+at+%60htt\u0026amp;theme=812d3aa274a9b09d054f08f6\u0026amp;signature=d37f208955d309d1266aa7722633d017b71bf70017b5c44a794e63568eaa9e61\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/superserve-ai-superserve-33/Ce0V87RVeZcleFb4/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Superserve\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#B2FAB4\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.superserve.ai/api-reference/sandboxes/list-published-preview-ports\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/sandboxes/list-published-preview-ports.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.superserve.ai/#organization\",\"name\":\"Superserve\",\"url\":\"https://docs.superserve.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/superserve-ai-superserve-33/G055TX3BjwXpQedU/logo.svg?fit=max\u0026auto=format\u0026n=G055TX3BjwXpQedU\u0026q=85\u0026s=69233fb550a17b81d7d7fa083ca7f3de\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.superserve.ai#website\",\"name\":\"Superserve\",\"url\":\"https://docs.superserve.ai\",\"publisher\":{\"@id\":\"https://docs.superserve.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.superserve.ai/api-reference/sandboxes/list-published-preview-ports#webpage\",\"url\":\"https://docs.superserve.ai/api-reference/sandboxes/list-published-preview-ports\",\"name\":\"List published preview ports\",\"description\":\"Returns the sandbox's preview routing mode and its published ports. For a strict public or private sandbox, only the ports listed here are published at https://{port}-{sandbox_id}.; every other numeric port returns 404. Each row reports its independent access mode. Private ports require a port-scoped token. Clients may send it in a request header named X-Superserve-Preview-Token, or use the signed-link query bootstrap described by PreviewTokenResponse; unknown ports remain closed. An older legacy_public sandbox may still route every listening port until it is updated to a strict mode.\",\"dateModified\":\"2026-10-27T03:59:19.450Z\",\"isPartOf\":{\"@id\":\"https://docs.superserve.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.superserve.ai/api-reference/sandboxes/list-published-preview-ports#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.superserve.ai/api-reference/sandboxes/list-published-preview-ports#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Sandboxes\",\"item\":\"https://docs.superserve.ai/api-reference/sandboxes/list-all-sandboxes\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"List published preview ports\",\"item\":\"https://docs.superserve.ai/api-reference/sandboxes/list-published-preview-ports\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.superserve.ai/api-reference/sandboxes/list-published-preview-ports#apireference\",\"headline\":\"List published preview ports\",\"name\":\"List published preview ports\",\"description\":\"Returns the sandbox's preview routing mode and its published ports. For a strict public or private sandbox, only the ports listed here are published at https://{port}-{sandbox_id}.; every other numeric port returns 404. Each row reports its independent access mode. Private ports require a port-scoped token. Clients may send it in a request header named X-Superserve-Preview-Token, or use the signed-link query bootstrap described by PreviewTokenResponse; unknown ports remain closed. An older legacy_public sandbox may still route every listening port until it is updated to a strict mode.\",\"url\":\"https://docs.superserve.ai/api-reference/sandboxes/list-published-preview-ports\",\"mainEntityOfPage\":{\"@id\":\"https://docs.superserve.ai/api-reference/sandboxes/list-published-preview-ports#webpage\"},\"dateModified\":\"2026-10-27T03:59:19.450Z\",\"publisher\":{\"@id\":\"https://docs.superserve.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.superserve.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Superserve\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Superserve","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/introduction"}]},{"anchor":"SDK Reference","icon":"code","pages":[{"title":"SDK Reference","href":"/sdk-reference/sandbox"}]},{"anchor":"REST API","icon":"server","groups":[{"group":"Sandboxes","pages":[{"title":"List all sandboxes","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /sandboxes","href":"/api-reference/sandboxes/list-all-sandboxes"},{"title":"Create a new sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /sandboxes","href":"/api-reference/sandboxes/create-a-new-sandbox"},{"title":"Get a sandbox by ID","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /sandboxes/{sandbox_id}","href":"/api-reference/sandboxes/get-a-sandbox-by-id"},{"title":"Partially update a running sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml patch /sandboxes/{sandbox_id}","href":"/api-reference/sandboxes/partially-update-a-running-sandbox"},{"title":"Delete a sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml delete /sandboxes/{sandbox_id}","href":"/api-reference/sandboxes/delete-a-sandbox"},{"title":"Pause a running sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /sandboxes/{sandbox_id}/pause","href":"/api-reference/sandboxes/pause-a-running-sandbox"},{"title":"Resume a paused sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /sandboxes/{sandbox_id}/resume","href":"/api-reference/sandboxes/resume-a-paused-sandbox"},{"title":"Activate a sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /sandboxes/{sandbox_id}/activate","href":"/api-reference/sandboxes/activate-a-sandbox"},{"title":"List a sandbox's egress activity","description":"The unified per-sandbox network log: every outbound connection the\nsandbox made, merged into one time-ordered stream, most recent first.\nEach row has a `kind` — `connection` (host, bytes, allow/deny verdict)\nor `request` (HTTP method, path, status, and the secret used, when a\ncredential was injected). Fields not relevant to a row's kind are\nomitted.\n\nFilter by time window (`since`/`before`) and `verdict`. Paginate by\npassing the response's `next_cursor` as `before` while `has_more` is\ntrue. A `verdict` filter returns only `connection` rows, since request\nrows carry no verdict.\n","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /sandboxes/{sandbox_id}/network","href":"/api-reference/sandboxes/list-a-sandboxs-egress-activity"},{"title":"List published preview ports","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /sandboxes/{sandbox_id}/preview-ports","href":"/api-reference/sandboxes/list-published-preview-ports"},{"title":"Publish or update a preview port","description":"Adds a port to the sandbox's published set, optionally with an explicit\n`public` or `private` mode. On a new row, omitted `access` inherits the\nsandbox's current `preview_access` default. On an existing row, omitted\n`access` preserves that row's current mode; only an explicit value\nchanges it. An explicit private publication is rejected while the\nsandbox remains `legacy_public`, because legacy routing exposes all ports.\n","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /sandboxes/{sandbox_id}/preview-ports","href":"/api-reference/sandboxes/publish-or-update-a-preview-port"},{"title":"Unpublish a preview port","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml delete /sandboxes/{sandbox_id}/preview-ports/{port}","href":"/api-reference/sandboxes/unpublish-a-preview-port"},{"title":"Mint a token for a private preview port","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /sandboxes/{sandbox_id}/preview-ports/{port}/token","href":"/api-reference/sandboxes/mint-a-token-for-a-private-preview-port"},{"title":"Rotate a private preview port's token generation","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /sandboxes/{sandbox_id}/preview-ports/{port}/token/rotate","href":"/api-reference/sandboxes/rotate-a-private-preview-ports-token-generation"}]},{"group":"Snapshots","pages":[{"title":"Snapshot a sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /sandboxes/{sandbox_id}/snapshot","href":"/api-reference/snapshots/snapshot-a-sandbox"},{"title":"List a sandbox's snapshots","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /sandboxes/{sandbox_id}/snapshots","href":"/api-reference/snapshots/list-a-sandboxs-snapshots"},{"title":"Get a snapshot","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /snapshots/{snapshot_id}","href":"/api-reference/snapshots/get-a-snapshot"},{"title":"Rename a snapshot","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml patch /snapshots/{snapshot_id}","href":"/api-reference/snapshots/rename-a-snapshot"},{"title":"Delete a snapshot","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml delete /snapshots/{snapshot_id}","href":"/api-reference/snapshots/delete-a-snapshot"}]},{"group":"Exec","pages":[{"title":"Run a command and wait for it to finish","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /exec","href":"/api-reference/exec/run-a-command-and-wait-for-it-to-finish"},{"title":"Run a command and stream output over SSE","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /exec/stream","href":"/api-reference/exec/run-a-command-and-stream-output-over-sse"},{"title":"Run a command over a WebSocket","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /exec/connect","href":"/api-reference/exec/run-a-command-over-a-websocket"}]},{"group":"Files","pages":[{"title":"List a directory inside a sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /sandboxes/{sandbox_id}/files","href":"/api-reference/files/list-a-directory-inside-a-sandbox"},{"title":"Read a file from a sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /files","href":"/api-reference/files/read-a-file-from-a-sandbox"},{"title":"Write a file to a sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /files","href":"/api-reference/files/write-a-file-to-a-sandbox"}]},{"group":"Templates","pages":[{"title":"List templates visible to the caller","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /templates","href":"/api-reference/templates/list-templates-visible-to-the-caller"},{"title":"Create a template and kick off the first build","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /templates","href":"/api-reference/templates/create-a-template-and-kick-off-the-first-build"},{"title":"Get a template by ID","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /templates/{template_id}","href":"/api-reference/templates/get-a-template-by-id"},{"title":"Delete a template","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml delete /templates/{template_id}","href":"/api-reference/templates/delete-a-template"},{"title":"List recent builds for a template","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /templates/{template_id}/builds","href":"/api-reference/templates/list-recent-builds-for-a-template"},{"title":"Rebuild an existing template","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /templates/{template_id}/builds","href":"/api-reference/templates/rebuild-an-existing-template"},{"title":"Get a build by ID","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /templates/{template_id}/builds/{build_id}","href":"/api-reference/templates/get-a-build-by-id"},{"title":"Cancel an in-flight build","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml delete /templates/{template_id}/builds/{build_id}","href":"/api-reference/templates/cancel-an-in-flight-build"},{"title":"Stream build logs via SSE","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /templates/{template_id}/builds/{build_id}/logs","href":"/api-reference/templates/stream-build-logs-via-sse"}]},{"group":"Secrets","pages":[{"title":"Create a secret","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /secrets","href":"/api-reference/secrets/create-a-secret"},{"title":"List secrets for the calling team","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /secrets","href":"/api-reference/secrets/list-secrets-for-the-calling-team"},{"title":"Get a secret's metadata","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /secrets/{name}","href":"/api-reference/secrets/get-a-secrets-metadata"},{"title":"Rotate a secret's value","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml patch /secrets/{name}","href":"/api-reference/secrets/rotate-a-secrets-value"},{"title":"Revoke a secret","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml delete /secrets/{name}","href":"/api-reference/secrets/revoke-a-secret"},{"title":"Attach a secret to a sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /sandboxes/{sandbox_id}/secrets","href":"/api-reference/sandboxes/attach-a-secret-to-a-sandbox"},{"title":"Detach a secret from a sandbox","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml delete /sandboxes/{sandbox_id}/secrets/{env_key}","href":"/api-reference/sandboxes/detach-a-secret-from-a-sandbox"},{"title":"List proxy egress events that used this credential","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /secrets/{name}/audit","href":"/api-reference/secrets/list-proxy-egress-events-that-used-this-credential"},{"title":"List sandboxes currently bound to this credential","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /secrets/{name}/sandboxes","href":"/api-reference/secrets/list-sandboxes-currently-bound-to-this-credential"},{"title":"List the built-in provider shortcut catalog","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /providers","href":"/api-reference/secrets/list-the-built-in-provider-shortcut-catalog"}]},{"group":"Team Management","pages":[{"title":"List team members","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /teams/{team_id}/members","href":"/api-reference/rbac/list-team-members"},{"title":"Add or invite a team member","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /teams/{team_id}/members","href":"/api-reference/rbac/add-or-invite-a-team-member"},{"title":"Deactivate a team member","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml delete /teams/{team_id}/members/{user_id}","href":"/api-reference/rbac/deactivate-a-team-member"},{"title":"List team role assignments","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /teams/{team_id}/roles","href":"/api-reference/rbac/list-team-role-assignments"},{"title":"Assign a team role","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml post /teams/{team_id}/roles","href":"/api-reference/rbac/assign-a-team-role"},{"title":"Revoke a team role","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml delete /teams/{team_id}/roles/{assignment_id}","href":"/api-reference/rbac/revoke-a-team-role"}]},{"group":"Activity","pages":[{"title":"List team audit-log activity","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/superserve-ai/sandbox/refs/heads/main/api/openapi.yaml get /activity","href":"/api-reference/activity/list-team-audit-log-activity"}]}]},{"anchor":"Cookbook","icon":"utensils","pages":[{"title":"Cookbook","href":"/integrations/coding-agents/claude"}]}]},"title":"List published preview ports - Superserve","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-D5fEM6aW.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}