{
"error": {
"message": "Your API key has been disabled due to insufficient credits. Visit https://app.sailresearch.com/billing to add credits.",
"type": "billing_error",
"param": null,
"code": "credits_exhausted",
"billing_url": "https://app.sailresearch.com/billing"
}
}
{
"error": {
"message": "sailboxes require an organization-scoped API key",
"type": "permission_error",
"param": null,
"code": null
}
}
{
"error": {
"message": "no such file or directory: /skills/review.md",
"type": "not_found_error",
"param": null,
"code": "not_found"
}
}
{
"error": {
"message": "idempotent request still in flight",
"type": "server_error",
"param": null,
"code": null
}
}
Volumes
List a directory on a volume
Returns a directory’s immediate entries, sorted by name, without descending into subdirectories. The volume does not have to be mounted in a Sailbox.
{
"error": {
"message": "Your API key has been disabled due to insufficient credits. Visit https://app.sailresearch.com/billing to add credits.",
"type": "billing_error",
"param": null,
"code": "credits_exhausted",
"billing_url": "https://app.sailresearch.com/billing"
}
}
{
"error": {
"message": "sailboxes require an organization-scoped API key",
"type": "permission_error",
"param": null,
"code": null
}
}
{
"error": {
"message": "no such file or directory: /skills/review.md",
"type": "not_found_error",
"param": null,
"code": "not_found"
}
}
Path on the volume, relative to its root, with or without a leading slash: skills/review.md and /skills/review.md name the same file. A .. segment is rejected. Leave it out for the volume's root.
The directory's immediate entries, sorted by name.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Sail Research","colors":{"primary":"#2c4681","light":"#8ba2dd","dark":"#2c4681"},"logo":{"light":"https://mintcdn.com/sailresearch/X8kOeTTR9DVS13DJ/logo/solo.svg?fit=max\u0026auto=format\u0026n=X8kOeTTR9DVS13DJ\u0026q=85\u0026s=45e472c8b5c89f0235ef55e4953f7075","dark":"https://mintcdn.com/sailresearch/X8kOeTTR9DVS13DJ/logo/solo-white.svg?fit=max\u0026auto=format\u0026n=X8kOeTTR9DVS13DJ\u0026q=85\u0026s=aa38acb72785fa2780f0b79c8ec247af"},"favicon":"https://mintcdn.com/sailresearch/aahfB_XYfgCoK57N/favicon.svg?fit=max\u0026auto=format\u0026n=aahfB_XYfgCoK57N\u0026q=85\u0026s=fa6a1adfca07b5313cfb218d6c30687d","appearance":{"default":"system"},"navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://app.sailresearch.com"}},"footer":{"socials":{"x":"https://x.com/sailresearchco","github":"https://github.com/sailresearchco","slack":"https://join.slack.com/t/sailresearchcrew/shared_invite/zt-41pdcym9j-UU0Ey~A~r6n2H0DQVQsQHQ","linkedin":"https://www.linkedin.com/company/sailresearch"}},"search":{"prompt":"Search (⌘K)"},"seo":{"metatags":{"og:image":"/images/og.png"}},"fonts":{"heading":{"family":"Geist"},"body":{"family":"Geist"}},"integrations":{"telemetry":{"enabled":false}},"contextual":{"options":["copy","chatgpt","claude","cursor","mcp"],"display":"header"},"interaction":{"drilldown":false},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"sailresearch","hasAudioNarration":false,"actualSubdomain":"sailresearch","customDomains":["docs.sailresearch.com"],"gitSource":{"type":"github","owner":"sailresearchco","repo":"sail","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"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":"6aefeac88e01a92054bfe742","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Reference","count":100},{"language":"default","tag":"Sailbox","count":82},{"language":"default","tag":"HTTP API","count":77},{"language":"default","tag":"Documentation","count":42},{"language":"default","tag":"Lifecycle","count":16},{"language":"default","tag":"Inference","count":13},{"language":"default","tag":"Sailboxes","count":13},{"language":"default","tag":"Volumes","count":13},{"language":"default","tag":"Inference APIs","count":11},{"language":"default","tag":"Exec","count":10}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@sailresearch.com","showHelpButton":false}},"basePath":"","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":true},"customCss":[{"filePath":"style.css","href":"/_mintlify/custom/sailresearch/9dde1342574a43da/style.css"}],"page":{"pagePath":"api-reference/volumes/list-a-directory-on-a-volume","slug":"/api-reference/volumes/list-a-directory-on-a-volume","pageMetadata":{"title":"List a directory on a volume","description":"Returns a directory's immediate entries, sorted by name, without descending into subdirectories. The volume does not have to be mounted in a Sailbox.","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailbox-volumes/{volume_id}/directories","href":"/api-reference/volumes/list-a-directory-on-a-volume","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Returns a directory’s immediate entries, sorted by name, without descending into subdirectories. The volume does not have to be mounted in a Sailbox.\"\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":"List a directory on a volume","description":"Returns a directory's immediate entries, sorted by name, without descending into subdirectories. The volume does not have to be mounted in a Sailbox.","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailbox-volumes/{volume_id}/directories","href":"/api-reference/volumes/list-a-directory-on-a-volume","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/sailresearch/53cdab3a0f4c571b/navbar-auth.js","/_mintlify/custom/sailresearch/351959972cc7827e/cost-calculator-data.js","/_mintlify/custom/sailresearch/1bd7165bcfbd1e54/cost-calculator.js","/_mintlify/custom/sailresearch/7593358cae5a220f/one-shot-prompt.js","/_mintlify/custom/sailresearch/19a656aba0175d42/posthog-events.js","/_mintlify/custom/sailresearch/ee32dacc45e6eb1f/reference-fold.js","/_mintlify/custom/sailresearch/605beaca210d6425/cursor-setup.js","/_mintlify/custom/sailresearch/c2373d1aa5edcffe/price-comparison-data.js","/_mintlify/custom/sailresearch/74da3abd3a623529/price-comparison.js","/_mintlify/custom/sailresearch/3756b4c1fcdcbfd0/zdr-navigation.js","/_mintlify/custom/sailresearch/a81b3a5667a3b4e2/support-feedback.js"],"openApiReferenceData":{"operation":{"operationId":"listVolumeDirectory","tags":["Volumes"],"summary":"List a directory on a volume","description":"Returns a directory's immediate entries, sorted by name, without descending into subdirectories. The volume does not have to be mounted in a Sailbox.","parameters":["b7be4472-d2cd-4da4-a343-a42c1dde8380","bedaa767-06bb-4e3a-8bc0-fa65b90587ae"],"responses":{"200":"7d86f788-2fbd-4ea4-9ea9-3b7de7c68abc","400":"5a5d36b5-d653-4220-a0ed-a6bda57371ea","401":"da00ae19-8184-4f73-9412-da8ecab5c8f4","402":"767bb9f3-28d9-455f-a2b1-4cade2333db2","403":"db2cb346-f3fa-47f8-927b-eae16b2f0dca","404":"66284e3a-885f-4ba3-bfcc-abacf88e0517","409":"490d69b6-4f59-4541-9e87-99a25689f480","429":"6e0b2c56-e66b-4476-9c44-569795a02f6a","500":"fe9a14ba-74df-47a0-9fe4-d5f9dc84b132","503":"8fe28fd1-f364-42b7-96d9-69f74c6bc101","504":"9c4f0947-eb3d-4d24-bebb-ded4794eb42e"},"method":"get","type":"path","servers":["1fb71d47-ddd0-433b-b883-f64e5f882f47"],"security":["ae7e83fa-4546-4ac5-8b85-6579bacbbf74"],"path":"/sailbox-volumes/{volume_id}/directories","baseUrlOptions":["https://sailbox-api.sailresearch.com/v1"],"title":"List a directory on a volume","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"b7be4472-d2cd-4da4-a343-a42c1dde8380":{"name":"volume_id","in":"path","required":true,"schema":{"type":"string","pattern":"^vol_","isRequired":true,"description":"Id of the volume, as returned by create.","uniqueKey":"","typeLabel":"string"},"description":"Id of the volume, as returned by create."},"bedaa767-06bb-4e3a-8bc0-fa65b90587ae":{"name":"path","in":"query","required":false,"schema":{"type":"string","default":"/","maxLength":4096,"isRequired":false,"description":"Path on the volume, relative to its root, with or without a leading slash: `skills/review.md` and `/skills/review.md` name the same file. A `..` segment is rejected. Leave it out for the volume's root.","uniqueKey":"","typeLabel":"string"},"description":"Path on the volume, relative to its root, with or without a leading slash: `skills/review.md` and `/skills/review.md` name the same file. A `..` segment is rejected. Leave it out for the volume's root."}},"responses":{"7d86f788-2fbd-4ea4-9ea9-3b7de7c68abc":{"description":"The entries.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"entries":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"Name of the entry, without its directory.","isRequired":true,"uniqueKey":"entries.items.[INDEX].name","typeLabel":"string"},"type":{"type":"string","description":"What the entry is: `file`, `directory`, `symlink`, or `other`. A symlink is reported as itself in a listing, and as what it points at when you ask for one path.","isRequired":true,"uniqueKey":"entries.items.[INDEX].type","typeLabel":"string"},"size":{"type":"integer","format":"int64","minimum":0,"description":"Size in bytes.","isRequired":true,"uniqueKey":"entries.items.[INDEX].size","typeLabel":"integer\u003cint64>"},"modified_time":{"type":"number","description":"When the entry last changed, in seconds since the Unix epoch.","isRequired":true,"uniqueKey":"entries.items.[INDEX].modified_time","typeLabel":"number"},"mode":{"type":"integer","minimum":0,"maximum":4095,"description":"POSIX permission bits, as a decimal number.","isRequired":true,"uniqueKey":"entries.items.[INDEX].mode","typeLabel":"integer"}},"required":["name","type","size","modified_time","mode"],"uniqueKey":"entries.items.[INDEX]","typeLabel":"object"},"description":"The directory's immediate entries, sorted by name.","isRequired":true,"uniqueKey":"entries","typeLabel":"object[]"}},"required":["entries"],"uniqueKey":"","typeLabel":"object"},"example":{"entries":[{"name":"review.md","type":"file","size":2048,"modified_time":1782907200.5,"mode":420},{"name":"templates","type":"directory","size":0,"modified_time":1782907200,"mode":493}]},"examples":{"Example":{"title":"Example","value":{"entries":[{"name":"review.md","type":"file","size":2048,"modified_time":1782907200.5,"mode":420},{"name":"templates","type":"directory","size":0,"modified_time":1782907200,"mode":493}]}}},"exampleType":"examples"}},"exampleType":"examples"},"5a5d36b5-d653-4220-a0ed-a6bda57371ea":{"description":"The `path` is missing, too long, or contains a `..` segment, or an upload's body ended before it was complete.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","type","param","code"],"properties":{"message":{"type":"string","description":"Human-readable description of what went wrong.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","description":"Error category: `invalid_request_error`, `authentication_error`, `permission_error`, `billing_error`, `not_found_error`, `conflict_error`, `rate_limit_error`, `quota_exceeded_error`, `not_implemented_error`, or `server_error`.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"param":{"oneOf":[{"type":"string","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.param","typeLabel":"string | null"},"code":{"oneOf":[{"type":"string","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"integer","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.1","typeLabel":"integer"},{"type":"null","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.2","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string | integer | null"},"billing_url":{"type":"string","format":"uri","description":"Page where you add credits. Sent with a 402.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"message":"memory_limit_mib must be between 16384 and 262144","type":"invalid_request_error","param":null,"code":null}},"examples":{"Example":{"title":"Example","value":{"error":{"message":"memory_limit_mib must be between 16384 and 262144","type":"invalid_request_error","param":null,"code":null}}}},"exampleType":"examples"}},"exampleType":"examples"},"da00ae19-8184-4f73-9412-da8ecab5c8f4":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","type","param","code"],"properties":{"message":{"type":"string","description":"Human-readable description of what went wrong.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","description":"Error category: `invalid_request_error`, `authentication_error`, `permission_error`, `billing_error`, `not_found_error`, `conflict_error`, `rate_limit_error`, `quota_exceeded_error`, `not_implemented_error`, or `server_error`.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"param":{"oneOf":[{"type":"string","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.param","typeLabel":"string | null"},"code":{"oneOf":[{"type":"string","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"integer","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.1","typeLabel":"integer"},{"type":"null","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.2","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string | integer | null"},"billing_url":{"type":"string","format":"uri","description":"Page where you add credits. Sent with a 402.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"message":"Invalid API key","type":"authentication_error","param":null,"code":"invalid_api_key"}},"examples":{"Example":{"title":"Example","value":{"error":{"message":"Invalid API key","type":"authentication_error","param":null,"code":"invalid_api_key"}}}},"exampleType":"examples"}},"exampleType":"examples"},"767bb9f3-28d9-455f-a2b1-4cade2333db2":{"description":"The organization is out of credits. The error carries a `billing_url` pointing at the page where you add them. Retry once you have.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","type","param","code"],"properties":{"message":{"type":"string","description":"Human-readable description of what went wrong.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","description":"Error category: `invalid_request_error`, `authentication_error`, `permission_error`, `billing_error`, `not_found_error`, `conflict_error`, `rate_limit_error`, `quota_exceeded_error`, `not_implemented_error`, or `server_error`.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"param":{"oneOf":[{"type":"string","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.param","typeLabel":"string | null"},"code":{"oneOf":[{"type":"string","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"integer","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.1","typeLabel":"integer"},{"type":"null","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.2","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string | integer | null"},"billing_url":{"type":"string","format":"uri","description":"Page where you add credits. Sent with a 402.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"message":"Your API key has been disabled due to insufficient credits. Visit https://app.sailresearch.com/billing to add credits.","type":"billing_error","param":null,"code":"credits_exhausted","billing_url":"https://app.sailresearch.com/billing"}},"examples":{"Example":{"title":"Example","value":{"error":{"message":"Your API key has been disabled due to insufficient credits. Visit https://app.sailresearch.com/billing to add credits.","type":"billing_error","param":null,"code":"credits_exhausted","billing_url":"https://app.sailresearch.com/billing"}}}},"exampleType":"examples"}},"exampleType":"examples"},"db2cb346-f3fa-47f8-927b-eae16b2f0dca":{"description":"The API key is not allowed to perform this operation.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","type","param","code"],"properties":{"message":{"type":"string","description":"Human-readable description of what went wrong.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","description":"Error category: `invalid_request_error`, `authentication_error`, `permission_error`, `billing_error`, `not_found_error`, `conflict_error`, `rate_limit_error`, `quota_exceeded_error`, `not_implemented_error`, or `server_error`.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"param":{"oneOf":[{"type":"string","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.param","typeLabel":"string | null"},"code":{"oneOf":[{"type":"string","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"integer","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.1","typeLabel":"integer"},{"type":"null","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.2","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string | integer | null"},"billing_url":{"type":"string","format":"uri","description":"Page where you add credits. Sent with a 402.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"message":"sailboxes require an organization-scoped API key","type":"permission_error","param":null,"code":null}},"examples":{"Example":{"title":"Example","value":{"error":{"message":"sailboxes require an organization-scoped API key","type":"permission_error","param":null,"code":null}}}},"exampleType":"examples"}},"exampleType":"examples"},"66284e3a-885f-4ba3-bfcc-abacf88e0517":{"description":"No volume with that id exists in your organization, or nothing exists at `path`. A missing path sets the error's `code` to `not_found`; a missing volume leaves it `null`.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","type","param","code"],"properties":{"message":{"type":"string","description":"Human-readable description of what went wrong.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","description":"Error category: `invalid_request_error`, `authentication_error`, `permission_error`, `billing_error`, `not_found_error`, `conflict_error`, `rate_limit_error`, `quota_exceeded_error`, `not_implemented_error`, or `server_error`.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"param":{"oneOf":[{"type":"string","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.param","typeLabel":"string | null"},"code":{"oneOf":[{"type":"string","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"integer","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.1","typeLabel":"integer"},{"type":"null","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.2","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string | integer | null"},"billing_url":{"type":"string","format":"uri","description":"Page where you add credits. Sent with a 402.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"message":"no such file or directory: /skills/review.md","type":"not_found_error","param":null,"code":"not_found"}},"examples":{"Example":{"title":"Example","value":{"error":{"message":"no such file or directory: /skills/review.md","type":"not_found_error","param":null,"code":"not_found"}}}},"exampleType":"examples"}},"exampleType":"examples"},"490d69b6-4f59-4541-9e87-99a25689f480":{"description":"The volume is not `ready`, its storage type does not support file access, or the path is the wrong kind for the operation, such as reading a directory as a file.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","type","param","code"],"properties":{"message":{"type":"string","description":"Human-readable description of what went wrong.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","description":"Error category: `invalid_request_error`, `authentication_error`, `permission_error`, `billing_error`, `not_found_error`, `conflict_error`, `rate_limit_error`, `quota_exceeded_error`, `not_implemented_error`, or `server_error`.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"param":{"oneOf":[{"type":"string","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.param","typeLabel":"string | null"},"code":{"oneOf":[{"type":"string","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"integer","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.1","typeLabel":"integer"},{"type":"null","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.2","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string | integer | null"},"billing_url":{"type":"string","format":"uri","description":"Page where you add credits. Sent with a 402.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"message":"is a directory: /skills","type":"conflict_error","param":null,"code":"failed_precondition"}},"examples":{"Example":{"title":"Example","value":{"error":{"message":"is a directory: /skills","type":"conflict_error","param":null,"code":"failed_precondition"}}}},"exampleType":"examples"}},"exampleType":"examples"},"6e0b2c56-e66b-4476-9c44-569795a02f6a":{"description":"Too many requests in flight, or the organization is at a limit. A `Retry-After` header means the request never started, so retry it unchanged after that delay. Without one, the request ran and hit the limit `message` names. Some of those clear on their own, such as a shortage of public ports; others need you to free something up first. Send the request again once the cause is gone.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","type","param","code"],"properties":{"message":{"type":"string","description":"Human-readable description of what went wrong.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","description":"Error category: `invalid_request_error`, `authentication_error`, `permission_error`, `billing_error`, `not_found_error`, `conflict_error`, `rate_limit_error`, `quota_exceeded_error`, `not_implemented_error`, or `server_error`.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"param":{"oneOf":[{"type":"string","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.param","typeLabel":"string | null"},"code":{"oneOf":[{"type":"string","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"integer","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.1","typeLabel":"integer"},{"type":"null","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.2","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string | integer | null"},"billing_url":{"type":"string","format":"uri","description":"Page where you add credits. Sent with a 402.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"message":"Too many concurrent requests. Please retry after some of your organization's in-flight requests complete.","type":"rate_limit_error","param":null,"code":"rate_limited"}},"examples":{"Example":{"title":"Example","value":{"error":{"message":"Too many concurrent requests. Please retry after some of your organization's in-flight requests complete.","type":"rate_limit_error","param":null,"code":"rate_limited"}}}},"exampleType":"examples"}},"headers":{"Retry-After":{"description":"How many seconds to wait before retrying. On a 429 it also means the request never started, so the retry can reuse the same `Idempotency-Key`.","schema":{"type":"integer","minimum":0}}},"exampleType":"examples"},"fe9a14ba-74df-47a0-9fe4-d5f9dc84b132":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","type","param","code"],"properties":{"message":{"type":"string","description":"Human-readable description of what went wrong.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","description":"Error category: `invalid_request_error`, `authentication_error`, `permission_error`, `billing_error`, `not_found_error`, `conflict_error`, `rate_limit_error`, `quota_exceeded_error`, `not_implemented_error`, or `server_error`.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"param":{"oneOf":[{"type":"string","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.param","typeLabel":"string | null"},"code":{"oneOf":[{"type":"string","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"integer","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.1","typeLabel":"integer"},{"type":"null","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.2","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string | integer | null"},"billing_url":{"type":"string","format":"uri","description":"Page where you add credits. Sent with a 402.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"message":"failed to fetch sailbox","type":"server_error","param":null,"code":null}},"examples":{"Example":{"title":"Example","value":{"error":{"message":"failed to fetch sailbox","type":"server_error","param":null,"code":null}}}},"exampleType":"examples"}},"exampleType":"examples"},"8fe28fd1-f364-42b7-96d9-69f74c6bc101":{"description":"Too many file operations are running against volumes right now, or Sail is momentarily unavailable. Retry after the delay in the `Retry-After` header when one is present, and with backoff otherwise.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","type","param","code"],"properties":{"message":{"type":"string","description":"Human-readable description of what went wrong.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","description":"Error category: `invalid_request_error`, `authentication_error`, `permission_error`, `billing_error`, `not_found_error`, `conflict_error`, `rate_limit_error`, `quota_exceeded_error`, `not_implemented_error`, or `server_error`.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"param":{"oneOf":[{"type":"string","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.param","typeLabel":"string | null"},"code":{"oneOf":[{"type":"string","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"integer","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.1","typeLabel":"integer"},{"type":"null","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.2","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string | integer | null"},"billing_url":{"type":"string","format":"uri","description":"Page where you add credits. Sent with a 402.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"message":"Authentication service unavailable","type":"server_error","param":null,"code":null}},"examples":{"Example":{"title":"Example","value":{"error":{"message":"Authentication service unavailable","type":"server_error","param":null,"code":null}}}},"exampleType":"examples"}},"headers":{"Retry-After":{"description":"How many seconds to wait before retrying. On a 429 it also means the request never started, so the retry can reuse the same `Idempotency-Key`.","schema":{"type":"integer","minimum":0}}},"exampleType":"examples"},"9c4f0947-eb3d-4d24-bebb-ded4794eb42e":{"description":"The operation outran its deadline. Retry it.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","type","param","code"],"properties":{"message":{"type":"string","description":"Human-readable description of what went wrong.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","description":"Error category: `invalid_request_error`, `authentication_error`, `permission_error`, `billing_error`, `not_found_error`, `conflict_error`, `rate_limit_error`, `quota_exceeded_error`, `not_implemented_error`, or `server_error`.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"param":{"oneOf":[{"type":"string","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the error refers to, when the error is about one field.","isRequired":true,"uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.param","typeLabel":"string | null"},"code":{"oneOf":[{"type":"string","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"integer","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.1","typeLabel":"integer"},{"type":"null","description":"Stable short code for the error, when one applies. Errors relayed from the Sailbox runtime carry its status token, for example `already_exists` or `failed_precondition` on a 409, which the HTTP status alone does not distinguish.","isRequired":true,"uniqueKey":"error.code.oneOf.2","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string | integer | null"},"billing_url":{"type":"string","format":"uri","description":"Page where you add credits. Sent with a 402.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"message":"idempotent request still in flight","type":"server_error","param":null,"code":null}},"examples":{"Example":{"title":"Example","value":{"error":{"message":"idempotent request still in flight","type":"server_error","param":null,"code":null}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"ae7e83fa-4546-4ac5-8b85-6579bacbbf74":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"1fb71d47-ddd0-433b-b883-f64e5f882f47":{"url":"https://sailbox-api.sailresearch.com/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API Key","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"sailbox-openapi.json"},"subdomain":"sailresearch","siteName":"Sail Research","title":"List a directory on a volume - Sail Research","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-07T17:38:08.174Z","originalFileLocation":"api-reference/volumes/list-a-directory-on-a-volume.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Returns a directory\u0026#x27;s immediate entries, sorted by name, without descending into subdirectories. The volume does not have to be mounted in a Sailbox.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Sail Research\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/sailresearch/BWUDTf48u3tNnszQ/_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/sailresearch/BWUDTf48u3tNnszQ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/sailresearch/BWUDTf48u3tNnszQ/_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/sailresearch/BWUDTf48u3tNnszQ/_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/sailresearch/BWUDTf48u3tNnszQ/_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/sailresearch/BWUDTf48u3tNnszQ/_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/sailresearch/BWUDTf48u3tNnszQ/_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/sailresearch/BWUDTf48u3tNnszQ/_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/sailresearch/BWUDTf48u3tNnszQ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List a directory on a volume - Sail Research\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns a directory\u0026#x27;s immediate entries, sorted by name, without descending into subdirectories. The volume does not have to be mounted in a Sailbox.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Sail Research\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.sailresearch.com/api-reference/volumes/list-a-directory-on-a-volume\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://sailresearch.mintlify.site/images/og.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"List a directory on a volume - Sail Research\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns a directory\u0026#x27;s immediate entries, sorted by name, without descending into subdirectories. The volume does not have to be mounted in a Sailbox.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://sailresearch.mintlify.site/images/og.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/sailresearch/BWUDTf48u3tNnszQ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Sail Research\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2c4681\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.sailresearch.com/api-reference/volumes/list-a-directory-on-a-volume\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/volumes/list-a-directory-on-a-volume.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.sailresearch.com/#organization\",\"name\":\"Sail Research\",\"url\":\"https://docs.sailresearch.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/sailresearch/X8kOeTTR9DVS13DJ/logo/solo.svg?fit=max\u0026auto=format\u0026n=X8kOeTTR9DVS13DJ\u0026q=85\u0026s=45e472c8b5c89f0235ef55e4953f7075\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.sailresearch.com#website\",\"name\":\"Sail Research\",\"url\":\"https://docs.sailresearch.com\",\"publisher\":{\"@id\":\"https://docs.sailresearch.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.sailresearch.com/api-reference/volumes/list-a-directory-on-a-volume#webpage\",\"url\":\"https://docs.sailresearch.com/api-reference/volumes/list-a-directory-on-a-volume\",\"name\":\"List a directory on a volume\",\"description\":\"Returns a directory's immediate entries, sorted by name, without descending into subdirectories. The volume does not have to be mounted in a Sailbox.\",\"dateModified\":\"2026-11-07T17:38:08.174Z\",\"isPartOf\":{\"@id\":\"https://docs.sailresearch.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.sailresearch.com/api-reference/volumes/list-a-directory-on-a-volume#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.sailresearch.com/api-reference/volumes/list-a-directory-on-a-volume#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Sailbox\",\"item\":\"https://docs.sailresearch.com/sailbox-sdk\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"HTTP API\",\"item\":\"https://docs.sailresearch.com/api-reference/identity/whoami\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Volumes\",\"item\":\"https://docs.sailresearch.com/api-reference/volumes/mount-a-volume-on-a-running-sailbox\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"List a directory on a volume\",\"item\":\"https://docs.sailresearch.com/api-reference/volumes/list-a-directory-on-a-volume\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.sailresearch.com/api-reference/volumes/list-a-directory-on-a-volume#apireference\",\"headline\":\"List a directory on a volume\",\"name\":\"List a directory on a volume\",\"description\":\"Returns a directory's immediate entries, sorted by name, without descending into subdirectories. The volume does not have to be mounted in a Sailbox.\",\"url\":\"https://docs.sailresearch.com/api-reference/volumes/list-a-directory-on-a-volume\",\"mainEntityOfPage\":{\"@id\":\"https://docs.sailresearch.com/api-reference/volumes/list-a-directory-on-a-volume#webpage\"},\"image\":\"https://docs.sailresearch.com/images/og.png\",\"dateModified\":\"2026-11-07T17:38:08.174Z\",\"publisher\":{\"@id\":\"https://docs.sailresearch.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.sailresearch.com#website\"}}]}\u003c/script>","siteName":"Sail Research","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"Reference","groups":[{"group":"Inference APIs","pages":[{"group":"Models API","pages":[{"title":"List supported models","deprecated":null,"version":null,"openapi":"/openapi.json get /models","href":"/api-reference/models-api/list-supported-models"}]},{"group":"Responses API","pages":[{"title":"Create a response","deprecated":null,"version":null,"openapi":"/openapi.json post /responses","href":"/api-reference/responses-api/create-a-response"},{"title":"Retrieve a response","deprecated":null,"version":null,"openapi":"/openapi.json get /responses/{response_id}","href":"/api-reference/responses-api/retrieve-a-response"}]},{"group":"Chat Completions API","pages":[{"title":"Create a chat completion","deprecated":null,"version":null,"openapi":"/openapi.json post /chat/completions","href":"/api-reference/chat-completions-api/create-a-chat-completion"}]},{"group":"Messages API","pages":[{"title":"Create an Anthropic message","deprecated":null,"version":null,"openapi":"/openapi.json post /messages","href":"/api-reference/messages-api/create-an-anthropic-message"},{"title":"Retrieve a message","deprecated":null,"version":null,"openapi":"/openapi.json get /messages/{messageID}","href":"/api-reference/messages-api/retrieve-a-message"},{"title":"Count tokens for an Anthropic message","deprecated":null,"version":null,"openapi":"/openapi.json post /messages/count_tokens","href":"/api-reference/messages-api/count-tokens-for-an-anthropic-message"}]},{"group":"Batches API","pages":[{"title":"List batches","deprecated":null,"version":null,"openapi":"/openapi.json get /batches","href":"/api-reference/batches-api/list-batches"},{"title":"Create a batch","deprecated":null,"version":null,"openapi":"/openapi.json post /batches","href":"/api-reference/batches-api/create-a-batch"},{"title":"Get batch status and results","deprecated":null,"version":null,"openapi":"/openapi.json get /batches/{batch_id}","href":"/api-reference/batches-api/get-batch-status-and-results"},{"title":"Get batch request result","deprecated":null,"version":null,"openapi":"/openapi.json get /batches/{batch_id}/{custom_id}","href":"/api-reference/batches-api/get-batch-request-result"}]},{"group":"Web Search API","pages":[]}]},{"group":"Usage API","pages":[{"title":"Overview","href":"/usage"},{"title":"Usage API endpoints","href":"/usage-endpoints"}]},{"group":"Sailbox","pages":[{"title":"Sailboxes","href":"/sailbox-sdk"},{"title":"Images \u0026 Functions","href":"/sailbox-sdk-images"},{"title":"Apps","href":"/sailbox-sdk-apps"},{"title":"Egress policy reference","sidebarTitle":"Egress policy","href":"/reference/egress-policy"},{"title":"Errors","href":"/sailbox-sdk-errors"},{"group":"HTTP API","pages":[{"group":"Identity","pages":[{"title":"whoami","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /whoami","href":"/api-reference/identity/whoami"}]},{"group":"Apps","pages":[{"title":"Find or create an app","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /apps/find","href":"/api-reference/apps/find-or-create-an-app"},{"title":"List apps","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /apps","href":"/api-reference/apps/list-apps"}]},{"group":"Secrets","pages":[{"title":"List secrets","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /secrets","href":"/api-reference/secrets/list-secrets"},{"title":"Get a secret","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /secrets/{name}","href":"/api-reference/secrets/get-a-secret"},{"title":"Set a secret","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json put /secrets/{name}","href":"/api-reference/secrets/set-a-secret"},{"title":"Delete a secret","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json delete /secrets/{name}","href":"/api-reference/secrets/delete-a-secret"},{"title":"List policies using a secret","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /secrets/{name}/references","href":"/api-reference/secrets/list-policies-using-a-secret"}]},{"group":"Egress policies","pages":[{"title":"List egress policies","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /egress-policies","href":"/api-reference/egress-policies/list-egress-policies"},{"title":"Create an egress policy","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /egress-policies","href":"/api-reference/egress-policies/create-an-egress-policy"},{"title":"Get an egress policy","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /egress-policies/{policy_id}","href":"/api-reference/egress-policies/get-an-egress-policy"},{"title":"Delete an egress policy","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json delete /egress-policies/{policy_id}","href":"/api-reference/egress-policies/delete-an-egress-policy"},{"title":"Rename an egress policy","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json patch /egress-policies/{policy_id}","href":"/api-reference/egress-policies/rename-an-egress-policy"},{"title":"Get a Sailbox's egress policy","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/egress-policy","href":"/api-reference/egress-policies/get-a-sailboxs-egress-policy"},{"title":"Set a Sailbox's egress policy","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json put /sailboxes/{sailbox_id}/egress-policy","href":"/api-reference/egress-policies/set-a-sailboxs-egress-policy"}]},{"group":"Lifecycle","pages":[{"title":"List Sailboxes","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes","href":"/api-reference/lifecycle/list-sailboxes"},{"title":"Create a Sailbox","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes","href":"/api-reference/lifecycle/create-a-sailbox"},{"title":"Retrieve a Sailbox","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}","href":"/api-reference/lifecycle/retrieve-a-sailbox"},{"title":"Pause a Sailbox","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/pause","href":"/api-reference/lifecycle/pause-a-sailbox"},{"title":"Sleep a Sailbox","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/sleep","href":"/api-reference/lifecycle/sleep-a-sailbox"},{"title":"Resume a Sailbox","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/resume","href":"/api-reference/lifecycle/resume-a-sailbox"},{"title":"Schedule a wake","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/wake_at","href":"/api-reference/lifecycle/schedule-a-wake"},{"title":"List cron jobs","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/cron","href":"/api-reference/lifecycle/list-cron-jobs"},{"title":"Add a cron job","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/cron","href":"/api-reference/lifecycle/add-a-cron-job"},{"title":"Remove a cron job","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json delete /sailboxes/{sailbox_id}/cron/{cron_job_id}","href":"/api-reference/lifecycle/remove-a-cron-job"},{"title":"Set the automatic-sleep preference","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/auto_sleep","href":"/api-reference/lifecycle/set-the-automatic-sleep-preference"},{"title":"Change who can operate a Sailbox","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/visibility","href":"/api-reference/lifecycle/change-who-can-operate-a-sailbox"},{"title":"Upgrade a Sailbox","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/upgrade","href":"/api-reference/lifecycle/upgrade-a-sailbox"},{"title":"Reboot a Sailbox","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/reboot","href":"/api-reference/lifecycle/reboot-a-sailbox"},{"title":"Set a Sailbox's limits","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/set-limits","href":"/api-reference/lifecycle/set-a-sailboxs-limits"},{"title":"Terminate a Sailbox","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/terminate","href":"/api-reference/lifecycle/terminate-a-sailbox"}]},{"group":"Exec","pages":[{"title":"Snapshot recent executions","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/executions","href":"/api-reference/exec/snapshot-recent-executions"},{"title":"Snapshot execution output","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/logs","href":"/api-reference/exec/snapshot-execution-output"},{"title":"Run a command","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/exec","href":"/api-reference/exec/run-a-command"},{"title":"Wait for an exec","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/exec/{exec_id}/wait","href":"/api-reference/exec/wait-for-an-exec"},{"title":"Write exec stdin","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json put /sailboxes/{sailbox_id}/exec/{exec_id}/stdin","href":"/api-reference/exec/write-exec-stdin"},{"title":"Stream exec stdin","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/exec/{exec_id}/stdin/stream","href":"/api-reference/exec/stream-exec-stdin"},{"title":"Cancel an exec","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/exec/{exec_id}/cancel","href":"/api-reference/exec/cancel-an-exec"},{"title":"Resize an exec PTY","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/exec/{exec_id}/resize","href":"/api-reference/exec/resize-an-exec-pty"},{"title":"Resync an exec PTY","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/exec/{exec_id}/resync","href":"/api-reference/exec/resync-an-exec-pty"},{"title":"Set the clipboard","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json put /sailboxes/{sailbox_id}/clipboard","href":"/api-reference/exec/set-the-clipboard"}]},{"group":"Files","pages":[{"title":"Read a file","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/files","href":"/api-reference/files/read-a-file"},{"title":"Write a file","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json put /sailboxes/{sailbox_id}/files","href":"/api-reference/files/write-a-file"},{"title":"Mint a download URL for a file","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/files/download-url","href":"/api-reference/files/mint-a-download-url-for-a-file"},{"title":"Fetch a file through its download URL","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/files/download","href":"/api-reference/files/fetch-a-file-through-its-download-url"},{"title":"Get a download URL's headers","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json head /sailboxes/{sailbox_id}/files/download","href":"/api-reference/files/get-a-download-urls-headers"}]},{"group":"Networking","pages":[{"title":"Tunnel to a port","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/tunnel","href":"/api-reference/networking/tunnel-to-a-port"},{"title":"List published ports","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/listeners","href":"/api-reference/networking/list-published-ports"},{"title":"Publish a port","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/listeners","href":"/api-reference/networking/publish-a-port"},{"title":"Retrieve a published port","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/listeners/{guest_port}","href":"/api-reference/networking/retrieve-a-published-port"},{"title":"Unpublish a port","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json delete /sailboxes/{sailbox_id}/listeners/{guest_port}","href":"/api-reference/networking/unpublish-a-port"},{"title":"Get custom-domain DNS targets","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /custom-domains","href":"/api-reference/networking/get-custom-domain-dns-targets"},{"title":"List custom domains","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/domains","href":"/api-reference/networking/list-custom-domains"},{"title":"Add a custom domain","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/domains","href":"/api-reference/networking/add-a-custom-domain"},{"title":"Remove a custom domain","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json delete /sailboxes/{sailbox_id}/domains/{domain}","href":"/api-reference/networking/remove-a-custom-domain"}]},{"group":"Checkpoints","pages":[{"title":"Checkpoint a Sailbox","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/{sailbox_id}/checkpoint","href":"/api-reference/checkpoints/checkpoint-a-sailbox"},{"title":"Start a Sailbox from a checkpoint","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailboxes/from_checkpoint","href":"/api-reference/checkpoints/start-a-sailbox-from-a-checkpoint"},{"title":"List checkpoints","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailbox-checkpoints","href":"/api-reference/checkpoints/list-checkpoints"},{"title":"Get a checkpoint","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailbox-checkpoints/{checkpoint_id}","href":"/api-reference/checkpoints/get-a-checkpoint"},{"title":"Delete a checkpoint","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json delete /sailbox-checkpoints/{checkpoint_id}","href":"/api-reference/checkpoints/delete-a-checkpoint"}]},{"group":"Volumes","pages":[{"title":"Mount a volume on a running Sailbox","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json put /sailboxes/{sailbox_id}/volume-mounts","href":"/api-reference/volumes/mount-a-volume-on-a-running-sailbox"},{"title":"List volumes","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailbox-volumes","href":"/api-reference/volumes/list-volumes"},{"title":"Create a volume","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailbox-volumes","href":"/api-reference/volumes/create-a-volume"},{"title":"Delete a volume","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json delete /sailbox-volumes/{volume_id}","href":"/api-reference/volumes/delete-a-volume"},{"title":"Read a file on a volume","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailbox-volumes/{volume_id}/files","href":"/api-reference/volumes/read-a-file-on-a-volume"},{"title":"Write a file on a volume","description":"Streams the request body into one regular file. The file appears at `path` only once the whole body has arrived, replacing any existing file in one step, so a reader sees the old contents or the new and a failed upload changes nothing. The file belongs to root. The volume does not have to be mounted in a Sailbox. A Sailbox that mounts it sees the change within a few seconds of this call returning.","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json put /sailbox-volumes/{volume_id}/files","href":"/api-reference/volumes/write-a-file-on-a-volume"},{"title":"List a directory on a volume","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailbox-volumes/{volume_id}/directories","href":"/api-reference/volumes/list-a-directory-on-a-volume"},{"title":"Create a directory on a volume","description":"Creates a directory and any missing parents, like `mkdir -p`. A directory that already exists is left as it is. Send no body. The volume does not have to be mounted in a Sailbox. A Sailbox that mounts it sees the change within a few seconds of this call returning.","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailbox-volumes/{volume_id}/directories","href":"/api-reference/volumes/create-a-directory-on-a-volume"},{"title":"Look up a path on a volume","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailbox-volumes/{volume_id}/paths","href":"/api-reference/volumes/look-up-a-path-on-a-volume"},{"title":"Move a path within a volume","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /sailbox-volumes/{volume_id}/paths","href":"/api-reference/volumes/move-a-path-within-a-volume"},{"title":"Remove a path on a volume","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json delete /sailbox-volumes/{volume_id}/paths","href":"/api-reference/volumes/remove-a-path-on-a-volume"},{"title":"Download a directory from a volume","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailbox-volumes/{volume_id}/archives","href":"/api-reference/volumes/download-a-directory-from-a-volume"},{"title":"Upload a directory to a volume","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json put /sailbox-volumes/{volume_id}/archives","href":"/api-reference/volumes/upload-a-directory-to-a-volume"}]},{"group":"SSH access","pages":[{"title":"Get your SSH certificate authority","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /ssh/ca","href":"/api-reference/ssh-access/get-your-ssh-certificate-authority"},{"title":"Issue an SSH certificate","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json post /ssh/certificate","href":"/api-reference/ssh-access/issue-an-ssh-certificate"}]},{"group":"Usage","pages":[{"title":"Get resource usage over time","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/{sailbox_id}/metrics","href":"/api-reference/usage/get-resource-usage-over-time"},{"title":"Get Sailbox spend","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/spend","href":"/api-reference/usage/get-sailbox-spend"}]}]}]},{"group":"Tinker","pages":[{"title":"Tinker","href":"/sdk-tinker"}]},{"group":"SDKs","pages":[{"title":"Python SDK","href":"/reference/python-sdk"},{"title":"TypeScript SDK","href":"/reference/typescript-sdk"},{"title":"Rust SDK","href":"/reference/rust-sdk"},{"title":"Configuration","href":"/reference/sdk-configuration"}]}]}]},"basePath":"","title":"List a directory on a volume - Sail Research","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CBsVopKK.js","utils-DZAk68jJ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D32AYZrP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D_A5_cny.js","snippetPresets-xNRfS9th.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BIB25-tq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CydJ4w4j.js","shallow-CYPBeQSG.js","getApiPlaygroundDisplay-A5xJVBOu.js","CodeSnippet-BVRTgi3m.js","CodeSnippets-DjD6BSlt.js","Page-Dr40SSJq.js","getPastedJson-D4V4JyrR.js","icon-uhcnG22T.js","MethodPill-CM-ZQdGH.js","DuplicateIcon-B_WnOiNf.js","createIcon-CJsb8utt.js","DynamicMarkdown-D-2HDKEp.js","SectionHeading-KP5xmMgQ.js","axios-vUo_bRtp.js","Markdown-D_k0dg6k.js","clsx-DK3K4Z1S.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DE3EVdvd.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-fN9H9n9g.js"]}