Instance settings
The instance: version and updates, the console domain, Traefik, cleanup, GPUs, branding and health.
Applies to: Mostly self-hosted
Settings of the Cloudgate instance itself and the machine it runs on (the platform host). Most writes here are for an owner or admin of the instance organization, the first Organization made on the instance.
Every request goes to https://cloudgate.octabyte.app/backend on the Hosted instance, or to your console address followed by /backend when you self-host. Send a Personal key in x-api-key and the Organization in x-organization-id; Authentication shows how to make the key, and Errors explains every refusal. The examples setCLOUDGATE_KEY and CLOUDGATE_ORG_ID in the shell first. To do the same in the console, read Instance settings in the user guide.
About
Identify the instance
GET/settings/about
Who can call it: Public: no key needed.
Responses
200OK- Public. Names this as a Cloudgate, its server version, the API's own origin for WebSockets (null when CLOUDGATE_API_URL is unset), and whether this is the Hosted instance or a Self-hosted one.
| Field | Type | Notes |
|---|---|---|
productalways | string | One of cloudgate. |
versionalways | string | |
apiUrlalways | string or null | |
mode | string | One of hosted, self-hosted. |
curl https://cloudgate.octabyte.app/backend/settings/aboutSettings
Get web server settings
GET/settings/web-server
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/web-server \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Get white-labeling config
GET/settings/whitelabeling
The instance's branding.
Who can call it: Public: no key needed.
Responses
200OK- The result, as JSON.
curl https://cloudgate.octabyte.app/backend/settings/whitelabelingUpdate white-labeling config
PATCH/settings/whitelabeling
Rebrand the instance: enterprise-gated in the service, like the other enterprise surfaces. A merge, not a replace — an omitted key keeps its stored value and an explicit null clears it.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
appName | string or null | Up to 120 characters. |
logoUrl | string or null | Up to 2048 characters. |
faviconUrl | string or null | Up to 2048 characters. |
primaryColor | string or null | Matches ^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$. |
accentColor | string or null | Matches ^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$. |
customCss | string or null | Up to 50000 characters. |
errorPages | object | |
errorPages.notFoundMessage | string or null | Up to 500 characters. |
errorPages.serverErrorMessage | string or null | Up to 500 characters. |
errorPages.supportUrl | string or null | Up to 2048 characters. |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/settings/whitelabeling \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"appName": "storefront",
"logoUrl": "https://northwind.dev",
"faviconUrl": "https://northwind.dev"
}'Get the server IP
GET/settings/ip
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/ip \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Update server IP
POST/settings/ip
Sets the platform host's IP on the settings singleton; owners and admins of the instance organization only.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverIprequired | string |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/ip \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"serverIp": "example"
}'Update builds concurrency
POST/settings/builds-concurrency
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
buildsConcurrencyrequired | integer | 1 to 100. |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/builds-concurrency \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"buildsConcurrency": 1
}'Update cloud runs concurrency
POST/settings/cloud-runs-concurrency
The Cloud run pool limit, gated like Concurrent builds.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
cloudRunsConcurrencyrequired | integer | 1 to 20. |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cloud-runs-concurrency \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"cloudRunsConcurrency": 1
}'Update cloud run time limit
POST/settings/cloud-run-time-limit
The Cloud run time limit, gated like Concurrent builds.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
cloudRunTimeLimitMinutesrequired | integer | 5 to 1440. |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cloud-run-time-limit \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"cloudRunTimeLimitMinutes": 5
}'Update requested preview max TTL
POST/settings/requested-preview-max-ttl
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
requestedPreviewMaxTtlMinutesrequired | integer | 1 to 10080. |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/requested-preview-max-ttl \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"requestedPreviewMaxTtlMinutes": 1
}'Read Traefik config
GET/settings/traefik/config
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/config \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Update Traefik config
POST/settings/traefik/config
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
traefikConfigrequired | string | Not empty. |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/config \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"traefikConfig": "example"
}'Read web server Traefik config
GET/settings/traefik/web-server-config
Reads the console's dynamic/cloudgate.yml; owners and admins of the instance organization only.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/web-server-config \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Update web server Traefik config
POST/settings/traefik/web-server-config
Overwrites dynamic/cloudgate.yml with raw YAML; owners and admins of the instance organization only.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
traefikConfigrequired | string | Not empty. |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/web-server-config \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"traefikConfig": "example"
}'Read middleware Traefik config
GET/settings/traefik/middlewares-config
Reads dynamic/middlewares.yml; owners and admins of the instance organization only.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/middlewares-config \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Update middleware Traefik config
POST/settings/traefik/middlewares-config
Overwrites dynamic/middlewares.yml with raw YAML; owners and admins of the instance organization only.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
traefikConfigrequired | string | Not empty. |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/middlewares-config \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"traefikConfig": "example"
}'Read directories
GET/settings/traefik/directories
Lists the Traefik directory tree of the platform host or of the Server serverId names (traefikFiles:read; the host takes the instance organization’s owners and admins).
Who can call it: Owner or Admin. Needs traefikFiles: read, which a custom role can also grant.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
serverId | query | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403Your role does not allow it, or you were not granted what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/directories \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Read Traefik file
GET/settings/traefik/file
Reads one file under the Traefik directory by path (traefikFiles:read; serverId org-scoped, the host takes the instance organization’s owners and admins). A file holding private-key material is refused, and htpasswd entries come back redacted.
Who can call it: Owner or Admin. Needs traefikFiles: read, which a custom role can also grant.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
pathrequired | query | string | Not empty. |
serverId | query | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403Your role does not allow it, or you were not granted what it touches. The error body.
curl "https://cloudgate.octabyte.app/backend/settings/traefik/file?path=example" \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Update Traefik file
POST/settings/traefik/file
Writes one file under the Traefik directory by path (traefikFiles:write; serverId org-scoped, the host takes the instance organization’s owners and admins). A key file is refused, YAML is parsed before it is written, and a redacted htpasswd entry keeps its stored secret.
Who can call it: Owner or Admin. Needs traefikFiles: write, which a custom role can also grant.
Request body
| Field | Type | Notes |
|---|---|---|
pathrequired | string | Not empty. |
traefikConfigrequired | string | Not empty. |
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403Your role does not allow it, or you were not granted what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/file \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"path": "/",
"traefikConfig": "example"
}'Get version
GET/settings/version
The running Cloudgate version (any authenticated user).
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/version \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Get release tag
GET/settings/release-tag
The image tag this instance runs (any authenticated user).
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/release-tag \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Check for a newer version
POST/settings/update-data
Compares the running version with the newest cloudgate/cloudgate tag on Docker Hub (any authenticated user). A POST, though it writes nothing.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/update-data \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Update Cloudgate
POST/settings/update-server
Pulls the newest cloudgate image and force-updates the service running this console.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/update-server \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Check GPU status
GET/settings/gpu
NVIDIA driver, runtime, CUDA and swarm GPU status of the platform host or the named Server.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
serverId | query | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/gpu \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Count GPUs
GET/settings/gpu/counts
The counts-only GPU read: cards advertised by ID and cards no running task holds, on the platform host or the named Server, read live.
Who can call it: Owner or Admin. Needs service: create, which a custom role can also grant.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
serverId | query | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403Your role does not allow it, or you were not granted what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/gpu/counts \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Set up GPU support
POST/settings/gpu-setup
Sets up swarm GPU support on the platform host or the named Server; a failure answers 400 with its message.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/gpu-setup \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"serverId": "Ni7mAbWKjbWy4KErPjtrY"
}'Check infrastructure health
GET/settings/infrastructure-health
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/infrastructure-health \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Get runtime info
GET/settings/runtime-info
What this install is actually running, declared beside observed.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
serverId | query | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/runtime-info \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Check liveness
GET/settings/health
Liveness: { status: 'ok' } once the database answers (public).
Who can call it: Public: no key needed.
Responses
200OK- The result, as JSON.
curl https://cloudgate.octabyte.app/backend/settings/healthCheck whether the Organization has Servers or Projects
GET/settings/is-user-subscribed
Whether the active org has servers or projects (any signed-in user).
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/is-user-subscribed \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Check whether the access log is on
GET/settings/traefik/requests
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
serverId | query | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/requests \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Turn the access log on or off
POST/settings/traefik/requests
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
enablerequired | boolean | |
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/requests \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"enable": true
}'Set the console's domain
POST/settings/assign-domain
Assigns the console's domain, certificate type and ACME email and rewrites dynamic/cloudgate.yml; owners and admins of the instance organization only. Answers with the sanitized row: the metrics agent token is projected out, and consoleOrigin says whether sign-in on the new domain will work.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
hostrequired | string | |
certificateTyperequired | string | One of letsencrypt, none, custom. |
letsEncryptEmail | string (email) or string | |
https | boolean |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/assign-domain \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"host": "shop.northwind.dev",
"certificateType": "letsencrypt"
}'Get log cleanup status
GET/settings/log-cleanup
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/log-cleanup \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Update log cleanup
POST/settings/log-cleanup
Starts or stops the access-log rotation cron; owners and admins of the instance organization only.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
cronExpressionrequired | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/log-cleanup \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"cronExpression": "0 3 * * *"
}'Clear the deployment queue
POST/settings/clean-deployment-queue
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/clean-deployment-queue \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Clean unused images
POST/settings/cleanup/images
docker image prune --all.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/images \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"serverId": "Ni7mAbWKjbWy4KErPjtrY"
}'Clean unused volumes
POST/settings/cleanup/volumes
docker volume prune --all.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/volumes \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"serverId": "Ni7mAbWKjbWy4KErPjtrY"
}'Clean stopped containers
POST/settings/cleanup/stopped-containers
docker container prune.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/stopped-containers \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"serverId": "Ni7mAbWKjbWy4KErPjtrY"
}'Clean Docker builder
POST/settings/cleanup/docker-builder
docker builder prune --all.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/docker-builder \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"serverId": "Ni7mAbWKjbWy4KErPjtrY"
}'Prune Docker system
POST/settings/cleanup/docker-prune
System prune + builder prune.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/docker-prune \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"serverId": "Ni7mAbWKjbWy4KErPjtrY"
}'Run every cleanup
POST/settings/cleanup/all
Every prune but volumes, backgrounded.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/all \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"serverId": "Ni7mAbWKjbWy4KErPjtrY"
}'Clear stored metrics
POST/settings/cleanup/monitoring
Deletes the platform host's stored samples — its server_metric and container_metric rows, every organization's containers on it included — and recreates its metrics directory. No serverId — the store is the instance's — so the instance organization’s owners and admins outright. A Server's samples are not touched; its own retention cleanup prunes them.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/monitoring \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Get Docker disk usage
GET/settings/docker-disk-usage
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/docker-disk-usage \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Update Docker cleanup
POST/settings/docker-cleanup
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
enableDockerCleanuprequired | boolean | |
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/docker-cleanup \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"enableDockerCleanup": true
}'Reload server
POST/settings/reload-server
Force-updates the cloudgate service, which restarts the backend serving this request.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Responses
200OK- The result, as JSON.
- Refusals
401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/reload-server \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Reload Traefik
POST/settings/traefik/reload
Restarts Traefik on the platform host or the named Server, fire-and-forget so the request returns before Traefik goes down (avoids proxy timeouts).
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/reload \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"serverId": "Ni7mAbWKjbWy4KErPjtrY"
}'Enable request metrics
POST/settings/traefik/request-metrics
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/request-metrics \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"serverId": "Ni7mAbWKjbWy4KErPjtrY"
}'Read Traefik env
GET/settings/traefik/env
Traefik's environment as KEY=value lines, less every key the machine's DNS-01 setup names: those are credentials, and a response carries a secret's presence, never its value. GET /settings/traefik/dns-challenge is where their names are answered.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
serverId | query | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/env \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Write Traefik env
POST/settings/traefik/env
Replaces Traefik's environment: resolve the env refs, keep the current ports, and recreate Traefik in the background.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
envrequired | string | |
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/env \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"env": "NODE_ENV=production"
}'Read DNS challenge
GET/settings/traefik/dns-challenge
The machine's DNS-01 setup: { provider, credentialKeys }, or null when it has none. The credential values are never answered.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
serverId | query | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/dns-challenge \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Update DNS challenge
PUT/settings/traefik/dns-challenge
Sets the machine's DNS provider and credentials, writes the letsencrypt-dns resolver into its traefik.yml and recreates its Traefik with the credentials in its env. Answers what the GET answers.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverId | string or null | |
providerrequired | string | Matches ^[a-z0-9-]{1,64}$. |
credentials | map of string |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X PUT https://cloudgate.octabyte.app/backend/settings/traefik/dns-challenge \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"provider": "example"
}'Remove DNS challenge
DELETE/settings/traefik/dns-challenge
Removes the machine's DNS-01 setup — row, resolver and env keys — or 409s naming the Applications whose previews still use it.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
serverId | query | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X DELETE https://cloudgate.octabyte.app/backend/settings/traefik/dns-challenge \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Check the Traefik dashboard port
GET/settings/traefik/dashboard
Whether Traefik publishes dashboard port 8080.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
serverId | query | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/dashboard \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Turn the Traefik dashboard on or off
POST/settings/traefik/dashboard
Publishes or withdraws Traefik's dashboard port 8080 and the api block that answers on it, 409 when 8080 is taken.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
enableDashboard | boolean | |
serverId | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/dashboard \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"enableDashboard": true,
"serverId": "Ni7mAbWKjbWy4KErPjtrY"
}'Get Traefik ports
GET/settings/traefik/ports
Traefik's additional published ports.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
serverId | query | string or null |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/ports \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID"Update Traefik ports
POST/settings/traefik/ports
Replaces Traefik's additional published ports after checking none is in use, and recreates Traefik in the background.
Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.
Request body
| Field | Type | Notes |
|---|---|---|
serverId | string or null | |
additionalPortsrequired | array of object | |
additionalPorts[].targetPortrequired | number | |
additionalPorts[].publishedPortrequired | number | |
additionalPorts[].protocolrequired | string | One of tcp, udp, sctp. |
Responses
200OK- The result, as JSON.
- Refusals
400Validation failed;detailsnames each field;401No key, or the key is not valid;403You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/ports \
-H "x-api-key: $CLOUDGATE_KEY" \
-H "x-organization-id: $CLOUDGATE_ORG_ID" \
-H "content-type: application/json" \
-d '{
"additionalPorts": [
{
"targetPort": 3000,
"publishedPort": 3000,
"protocol": "tcp"
}
]
}'Something missing or wrong on this page? Email support@octabyte.io, or start a free trial and try it in the console.