{
"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": "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"
}
}
Returns Sailbox usage and estimated cost for your organization over a time window, with a per-Sailbox breakdown. Usage is metered per minute while a Sailbox runs, and from and to are honored to the minute; start_at and end_at report the window that was read. Defaults to the current UTC calendar month up to now. Costs are in billionths of a US dollar and are estimates at the listed rates; your invoice is the final amount.
{
"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": "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"
}
}
Whether your organization's current plan waives creation fees. Each creation is charged or waived by the plan in effect when it was made, so a window that spans a plan change can carry creation charges from before the waiver.
{"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":""},"chroma":{"liveDeploymentHistoryId":"6ae92d952991873336bca85f","collectionId":"2df0ab0d-0ee5-458d-be67-b2a0c9d3dc1d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae92d952991873336bca85f"},"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":"6ae92d952991873336bca85f","clientVersion":"0.0.4054","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":44},{"language":"default","tag":"Lifecycle","count":16},{"language":"default","tag":"Sailboxes","count":15},{"language":"default","tag":"Inference","count":13},{"language":"default","tag":"Volumes","count":13},{"language":"default","tag":"Inference APIs","count":11},{"language":"default","tag":"Features","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":"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":"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":"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":"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":"sso-setup-deadline-banner","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}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","href":"/_mintlify/custom/sailresearch/7ff4d405a5104e99/style.css"}],"page":{"pagePath":"api-reference/usage/get-sailbox-spend","slug":"/api-reference/usage/get-sailbox-spend","pageMetadata":{"title":"Get Sailbox spend","description":"Returns Sailbox usage and estimated cost for your organization over a time window, with a per-Sailbox breakdown. Usage is metered per minute while a Sailbox runs, and `from` and `to` are honored to the minute; `start_at` and `end_at` report the window that was read. Defaults to the current UTC calendar month up to now. Costs are in billionths of a US dollar and are estimates at the listed rates; your invoice is the final amount.","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/spend","href":"/api-reference/usage/get-sailbox-spend","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 Sailbox usage and estimated cost for your organization over a time window, with a per-Sailbox breakdown. Usage is metered per minute while a Sailbox runs, and \", _jsx(_components.code, {\n children: \"from\"\n }), \" and \", _jsx(_components.code, {\n children: \"to\"\n }), \" are honored to the minute; \", _jsx(_components.code, {\n children: \"start_at\"\n }), \" and \", _jsx(_components.code, {\n children: \"end_at\"\n }), \" report the window that was read. Defaults to the current UTC calendar month up to now. Costs are in billionths of a US dollar and are estimates at the listed rates; your invoice is the final amount.\"]\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":"Get Sailbox spend","description":"Returns Sailbox usage and estimated cost for your organization over a time window, with a per-Sailbox breakdown. Usage is metered per minute while a Sailbox runs, and `from` and `to` are honored to the minute; `start_at` and `end_at` report the window that was read. Defaults to the current UTC calendar month up to now. Costs are in billionths of a US dollar and are estimates at the listed rates; your invoice is the final amount.","deprecated":null,"version":null,"openapi":"/sailbox-openapi.json get /sailboxes/spend","href":"/api-reference/usage/get-sailbox-spend","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/sailresearch/53cdab3a0f4c571b/navbar-auth.js","/_mintlify/custom/sailresearch/d891ac7bd4b17796/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/9d8daa962b50520f/price-comparison-data.js","/_mintlify/custom/sailresearch/74da3abd3a623529/price-comparison.js","/_mintlify/custom/sailresearch/3756b4c1fcdcbfd0/zdr-navigation.js"],"openApiReferenceData":{"operation":{"operationId":"getSailboxSpend","tags":["Usage"],"summary":"Get Sailbox spend","description":"Returns Sailbox usage and estimated cost for your organization over a time window, with a per-Sailbox breakdown. Usage is metered per minute while a Sailbox runs, and `from` and `to` are honored to the minute; `start_at` and `end_at` report the window that was read. Defaults to the current UTC calendar month up to now. Costs are in billionths of a US dollar and are estimates at the listed rates; your invoice is the final amount.","parameters":["785d1b3e-8892-4210-82d8-54886186791e","5e098911-8844-4e8b-87a4-53e60d11aa9c","de45aaf7-7c9b-4322-a666-644c592d9ee3","00474e90-8dff-4cd3-9631-0057c2f96261"],"responses":{"200":"28949577-8182-4127-89bd-286ec585cd9b","400":"a7c0de1c-d886-45f9-bf90-fde2090802d1","401":"38572e9e-8190-46e6-ba20-35014c95204c","402":"4d5ec747-b486-4d18-a486-a4726005719d","403":"4666ff71-79b2-403e-86ac-803d7c67dcb6","429":"31e753d7-0521-44e6-9dde-3e8e86152717","500":"c29fe239-7963-42a8-973c-a9c538f6dd85","503":"d9392bc9-e993-4f75-883b-a07404550960"},"method":"get","type":"path","servers":["ea6a777d-11b2-4262-a9f6-85ca1c08b647"],"security":["bb4dd6da-eb94-44b9-bdc2-d57f2d651bf0"],"path":"/sailboxes/spend","baseUrlOptions":["https://sailbox-api.sailresearch.com/v1"],"title":"Get Sailbox spend","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"785d1b3e-8892-4210-82d8-54886186791e":{"name":"from","in":"query","schema":{"type":"string","format":"date-time","description":"Start of the window, as an RFC 3339 timestamp, honored to the minute. Defaults to the first of the current UTC month.","uniqueKey":"","typeLabel":"string\u003cdate-time>"},"description":"Start of the window, as an RFC 3339 timestamp, honored to the minute. Defaults to the first of the current UTC month."},"5e098911-8844-4e8b-87a4-53e60d11aa9c":{"name":"to","in":"query","schema":{"type":"string","format":"date-time","description":"End of the window, as an RFC 3339 timestamp, honored to the minute. Defaults to now, and must be after `from`.","uniqueKey":"","typeLabel":"string\u003cdate-time>"},"description":"End of the window, as an RFC 3339 timestamp, honored to the minute. Defaults to now, and must be after `from`."},"de45aaf7-7c9b-4322-a666-644c592d9ee3":{"name":"app_id","in":"query","schema":{"type":"string","description":"Only count Sailboxes in this app.","uniqueKey":"","typeLabel":"string"},"description":"Only count Sailboxes in this app."},"00474e90-8dff-4cd3-9631-0057c2f96261":{"name":"sailbox_id","in":"query","schema":{"type":"string","description":"Only count these Sailboxes, written as a comma-separated list of 1 to 200 ids.","uniqueKey":"","typeLabel":"string"},"description":"Only count these Sailboxes, written as a comma-separated list of 1 to 200 ids."}},"responses":{"28949577-8182-4127-89bd-286ec585cd9b":{"description":"The spend summary.","content":{"application/json":{"schema":{"type":"object","properties":{"start_at":{"type":"string","format":"date-time","description":"Start of the window the response covers.","isRequired":true,"uniqueKey":"start_at","typeLabel":"string\u003cdate-time>"},"end_at":{"type":"string","format":"date-time","description":"End of the window the response covers.","isRequired":true,"uniqueKey":"end_at","typeLabel":"string\u003cdate-time>"},"cost_usd_nanos":{"type":"integer","description":"Cost of all usage in the window, in billionths of a US dollar.","format":"int64","isRequired":true,"uniqueKey":"cost_usd_nanos","typeLabel":"integer\u003cint64>"},"running_seconds":{"type":"number","description":"Total Sailbox running seconds in the window.","isRequired":true,"uniqueKey":"running_seconds","typeLabel":"number"},"vcpu_seconds":{"type":"number","description":"Total virtual CPU seconds used.","isRequired":true,"uniqueKey":"vcpu_seconds","typeLabel":"number"},"memory_gib_seconds":{"type":"number","description":"Total memory GiB seconds used.","isRequired":true,"uniqueKey":"memory_gib_seconds","typeLabel":"number"},"state_disk_gib_seconds":{"type":"number","description":"Total disk GiB seconds used.","isRequired":true,"uniqueKey":"state_disk_gib_seconds","typeLabel":"number"},"creation_count":{"type":"integer","description":"Creation charges in the window.","format":"int64","isRequired":true,"uniqueKey":"creation_count","typeLabel":"integer\u003cint64>"},"pricing_configured":{"type":"boolean","description":"Whether prices are configured; when false every cost is 0.","isRequired":true,"uniqueKey":"pricing_configured","typeLabel":"boolean"},"creation_fees_waived":{"type":"boolean","description":"Whether your organization's current plan waives creation fees. Each creation is charged or waived by the plan in effect when it was made, so a window that spans a plan change can carry creation charges from before the waiver.","isRequired":true,"uniqueKey":"creation_fees_waived","typeLabel":"boolean"},"rates":{"type":"object","description":"Prices used to work out the costs in this response, in billionths of a US dollar. New rates can appear over time.","properties":{"vcpu_second_usd_nanos":{"type":"integer","description":"Price of one virtual CPU second.","format":"int64","isRequired":true,"uniqueKey":"rates.vcpu_second_usd_nanos","typeLabel":"integer\u003cint64>"},"memory_gib_second_usd_nanos":{"type":"integer","description":"Price of one memory GiB second.","format":"int64","isRequired":true,"uniqueKey":"rates.memory_gib_second_usd_nanos","typeLabel":"integer\u003cint64>"},"state_disk_gib_second_usd_nanos":{"type":"integer","description":"Price of one disk GiB second.","format":"int64","isRequired":true,"uniqueKey":"rates.state_disk_gib_second_usd_nanos","typeLabel":"integer\u003cint64>"},"s_creation_usd_nanos":{"type":"integer","description":"One-time charge for creating an `s` Sailbox.","format":"int64","isRequired":true,"uniqueKey":"rates.s_creation_usd_nanos","typeLabel":"integer\u003cint64>"},"m_creation_usd_nanos":{"type":"integer","description":"One-time charge for creating an `m` Sailbox.","format":"int64","isRequired":true,"uniqueKey":"rates.m_creation_usd_nanos","typeLabel":"integer\u003cint64>"},"l_creation_usd_nanos":{"type":"integer","description":"One-time charge for creating an `l` Sailbox.","format":"int64","isRequired":true,"uniqueKey":"rates.l_creation_usd_nanos","typeLabel":"integer\u003cint64>"}},"additionalProperties":{"type":"integer","format":"int64","uniqueKey":"rates.additionalProperties","typeLabel":"integer\u003cint64>"},"required":["vcpu_second_usd_nanos","memory_gib_second_usd_nanos","state_disk_gib_second_usd_nanos","s_creation_usd_nanos","m_creation_usd_nanos","l_creation_usd_nanos"],"isRequired":true,"uniqueKey":"rates","typeLabel":"object"},"sailboxes":{"type":"array","items":{"type":"object","properties":{"sailbox_id":{"type":"string","description":"Sailbox the usage belongs to.","isRequired":true,"uniqueKey":"sailboxes.items.[INDEX].sailbox_id","typeLabel":"string"},"app_id":{"type":"string","description":"App the Sailbox belongs to.","isRequired":true,"uniqueKey":"sailboxes.items.[INDEX].app_id","typeLabel":"string"},"cost_usd_nanos":{"type":"integer","description":"Cost of the Sailbox's usage in the window, in billionths of a US dollar.","format":"int64","isRequired":true,"uniqueKey":"sailboxes.items.[INDEX].cost_usd_nanos","typeLabel":"integer\u003cint64>"},"running_seconds":{"type":"number","description":"Seconds the Sailbox was running in the window.","isRequired":true,"uniqueKey":"sailboxes.items.[INDEX].running_seconds","typeLabel":"number"},"vcpu_seconds":{"type":"number","description":"Virtual CPU seconds used.","isRequired":true,"uniqueKey":"sailboxes.items.[INDEX].vcpu_seconds","typeLabel":"number"},"memory_gib_seconds":{"type":"number","description":"Memory GiB seconds used.","isRequired":true,"uniqueKey":"sailboxes.items.[INDEX].memory_gib_seconds","typeLabel":"number"},"state_disk_gib_seconds":{"type":"number","description":"Disk GiB seconds used.","isRequired":true,"uniqueKey":"sailboxes.items.[INDEX].state_disk_gib_seconds","typeLabel":"number"},"creation_count":{"type":"integer","description":"Creation charges in the window (0 or 1).","format":"int64","isRequired":true,"uniqueKey":"sailboxes.items.[INDEX].creation_count","typeLabel":"integer\u003cint64>"}},"required":["sailbox_id","app_id","cost_usd_nanos","running_seconds","vcpu_seconds","memory_gib_seconds","state_disk_gib_seconds","creation_count"],"uniqueKey":"sailboxes.items.[INDEX]","typeLabel":"object"},"description":"Per-Sailbox breakdown.","isRequired":true,"uniqueKey":"sailboxes","typeLabel":"object[]"}},"required":["start_at","end_at","cost_usd_nanos","running_seconds","vcpu_seconds","memory_gib_seconds","state_disk_gib_seconds","creation_count","pricing_configured","creation_fees_waived","rates","sailboxes"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"start_at":"2023-11-07T05:31:56Z","end_at":"2023-11-07T05:31:56Z","cost_usd_nanos":123,"running_seconds":123,"vcpu_seconds":123,"memory_gib_seconds":123,"state_disk_gib_seconds":123,"creation_count":123,"pricing_configured":true,"creation_fees_waived":true,"rates":{"vcpu_second_usd_nanos":123,"memory_gib_second_usd_nanos":123,"state_disk_gib_second_usd_nanos":123,"s_creation_usd_nanos":123,"m_creation_usd_nanos":123,"l_creation_usd_nanos":123},"sailboxes":[{"sailbox_id":"\u003cstring>","app_id":"\u003cstring>","cost_usd_nanos":123,"running_seconds":123,"vcpu_seconds":123,"memory_gib_seconds":123,"state_disk_gib_seconds":123,"creation_count":123}]}}},"exampleType":"generated"}},"exampleType":"generated"},"a7c0de1c-d886-45f9-bf90-fde2090802d1":{"description":"The request was rejected. See the error message for the offending field.","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_gib must be between 8 and 256 for 4 vCPUs","type":"invalid_request_error","param":null,"code":null}},"examples":{"Example":{"title":"Example","value":{"error":{"message":"memory_limit_gib must be between 8 and 256 for 4 vCPUs","type":"invalid_request_error","param":null,"code":null}}}},"exampleType":"examples"}},"exampleType":"examples"},"38572e9e-8190-46e6-ba20-35014c95204c":{"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"},"4d5ec747-b486-4d18-a486-a4726005719d":{"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"},"4666ff71-79b2-403e-86ac-803d7c67dcb6":{"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"},"31e753d7-0521-44e6-9dde-3e8e86152717":{"description":"For its first ten minutes a new organization is capped on how many requests it can have in flight at once, and yours is over that cap. The request never started, so retry it unchanged after the delay in the `Retry-After` header. The limit clears as those requests finish.","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"},"c29fe239-7963-42a8-973c-a9c538f6dd85":{"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"},"d9392bc9-e993-4f75-883b-a07404550960":{"description":"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"}},"security":{"bb4dd6da-eb94-44b9-bdc2-d57f2d651bf0":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"ea6a777d-11b2-4262-a9f6-85ca1c08b647":{"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":"Get Sailbox spend - Sail Research","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T02:21:16.151Z","originalFileLocation":"api-reference/usage/get-sailbox-spend.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 Sailbox usage and estimated cost for your organization over a time window, with a per-Sailbox breakdown. Usage is metered per minute while a Sailbox runs, and from and to are honored to the minute; start_at and end_at report the window that was read. Defaults to the current UTC calendar month up to now. Costs are in billionths of a US dollar and are estimates at the listed rates; your invoice is the final amount.\">\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=\"Get Sailbox spend - Sail Research\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns Sailbox usage and estimated cost for your organization over a time window, with a per-Sailbox breakdown. Usage is metered per minute while a Sailbox runs, and from and to are honored to the minute; start_at and end_at report the window that was read. Defaults to the current UTC calendar month up to now. Costs are in billionths of a US dollar and are estimates at the listed rates; your invoice is the final amount.\">\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/usage/get-sailbox-spend\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://sailresearch.mintlify.app/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=\"Get Sailbox spend - Sail Research\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns Sailbox usage and estimated cost for your organization over a time window, with a per-Sailbox breakdown. Usage is metered per minute while a Sailbox runs, and from and to are honored to the minute; start_at and end_at report the window that was read. Defaults to the current UTC calendar month up to now. Costs are in billionths of a US dollar and are estimates at the listed rates; your invoice is the final amount.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://sailresearch.mintlify.app/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/usage/get-sailbox-spend\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/usage/get-sailbox-spend.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/usage/get-sailbox-spend#webpage\",\"url\":\"https://docs.sailresearch.com/api-reference/usage/get-sailbox-spend\",\"name\":\"Get Sailbox spend\",\"description\":\"Returns Sailbox usage and estimated cost for your organization over a time window, with a per-Sailbox breakdown. Usage is metered per minute while a Sailbox runs, and from and to are honored to the minute; start_at and end_at report the window that was read. Defaults to the current UTC calendar month up to now. Costs are in billionths of a US dollar and are estimates at the listed rates; your invoice is the final amount.\",\"dateModified\":\"2026-10-29T02:21:16.151Z\",\"isPartOf\":{\"@id\":\"https://docs.sailresearch.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.sailresearch.com/api-reference/usage/get-sailbox-spend#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.sailresearch.com/api-reference/usage/get-sailbox-spend#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\":\"Usage\",\"item\":\"https://docs.sailresearch.com/api-reference/usage/get-resource-usage-over-time\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Get Sailbox spend\",\"item\":\"https://docs.sailresearch.com/api-reference/usage/get-sailbox-spend\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.sailresearch.com/api-reference/usage/get-sailbox-spend#apireference\",\"headline\":\"Get Sailbox spend\",\"name\":\"Get Sailbox spend\",\"description\":\"Returns Sailbox usage and estimated cost for your organization over a time window, with a per-Sailbox breakdown. Usage is metered per minute while a Sailbox runs, and from and to are honored to the minute; start_at and end_at report the window that was read. Defaults to the current UTC calendar month up to now. Costs are in billionths of a US dollar and are estimates at the listed rates; your invoice is the final amount.\",\"url\":\"https://docs.sailresearch.com/api-reference/usage/get-sailbox-spend\",\"mainEntityOfPage\":{\"@id\":\"https://docs.sailresearch.com/api-reference/usage/get-sailbox-spend#webpage\"},\"image\":\"https://docs.sailresearch.com/images/og.png\",\"dateModified\":\"2026-10-29T02:21:16.151Z\",\"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","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","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","description":"Returns CPU, memory, disk, and network usage for one Sailbox as a time series.","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","description":"Drive Sail inference from Tinker loops with sail.SailTokenCompleter, and run rollout commands on Sailboxes with sail.TinkerSandbox","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":"Get Sailbox spend - Sail Research","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}