{
"error": {
"code": "INSUFFICIENT_BALANCE",
"message": "Insufficient balance to deploy a Worker. At least 0.08 EUR is required to cover its first hour of usage. Please top up first."
}
}
{
"error": {
"code": "WORKERS_DISABLED",
"message": "Worker service sales are currently disabled."
}
}
{
"error": {
"code": "LOCATION_UNAVAILABLE",
"message": "That location is not available for workers."
}
}
{
"error": {
"code": "VALIDATION_ERROR",
"message": "The given data was invalid.",
"details": {
"name": [
"The name field is required."
]
}
}
}
Workers
Deploy a Worker
Deploys a new worker. A node in the given location is picked automatically.
Workers are billed by measured usage, and the first hour is charged against your balance, so the deploy is rejected outright when the balance is below the minimum. Call GET /workers/deploy-requirements first to see that minimum and how many workers your account level still allows.
What git_repository holds depends on git_source:
public: a publicly reachable git URL.
github: a URL on a private repository of the GitHub account linked to your panel account. The OAuth flow only exists in the panel, so an account that has never linked GitHub is answered with GITHUB_NOT_CONNECTED.
template / database: the id of an entry from GET /workers/templates, not a URL.
The worker comes back in pending and is built in the background. Poll GET /workers/{worker}/status until it reports active.
{
"error": {
"code": "INSUFFICIENT_BALANCE",
"message": "Insufficient balance to deploy a Worker. At least 0.08 EUR is required to cover its first hour of usage. Please top up first."
}
}
{
"error": {
"code": "WORKERS_DISABLED",
"message": "Worker service sales are currently disabled."
}
}
{
"error": {
"code": "LOCATION_UNAVAILABLE",
"message": "That location is not available for workers."
}
}
{
"error": {
"code": "VALIDATION_ERROR",
"message": "The given data was invalid.",
"details": {
"name": [
"The name field is required."
]
}
}
}
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/schema.json","name":"CloudBlast Documentation","colors":{"primary":"#6366F1","light":"#818CF8","dark":"#4F46E5"},"logo":{"light":"https://mintcdn.com/cloudblastllc/UjwQ5b7jMNVfxnfM/logodark.svg?fit=max\u0026auto=format\u0026n=UjwQ5b7jMNVfxnfM\u0026q=85\u0026s=835178d0faa08ff213bc8c7adf4009c6","dark":"https://mintcdn.com/cloudblastllc/UjwQ5b7jMNVfxnfM/logowhite.svg?fit=max\u0026auto=format\u0026n=UjwQ5b7jMNVfxnfM\u0026q=85\u0026s=ba1dc60181ad3a8a902eb225d803292f"},"favicon":"https://mintcdn.com/cloudblastllc/UjwQ5b7jMNVfxnfM/cloudblast-logo.svg?fit=max\u0026auto=format\u0026n=UjwQ5b7jMNVfxnfM\u0026q=85\u0026s=5cdb4f5b7328cb787676436d8a3a0f9a","api":{"playground":{}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cloudblastllc","hasAudioNarration":false,"actualSubdomain":"cloudblastllc","customDomains":["docs.cloudblast.io"],"gitSource":{"type":"github","owner":"skeid9","repo":"cloudblast-panel","deployBranch":"prod","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad1a25b0fbdbce33384f72b","collectionId":"6e3b7ed7-b810-4f49-83dc-f1b331bfe716","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad1a25b0fbdbce33384f72b"},"entitlements":{},"buildId":"6ad1a25b0fbdbce33384f72b","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"API Reference","count":51},{"language":"default","tag":"Workers","count":10},{"language":"default","tag":"Security Groups","count":9},{"language":"default","tag":"Servers","count":9},{"language":"default","tag":"Getting Started","count":6},{"language":"default","tag":"Server IPs","count":5},{"language":"default","tag":"Backups","count":4},{"language":"default","tag":"Reserved IPs","count":4},{"language":"default","tag":"Account","count":3},{"language":"default","tag":"Plans \u0026 Locations","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"vite-origin","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":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/workers/create-worker","slug":"/api-reference/workers/create-worker","pageMetadata":{"title":"Deploy a Worker","openapi":"POST /workers","description":"Deploys a new worker. A node in the given location is picked automatically.\n\nWorkers are billed by measured usage, and the first hour is charged against your balance, so the deploy is rejected outright when the balance is below the minimum. Call `GET /workers/deploy-requirements` first to see that minimum and how many workers your account level still allows.\n\nWhat `git_repository` holds depends on `git_source`:\n\n- `public`: a publicly reachable git URL.\n- `github`: a URL on a private repository of the GitHub account linked to your panel account. The OAuth flow only exists in the panel, so an account that has never linked GitHub is answered with `GITHUB_NOT_CONNECTED`.\n- `template` / `database`: the `id` of an entry from `GET /workers/templates`, not a URL.\n\nThe worker comes back in `pending` and is built in the background. Poll `GET /workers/{worker}/status` until it reports `active`.","href":"/api-reference/workers/create-worker"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Deploys a new worker. A node in the given location is picked automatically.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Workers are billed by measured usage, and the first hour is charged against your balance, so the deploy is rejected outright when the balance is below the minimum. Call \", _jsx(_components.code, {\n children: \"GET /workers/deploy-requirements\"\n }), \" first to see that minimum and how many workers your account level still allows.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"What \", _jsx(_components.code, {\n children: \"git_repository\"\n }), \" holds depends on \", _jsx(_components.code, {\n children: \"git_source\"\n }), \":\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"public\"\n }), \": a publicly reachable git URL.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"github\"\n }), \": a URL on a private repository of the GitHub account linked to your panel account. The OAuth flow only exists in the panel, so an account that has never linked GitHub is answered with \", _jsx(_components.code, {\n children: \"GITHUB_NOT_CONNECTED\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"template\"\n }), \" / \", _jsx(_components.code, {\n children: \"database\"\n }), \": the \", _jsx(_components.code, {\n children: \"id\"\n }), \" of an entry from \", _jsx(_components.code, {\n children: \"GET /workers/templates\"\n }), \", not a URL.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The worker comes back in \", _jsx(_components.code, {\n children: \"pending\"\n }), \" and is built in the background. Poll \", _jsx(_components.code, {\n children: \"GET /workers/{worker}/status\"\n }), \" until it reports \", _jsx(_components.code, {\n children: \"active\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Deploy a Worker","openapi":"POST /workers","description":"Deploys a new worker. A node in the given location is picked automatically.\n\nWorkers are billed by measured usage, and the first hour is charged against your balance, so the deploy is rejected outright when the balance is below the minimum. Call `GET /workers/deploy-requirements` first to see that minimum and how many workers your account level still allows.\n\nWhat `git_repository` holds depends on `git_source`:\n\n- `public`: a publicly reachable git URL.\n- `github`: a URL on a private repository of the GitHub account linked to your panel account. The OAuth flow only exists in the panel, so an account that has never linked GitHub is answered with `GITHUB_NOT_CONNECTED`.\n- `template` / `database`: the `id` of an entry from `GET /workers/templates`, not a URL.\n\nThe worker comes back in `pending` and is built in the background. Poll `GET /workers/{worker}/status` until it reports `active`.","href":"/api-reference/workers/create-worker"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createWorker","tags":["Workers"],"summary":"Deploy a worker","description":"Deploys a new worker. A node in the given location is picked automatically.\n\nWorkers are billed by measured usage, and the first hour is charged against your balance, so the deploy is rejected outright when the balance is below the minimum. Call `GET /workers/deploy-requirements` first to see that minimum and how many workers your account level still allows.\n\nWhat `git_repository` holds depends on `git_source`:\n\n- `public`: a publicly reachable git URL.\n- `github`: a URL on a private repository of the GitHub account linked to your panel account. The OAuth flow only exists in the panel, so an account that has never linked GitHub is answered with `GITHUB_NOT_CONNECTED`.\n- `template` / `database`: the `id` of an entry from `GET /workers/templates`, not a URL.\n\nThe worker comes back in `pending` and is built in the background. Poll `GET /workers/{worker}/status` until it reports `active`.","requestBody":"90eb1794-6f9f-450c-8238-9c391e8dbb9c","responses":{"201":"9a8052cf-6612-4c93-8e8e-12a943c16898","400":"43d3105c-b01b-4796-a55c-df981a867c95","401":"cdb6f93e-6cda-4307-b5d2-6ed4dea55918","402":"f1111991-d310-4555-9950-0c55fe471851","403":"ec86b25f-ae49-4be8-987a-75c3e0474411","404":"84acfba9-1645-41a0-b4c6-dc1e03aa9fcf","422":"a8d2febd-3dd8-4275-895f-8ddbaa45ca87"},"method":"post","type":"path","servers":["89aff401-441d-4092-bdc6-a98c41c822d8"],"security":["a950f04c-1cad-473a-800e-24c270eea22a"],"path":"/workers","baseUrlOptions":["https://console.cloudblast.io/api/v2"],"title":"Deploy a worker","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["location_id","name","git_repository"],"properties":{"location_id":{"type":"integer","description":"From `GET /workers/locations`.","example":1,"isRequired":true,"uniqueKey":"location_id","typeLabel":"integer"},"name":{"type":"string","maxLength":191,"example":"api-worker","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"git_repository":{"type":"string","maxLength":500,"description":"Repository URL, or a template `id` when `git_source` is `template` or `database`.","example":"https://github.com/example/app","isRequired":true,"uniqueKey":"git_repository","typeLabel":"string"},"git_source":{"type":"string","enum":["public","github","template","database"],"default":"public","description":"`github` requires a GitHub account linked in the panel.","uniqueKey":"git_source","typeLabel":"enum\u003cstring>"},"git_branch":{"oneOf":[{"type":"string","maxLength":191,"default":"main","uniqueKey":"git_branch.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":191,"default":"main","uniqueKey":"git_branch.oneOf.1","typeLabel":"null"}],"uniqueKey":"git_branch","typeLabel":"string | null"},"build_pack":{"type":"string","enum":["nixpacks","static","dockerfile"],"default":"nixpacks","uniqueKey":"build_pack","typeLabel":"enum\u003cstring>"},"ports_exposes":{"oneOf":[{"type":"string","maxLength":64,"default":"3000","description":"Port your application listens on.","uniqueKey":"ports_exposes.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":64,"default":"3000","description":"Port your application listens on.","uniqueKey":"ports_exposes.oneOf.1","typeLabel":"null"}],"uniqueKey":"ports_exposes","typeLabel":"string | null"},"base_directory":{"oneOf":[{"type":"string","maxLength":255,"uniqueKey":"base_directory.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"uniqueKey":"base_directory.oneOf.1","typeLabel":"null"}],"uniqueKey":"base_directory","typeLabel":"string | null"},"publish_directory":{"oneOf":[{"type":"string","maxLength":255,"description":"Directory to serve for a `static` build.","uniqueKey":"publish_directory.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Directory to serve for a `static` build.","uniqueKey":"publish_directory.oneOf.1","typeLabel":"null"}],"uniqueKey":"publish_directory","typeLabel":"string | null"},"install_command":{"oneOf":[{"type":"string","maxLength":1000,"uniqueKey":"install_command.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":1000,"uniqueKey":"install_command.oneOf.1","typeLabel":"null"}],"uniqueKey":"install_command","typeLabel":"string | null"},"build_command":{"oneOf":[{"type":"string","maxLength":1000,"uniqueKey":"build_command.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":1000,"uniqueKey":"build_command.oneOf.1","typeLabel":"null"}],"uniqueKey":"build_command","typeLabel":"string | null"},"start_command":{"oneOf":[{"type":"string","maxLength":1000,"uniqueKey":"start_command.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":1000,"uniqueKey":"start_command.oneOf.1","typeLabel":"null"}],"uniqueKey":"start_command","typeLabel":"string | null"},"is_spa":{"type":"boolean","default":false,"description":"Route unknown paths of a static build to the index.","uniqueKey":"is_spa","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"location_id":1,"name":"api-worker","git_repository":"https://github.com/example/app","git_source":"public","git_branch":"main","build_pack":"nixpacks","ports_exposes":"3000","base_directory":"\u003cstring>","publish_directory":"\u003cstring>","install_command":"\u003cstring>","build_command":"\u003cstring>","start_command":"\u003cstring>","is_spa":false}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"9a8052cf-6612-4c93-8e8e-12a943c16898":{"description":"Worker accepted and queued for provisioning","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid","description":"Worker handle. Use this as the `{worker}` path parameter.","example":"7c9e6679-7425-40de-944b-e07fc1f90ae7","uniqueKey":"data.uuid","typeLabel":"string\u003cuuid>"},"name":{"type":"string","example":"api-worker","uniqueKey":"data.name","typeLabel":"string"},"status":{"type":"string","description":"Lifecycle state. `provisioning` means the first build is running; `failed` means it did not come up and can be retried with a `deploy` action.","enum":["pending","provisioning","active","suspended","abuse_suspended","cancelled","deleting","failed"],"example":"active","uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"runtime_status":{"oneOf":[{"type":"string","description":"Container state, such as `running`, `starting` or `exited`.","example":"running","uniqueKey":"data.runtime_status.oneOf.0","typeLabel":"string"},{"type":"null","description":"Container state, such as `running`, `starting` or `exited`.","example":"running","uniqueKey":"data.runtime_status.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.runtime_status","typeLabel":"string | null"},"runtime_status_at":{"oneOf":[{"type":"string","format":"date-time","description":"When the container state was last read.","uniqueKey":"data.runtime_status_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the container state was last read.","uniqueKey":"data.runtime_status_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.runtime_status_at","typeLabel":"string\u003cdate-time> | null"},"provisioned":{"type":"boolean","description":"False until the first build has produced an application.","example":true,"uniqueKey":"data.provisioned","typeLabel":"boolean"},"last_deployment_status":{"oneOf":[{"type":"string","description":"Status of the most recent build, such as `queued`, `in_progress`, `finished` or `failed`.","example":"finished","uniqueKey":"data.last_deployment_status.oneOf.0","typeLabel":"string"},{"type":"null","description":"Status of the most recent build, such as `queued`, `in_progress`, `finished` or `failed`.","example":"finished","uniqueKey":"data.last_deployment_status.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.last_deployment_status","typeLabel":"string | null"},"last_deployment_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"data.last_deployment_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"data.last_deployment_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.last_deployment_at","typeLabel":"string\u003cdate-time> | null"},"last_error":{"oneOf":[{"type":"string","description":"Why the last action failed, in plain language. `null` when the worker is healthy.","uniqueKey":"data.last_error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why the last action failed, in plain language. `null` when the worker is healthy.","uniqueKey":"data.last_error.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.last_error","typeLabel":"string | null"},"fqdn":{"oneOf":[{"type":"string","description":"Hostname the worker is served on, once it has one.","example":"api-worker.workers.cloudblast.io","uniqueKey":"data.fqdn.oneOf.0","typeLabel":"string"},{"type":"null","description":"Hostname the worker is served on, once it has one.","example":"api-worker.workers.cloudblast.io","uniqueKey":"data.fqdn.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.fqdn","typeLabel":"string | null"},"location_id":{"type":"integer","description":"Worker location, from `GET /workers/locations`.","example":1,"uniqueKey":"data.location_id","typeLabel":"integer"},"git_source":{"type":"string","enum":["public","github","template","database"],"example":"public","uniqueKey":"data.git_source","typeLabel":"enum\u003cstring>"},"git_repository":{"type":"string","description":"Repository URL, or the template id for a `template` or `database` worker.","example":"https://github.com/example/app","uniqueKey":"data.git_repository","typeLabel":"string"},"git_branch":{"oneOf":[{"type":"string","description":"Branch that is built.","example":"main","uniqueKey":"data.git_branch.oneOf.0","typeLabel":"string"},{"type":"null","description":"Branch that is built.","example":"main","uniqueKey":"data.git_branch.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.git_branch","typeLabel":"string | null"},"build_pack":{"type":"string","enum":["nixpacks","static","dockerfile"],"example":"nixpacks","uniqueKey":"data.build_pack","typeLabel":"enum\u003cstring>"},"ports_exposes":{"oneOf":[{"type":"string","description":"Port the container listens on.","example":"3000","uniqueKey":"data.ports_exposes.oneOf.0","typeLabel":"string"},{"type":"null","description":"Port the container listens on.","example":"3000","uniqueKey":"data.ports_exposes.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.ports_exposes","typeLabel":"string | null"},"base_directory":{"oneOf":[{"type":"string","description":"Directory inside the repository the build runs from.","uniqueKey":"data.base_directory.oneOf.0","typeLabel":"string"},{"type":"null","description":"Directory inside the repository the build runs from.","uniqueKey":"data.base_directory.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.base_directory","typeLabel":"string | null"},"publish_directory":{"oneOf":[{"type":"string","description":"Directory served for a `static` build.","uniqueKey":"data.publish_directory.oneOf.0","typeLabel":"string"},{"type":"null","description":"Directory served for a `static` build.","uniqueKey":"data.publish_directory.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.publish_directory","typeLabel":"string | null"},"install_command":{"oneOf":[{"type":"string","description":"Overrides the detected install step.","uniqueKey":"data.install_command.oneOf.0","typeLabel":"string"},{"type":"null","description":"Overrides the detected install step.","uniqueKey":"data.install_command.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.install_command","typeLabel":"string | null"},"build_command":{"oneOf":[{"type":"string","description":"Overrides the detected build step.","uniqueKey":"data.build_command.oneOf.0","typeLabel":"string"},{"type":"null","description":"Overrides the detected build step.","uniqueKey":"data.build_command.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.build_command","typeLabel":"string | null"},"start_command":{"oneOf":[{"type":"string","description":"Overrides the detected start command.","uniqueKey":"data.start_command.oneOf.0","typeLabel":"string"},{"type":"null","description":"Overrides the detected start command.","uniqueKey":"data.start_command.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.start_command","typeLabel":"string | null"},"is_spa":{"type":"boolean","description":"Serve a static build as a single-page app, routing unknown paths to the index.","example":false,"uniqueKey":"data.is_spa","typeLabel":"boolean"},"limits":{"type":"object","description":"Hard container caps, stamped at creation from the account level. A worker keeps the limits it was created with even after the account levels up.","properties":{"cpu":{"oneOf":[{"type":"number","description":"Cores","example":1,"uniqueKey":"data.limits.cpu.oneOf.0","typeLabel":"number"},{"type":"null","description":"Cores","example":1,"uniqueKey":"data.limits.cpu.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.limits.cpu","typeLabel":"number | null"},"memory_mb":{"oneOf":[{"type":"integer","example":1024,"uniqueKey":"data.limits.memory_mb.oneOf.0","typeLabel":"integer"},{"type":"null","example":1024,"uniqueKey":"data.limits.memory_mb.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.limits.memory_mb","typeLabel":"integer | null"},"disk_mb":{"oneOf":[{"type":"integer","example":5120,"uniqueKey":"data.limits.disk_mb.oneOf.0","typeLabel":"integer"},{"type":"null","example":5120,"uniqueKey":"data.limits.disk_mb.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.limits.disk_mb","typeLabel":"integer | null"}},"uniqueKey":"data.limits","typeLabel":"object"},"usage":{"type":"object","description":"Last measured consumption. `null` before anything has been measured.","properties":{"cpu_percent":{"oneOf":[{"type":"number","example":3.5,"uniqueKey":"data.usage.cpu_percent.oneOf.0","typeLabel":"number"},{"type":"null","example":3.5,"uniqueKey":"data.usage.cpu_percent.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.usage.cpu_percent","typeLabel":"number | null"},"memory_mb":{"oneOf":[{"type":"integer","example":184,"uniqueKey":"data.usage.memory_mb.oneOf.0","typeLabel":"integer"},{"type":"null","example":184,"uniqueKey":"data.usage.memory_mb.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.usage.memory_mb","typeLabel":"integer | null"},"disk_mb":{"oneOf":[{"type":"integer","example":612,"uniqueKey":"data.usage.disk_mb.oneOf.0","typeLabel":"integer"},{"type":"null","example":612,"uniqueKey":"data.usage.disk_mb.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.usage.disk_mb","typeLabel":"integer | null"}},"uniqueKey":"data.usage","typeLabel":"object"},"billing_type":{"type":"string","description":"Workers are billed by measured usage, charged hourly.","enum":["hourly"],"example":"hourly","uniqueKey":"data.billing_type","typeLabel":"enum\u003cstring>"},"suspended_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"data.suspended_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"data.suspended_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.suspended_at","typeLabel":"string\u003cdate-time> | null"},"suspension_reason":{"oneOf":[{"type":"string","description":"Why the worker was suspended, when it was.","uniqueKey":"data.suspension_reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why the worker was suspended, when it was.","uniqueKey":"data.suspension_reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.suspension_reason","typeLabel":"string | null"},"created_at":{"type":"string","format":"date-time","uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"},"location":{"type":"object","properties":{"id":{"type":"integer","description":"Pass as `location_id` when deploying.","example":1,"uniqueKey":"data.location.id","typeLabel":"integer"},"name":{"type":"string","example":"Frankfurt","uniqueKey":"data.location.name","typeLabel":"string"},"short_code":{"type":"string","example":"fra","uniqueKey":"data.location.short_code","typeLabel":"string"},"description":{"oneOf":[{"type":"string","example":"Germany","uniqueKey":"data.location.description.oneOf.0","typeLabel":"string"},{"type":"null","example":"Germany","uniqueKey":"data.location.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.location.description","typeLabel":"string | null"},"out_of_stock":{"type":"boolean","description":"True when no node in this location can currently take another worker.","example":false,"uniqueKey":"data.location.out_of_stock","typeLabel":"boolean"}},"uniqueKey":"data.location","typeLabel":"object"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"uuid":"7c9e6679-7425-40de-944b-e07fc1f90ae7","name":"api-worker","status":"active","runtime_status":"running","runtime_status_at":"2023-11-07T05:31:56Z","provisioned":true,"last_deployment_status":"finished","last_deployment_at":"2023-11-07T05:31:56Z","last_error":"\u003cstring>","fqdn":"api-worker.workers.cloudblast.io","location_id":1,"git_source":"public","git_repository":"https://github.com/example/app","git_branch":"main","build_pack":"nixpacks","ports_exposes":"3000","base_directory":"\u003cstring>","publish_directory":"\u003cstring>","install_command":"\u003cstring>","build_command":"\u003cstring>","start_command":"\u003cstring>","is_spa":false,"limits":{"cpu":1,"memory_mb":1024,"disk_mb":5120},"usage":{"cpu_percent":3.5,"memory_mb":184,"disk_mb":612},"billing_type":"hourly","suspended_at":"2023-11-07T05:31:56Z","suspension_reason":"\u003cstring>","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","location":{"id":1,"name":"Frankfurt","short_code":"fra","description":"Germany","out_of_stock":false}}}}},"exampleType":"generated"}},"exampleType":"generated"},"43d3105c-b01b-4796-a55c-df981a867c95":{"description":"Your account level allows 2 workers. Delete a worker or raise your account level to deploy more.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"required":["code","message"],"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"WORKER_LIMIT_REACHED","message":"Your account level allows 2 workers. Delete a worker or raise your account level to deploy more."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"WORKER_LIMIT_REACHED","message":"Your account level allows 2 workers. Delete a worker or raise your account level to deploy more."}}}},"exampleType":"examples"}},"exampleType":"examples"},"cdb6f93e-6cda-4307-b5d2-6ed4dea55918":{"description":"Authentication failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"required":["code","message"],"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"UNAUTHENTICATED","message":"Missing or invalid Authorization header. Use: Authorization: Bearer \u003ctoken>"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"UNAUTHENTICATED","message":"Missing or invalid Authorization header. Use: Authorization: Bearer \u003ctoken>"}}}},"exampleType":"examples"}},"exampleType":"examples"},"f1111991-d310-4555-9950-0c55fe471851":{"description":"Insufficient balance to deploy a Worker. At least 0.08 EUR is required to cover its first hour of usage. Please top up first.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"required":["code","message"],"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"INSUFFICIENT_BALANCE","message":"Insufficient balance to deploy a Worker. At least 0.08 EUR is required to cover its first hour of usage. Please top up first."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INSUFFICIENT_BALANCE","message":"Insufficient balance to deploy a Worker. At least 0.08 EUR is required to cover its first hour of usage. Please top up first."}}}},"exampleType":"examples"}},"exampleType":"examples"},"ec86b25f-ae49-4be8-987a-75c3e0474411":{"description":"Worker service sales are currently disabled.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"required":["code","message"],"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"WORKERS_DISABLED","message":"Worker service sales are currently disabled."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"WORKERS_DISABLED","message":"Worker service sales are currently disabled."}}}},"exampleType":"examples"}},"exampleType":"examples"},"84acfba9-1645-41a0-b4c6-dc1e03aa9fcf":{"description":"That location is not available for workers.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"required":["code","message"],"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"LOCATION_UNAVAILABLE","message":"That location is not available for workers."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"LOCATION_UNAVAILABLE","message":"That location is not available for workers."}}}},"exampleType":"examples"}},"exampleType":"examples"},"a8d2febd-3dd8-4275-895f-8ddbaa45ca87":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"VALIDATION_ERROR","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"The given data was invalid.","uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"error.details.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"error.details.additionalProperties","typeLabel":"string[]"},"example":{"name":["The name field is required."]},"uniqueKey":"error.details","typeLabel":"object"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"VALIDATION_ERROR","message":"The given data was invalid.","details":{"name":["The name field is required."]}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"a950f04c-1cad-473a-800e-24c270eea22a":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API token from your CloudBlast account settings. Pass as `Authorization: Bearer \u003ctoken>`.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"89aff401-441d-4092-bdc6-a98c41c822d8":{"url":"https://console.cloudblast.io/api/v2","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API token from your CloudBlast account settings. Pass as `Authorization: Bearer \u003ctoken>`.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API token from your CloudBlast account settings. Pass as `Authorization: Bearer \u003ctoken>`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"cloudblastllc","siteName":"CloudBlast Documentation","title":"Deploy a Worker - CloudBlast Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-22T14:00:03.273Z","originalFileLocation":"api-reference/workers/create-worker.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=\"Deploys a new worker. A node in the given location is picked automatically. Workers are billed by measured usage, and the first hour is charged against your balance, so the deploy is rejected outright when the balance is below the minimum. Call GET /workers/deploy-requirements first to see that minimum and how many workers your account level still allows. What git_repository holds depends on git_source: - public: a publicly reachable git URL. - github: a URL on a private repository of the GitHub account linked to your panel account. The OAuth flow only exists in the panel, so an account that has never linked GitHub is answered with GITHUB_NOT_CONNECTED. - template / database: the id of an entry from GET /workers/templates, not a URL. The worker comes back in pending and is built in the background. Poll GET /workers/{worker}/status until it reports active.\">\u003cmeta data-mint-head name=\"application-name\" content=\"CloudBlast Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloudblastllc/lR1uxlLZXRv8BFdr/_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/cloudblastllc/lR1uxlLZXRv8BFdr/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloudblastllc/lR1uxlLZXRv8BFdr/_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/cloudblastllc/lR1uxlLZXRv8BFdr/_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/cloudblastllc/lR1uxlLZXRv8BFdr/_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/cloudblastllc/lR1uxlLZXRv8BFdr/_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/cloudblastllc/lR1uxlLZXRv8BFdr/_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/cloudblastllc/lR1uxlLZXRv8BFdr/_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/cloudblastllc/lR1uxlLZXRv8BFdr/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Deploy a Worker - CloudBlast Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Deploys a new worker. A node in the given location is picked automatically. Workers are billed by measured usage, and the first hour is charged against your balance, so the deploy is rejected outright when the balance is below the minimum. Call GET /workers/deploy-requirements first to see that minimum and how many workers your account level still allows. What git_repository holds depends on git_source: - public: a publicly reachable git URL. - github: a URL on a private repository of the GitHub account linked to your panel account. The OAuth flow only exists in the panel, so an account that has never linked GitHub is answered with GITHUB_NOT_CONNECTED. - template / database: the id of an entry from GET /workers/templates, not a URL. The worker comes back in pending and is built in the background. Poll GET /workers/{worker}/status until it reports active.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CloudBlast Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cloudblast.io/api-reference/workers/create-worker\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cloudblastllc.mintlify.site/_mintlify/api/og/v2?division=Workers\u0026amp;title=Deploy+a+Worker\u0026amp;description=Deploys+a+new+worker.+A+node+in+the+given+location+is+picked+automatically.%0A%0AWorkers+are+billed+by+measured+usage%2C+and+the+first+hour+is+charged+against+your+ba\u0026amp;theme=b150144e09ddd98a55e41279\u0026amp;signature=04e9708e390be6842f45ef66afb5b288441c34df8bad1d11e9995251c7beecd2\">\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=\"Deploy a Worker - CloudBlast Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Deploys a new worker. A node in the given location is picked automatically. Workers are billed by measured usage, and the first hour is charged against your balance, so the deploy is rejected outright when the balance is below the minimum. Call GET /workers/deploy-requirements first to see that minimum and how many workers your account level still allows. What git_repository holds depends on git_source: - public: a publicly reachable git URL. - github: a URL on a private repository of the GitHub account linked to your panel account. The OAuth flow only exists in the panel, so an account that has never linked GitHub is answered with GITHUB_NOT_CONNECTED. - template / database: the id of an entry from GET /workers/templates, not a URL. The worker comes back in pending and is built in the background. Poll GET /workers/{worker}/status until it reports active.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cloudblastllc.mintlify.site/_mintlify/api/og/v2?division=Workers\u0026amp;title=Deploy+a+Worker\u0026amp;description=Deploys+a+new+worker.+A+node+in+the+given+location+is+picked+automatically.%0A%0AWorkers+are+billed+by+measured+usage%2C+and+the+first+hour+is+charged+against+your+ba\u0026amp;theme=b150144e09ddd98a55e41279\u0026amp;signature=04e9708e390be6842f45ef66afb5b288441c34df8bad1d11e9995251c7beecd2\">\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/cloudblastllc/lR1uxlLZXRv8BFdr/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CloudBlast Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6366F1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cloudblast.io/api-reference/workers/create-worker\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/workers/create-worker.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cloudblast.io/#organization\",\"name\":\"CloudBlast Documentation\",\"url\":\"https://docs.cloudblast.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cloudblastllc/UjwQ5b7jMNVfxnfM/logodark.svg?fit=max\u0026auto=format\u0026n=UjwQ5b7jMNVfxnfM\u0026q=85\u0026s=835178d0faa08ff213bc8c7adf4009c6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cloudblast.io#website\",\"name\":\"CloudBlast Documentation\",\"url\":\"https://docs.cloudblast.io\",\"publisher\":{\"@id\":\"https://docs.cloudblast.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cloudblast.io/api-reference/workers/create-worker#webpage\",\"url\":\"https://docs.cloudblast.io/api-reference/workers/create-worker\",\"name\":\"Deploy a Worker\",\"description\":\"Deploys a new worker. A node in the given location is picked automatically. Workers are billed by measured usage, and the first hour is charged against your balance, so the deploy is rejected outright when the balance is below the minimum. Call GET /workers/deploy-requirements first to see that minimum and how many workers your account level still allows. What git_repository holds depends on git_source: - public: a publicly reachable git URL. - github: a URL on a private repository of the GitHub account linked to your panel account. The OAuth flow only exists in the panel, so an account that has never linked GitHub is answered with GITHUB_NOT_CONNECTED. - template / database: the id of an entry from GET /workers/templates, not a URL. The worker comes back in pending and is built in the background. Poll GET /workers/{worker}/status until it reports active.\",\"dateModified\":\"2026-09-22T14:00:03.273Z\",\"isPartOf\":{\"@id\":\"https://docs.cloudblast.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cloudblast.io/api-reference/workers/create-worker#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cloudblast.io/api-reference/workers/create-worker#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Workers\",\"item\":\"https://docs.cloudblast.io/api-reference/workers/list-workers\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploy a Worker\",\"item\":\"https://docs.cloudblast.io/api-reference/workers/create-worker\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.cloudblast.io/api-reference/workers/create-worker#apireference\",\"headline\":\"Deploy a Worker\",\"name\":\"Deploy a Worker\",\"description\":\"Deploys a new worker. A node in the given location is picked automatically. Workers are billed by measured usage, and the first hour is charged against your balance, so the deploy is rejected outright when the balance is below the minimum. Call GET /workers/deploy-requirements first to see that minimum and how many workers your account level still allows. What git_repository holds depends on git_source: - public: a publicly reachable git URL. - github: a URL on a private repository of the GitHub account linked to your panel account. The OAuth flow only exists in the panel, so an account that has never linked GitHub is answered with GITHUB_NOT_CONNECTED. - template / database: the id of an entry from GET /workers/templates, not a URL. The worker comes back in pending and is built in the background. Poll GET /workers/{worker}/status until it reports active.\",\"url\":\"https://docs.cloudblast.io/api-reference/workers/create-worker\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cloudblast.io/api-reference/workers/create-worker#webpage\"},\"dateModified\":\"2026-09-22T14:00:03.273Z\",\"publisher\":{\"@id\":\"https://docs.cloudblast.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cloudblast.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CloudBlast Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"CloudBlast Documentation","nav":{"global":null,"tabs":[{"tab":"Getting Started","pages":[{"title":"Getting Started","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API Reference","href":"/api-reference/overview"}]},{"group":"Account","pages":[{"title":"Get Account Info","openapi":"GET /account","href":"/api-reference/account/get-account-info"},{"title":"Get Resource Usage","openapi":"GET /account/usage","href":"/api-reference/account/get-resource-usage"},{"title":"List Invoices","openapi":"GET /account/invoices","href":"/api-reference/account/list-invoices"}]},{"group":"Plans \u0026 Locations","pages":[{"title":"List Plans","openapi":"GET /plans","href":"/api-reference/plans/list-plans"},{"title":"List Locations","openapi":"GET /locations","href":"/api-reference/locations/list-locations"},{"title":"List Templates","openapi":"GET /locations/{location_id}/templates","href":"/api-reference/locations/list-templates"}]},{"group":"Servers","pages":[{"title":"List Servers","openapi":"GET /servers","href":"/api-reference/servers/list-servers"},{"title":"Create Server","openapi":"POST /servers","href":"/api-reference/servers/create-server"},{"title":"Get Server Details","openapi":"GET /servers/{server}","href":"/api-reference/servers/get-server"},{"title":"Get Server Credentials","openapi":"GET /servers/{server}/credentials","href":"/api-reference/servers/get-credentials"},{"title":"Delete Server","openapi":"DELETE /servers/{server}","href":"/api-reference/servers/delete-server"},{"title":"Send Power Action","openapi":"POST /servers/{server}/actions","href":"/api-reference/servers/power-action"},{"title":"Get Real-Time Status","openapi":"GET /servers/{server}/status","href":"/api-reference/servers/get-status"},{"title":"Reinstall OS","openapi":"POST /servers/{server}/reinstall","href":"/api-reference/servers/reinstall"},{"title":"Rename Server","openapi":"PATCH /servers/{server}/rename","href":"/api-reference/servers/rename"}]},{"group":"Server IPs","pages":[{"title":"List Server IPs","openapi":"GET /servers/{server}/ips","href":"/api-reference/server-ips/list-ips"},{"title":"Add Extra IPs","openapi":"POST /servers/{server}/ips","href":"/api-reference/server-ips/add-ips"},{"title":"Remove an IP","openapi":"DELETE /servers/{server}/ips/{address}","href":"/api-reference/server-ips/remove-ip"},{"title":"Move an IP to Reserved IPs","openapi":"POST /servers/{server}/ips/{address}/move-to-reserved","href":"/api-reference/server-ips/move-to-reserved"},{"title":"Set Reverse DNS","openapi":"PUT /servers/{server}/ips/{address}/rdns","href":"/api-reference/server-ips/set-rdns"}]},{"group":"Reserved IPs","pages":[{"title":"List Reserved IPs","openapi":"GET /reserved-ips","href":"/api-reference/reserved-ips/list-reserved-ips"},{"title":"List Reservable Subnets","openapi":"GET /reserved-ips/subnets","href":"/api-reference/reserved-ips/list-subnets"},{"title":"Reserve IPs","openapi":"POST /reserved-ips","href":"/api-reference/reserved-ips/reserve-ips"},{"title":"Release a Reserved IP","openapi":"DELETE /reserved-ips/{address}","href":"/api-reference/reserved-ips/release-ip"}]},{"group":"Backups","pages":[{"title":"List Backups","openapi":"GET /servers/{server}/backups","href":"/api-reference/backups/list-backups"},{"title":"Create Backup","openapi":"POST /servers/{server}/backups","href":"/api-reference/backups/create-backup"},{"title":"Restore Backup","openapi":"POST /servers/{server}/backups/{backup_uuid}/restore","href":"/api-reference/backups/restore-backup"},{"title":"Delete Backup","openapi":"DELETE /servers/{server}/backups/{backup_uuid}","href":"/api-reference/backups/delete-backup"}]},{"group":"SSH Keys","pages":[{"title":"List SSH Keys","openapi":"GET /ssh-keys","href":"/api-reference/ssh-keys/list-ssh-keys"},{"title":"Add SSH Key","openapi":"POST /ssh-keys","href":"/api-reference/ssh-keys/add-ssh-key"},{"title":"Delete SSH Key","openapi":"DELETE /ssh-keys/{id}","href":"/api-reference/ssh-keys/delete-ssh-key"}]},{"group":"Security Groups","pages":[{"title":"List Security Groups","openapi":"GET /security-groups","href":"/api-reference/security-groups/list-groups"},{"title":"Create Security Group","openapi":"POST /security-groups","href":"/api-reference/security-groups/create-group"},{"title":"Get Security Group","openapi":"GET /security-groups/{id}","href":"/api-reference/security-groups/get-group"},{"title":"Delete Security Group","openapi":"DELETE /security-groups/{id}","href":"/api-reference/security-groups/delete-group"},{"title":"Add Firewall Rule","openapi":"POST /security-groups/{id}/rules","href":"/api-reference/security-groups/add-rule"},{"title":"Delete Firewall Rule","openapi":"DELETE /security-groups/{id}/rules/{rule_id}","href":"/api-reference/security-groups/delete-rule"},{"title":"Apply Firewall Rules","openapi":"POST /security-groups/{id}/deploy","href":"/api-reference/security-groups/deploy"},{"title":"Attach Server","openapi":"POST /security-groups/{id}/servers/attach","href":"/api-reference/security-groups/attach-server"},{"title":"Detach Server","openapi":"DELETE /security-groups/{id}/servers/detach","href":"/api-reference/security-groups/detach-server"}]},{"group":"Workers","pages":[{"title":"List Workers","openapi":"GET /workers","description":"Returns a paginated list of your workers, newest first. Optionally filter by status.","href":"/api-reference/workers/list-workers"},{"title":"Deploy a Worker","openapi":"POST /workers","href":"/api-reference/workers/create-worker"},{"title":"Get Worker","openapi":"GET /workers/{worker}","description":"Returns one worker. While it is still building or settling after an action, live state is read from the platform rather than the stored row.","href":"/api-reference/workers/get-worker"},{"title":"Update Worker","openapi":"PATCH /workers/{worker}","href":"/api-reference/workers/update-worker"},{"title":"Delete Worker","openapi":"DELETE /workers/{worker}","href":"/api-reference/workers/delete-worker"},{"title":"Deploy, Start, Stop, Restart","openapi":"POST /workers/{worker}/actions","href":"/api-reference/workers/worker-action"},{"title":"Get Worker Status","openapi":"GET /workers/{worker}/status","href":"/api-reference/workers/get-status"},{"title":"List Worker Locations","openapi":"GET /workers/locations","href":"/api-reference/workers/list-locations"},{"title":"List One-Click Templates","openapi":"GET /workers/templates","href":"/api-reference/workers/list-templates"},{"title":"Check Deploy Requirements","openapi":"GET /workers/deploy-requirements","href":"/api-reference/workers/deploy-requirements"}]}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli/overview"}]}]},"basePath":"","title":"Deploy a Worker - CloudBlast Documentation","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Myd8dsju.js","utils-C2HkQgW0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-8rSppmTv.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B6MjiCFm.js","snippetPresets-DwrSAONL.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-1-a5UQKQ.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C541m7wZ.js","shallow-CWELCZ77.js","getApiPlaygroundDisplay-CTo5Zn03.js","CodeSnippet-D--dzvnl.js","CodeSnippets-DM3cXEDh.js","Page-CxAy5y67.js","getPastedJson-C-VECgcL.js","icon-BPq2-Mg3.js","MethodPill-D9J5cUHd.js","DuplicateIcon-BqHaxUnD.js","createIcon-CIbcZHp9.js","DynamicMarkdown-BKiHAm_d.js","SectionHeading-DstQXt3H.js","axios-vUo_bRtp.js","Markdown-CpxgzsKA.js","clsx-C5EfhVm0.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CJ9Oly2E.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Mk6P3qvh.js"]}