Organization API: Customer Portal: Servers
The 23 Organization API operations for servers.
Part of Customer Portal.
Operations
Section titled OperationsGet server
Section titled Get serverGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
This server's automatic backups: whether it has them, whether they run and the last backup
Section titled This server's automatic backups: whether it has them, whether they run and the last backupGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/auto-backups
This server's automatic backups: whether it has them, whether they run and the last backup.
A server, free or paid, has them while it carries the Automatic Server Backups add-on.
We take one snapshot a day (frequency) and keep the newest keep.
They count against the customer's snapshot storage. available says
whether the server has them, enabled whether they are running, and
paused whether the customer switched them off. reason is one word
for why there are none or why the last run took none: not_included
(an add-on the customer can buy, on a free server too), snapshots_off or
no_room (the snapshot storage is full), and message says it in a
sentence. last_backup is the newest finished one, with its snapshot
id, created_at and size_bytes. A shared customer needs
snapshot.read.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Pause or resume this server's automatic backups, and answer as GET does
Section titled Pause or resume this server's automatic backups, and answer as GET doesPUT /api/v1/orgs/{org_slug}/portal/servers/{uuid}/auto-backups
Pause or resume this server's automatic backups, and answer as GET does.
Pausing keeps the add-on and its billing, and keeps the backups already taken. Answers 409, naming why, when the server does not have automatic backups. Only the server's owner can change it, not a shared customer.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Request body
Section titled Request bodyapplication/json (required)
| Field | Type | Required |
|---|---|---|
enabled |
boolean | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Command
Section titled CommandPOST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/command
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
command |
query | string or null | no |
Request body
Section titled Request bodyapplication/json
| Field | Type | Required |
|---|---|---|
command |
string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Console lines
Section titled Console linesGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/console
The newest lines of the server's console, as the Console tab shows them, without colour codes.
lines is a list of text lines, oldest first. It works for every game,
Bedrock included, which has no logs/latest.log. A server that is not
running answers with what the node kept from its last run, which may be
empty. Needs the control.console permission on a shared server. 409 when
the node no longer has the server.
Parameters
Section titled Parameters| Name | In | Type | Required | Description |
|---|---|---|---|---|
uuid |
path | string | yes | |
org_slug |
path | string | yes | |
lines |
query | integer | no | How many of the newest console lines to return (1 to 200). Default: 100. |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Tell us this world is still wanted, and lift a hold if one is on
Section titled Tell us this world is still wanted, and lift a hold if one is onPOST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/keep
Tell us this world is still wanted, and lift a hold if one is on.
One endpoint for both halves of the inactivity ladder: the nudge's "keep it" link and the suspension's "reactivate". They differ only in whether the server is currently suspended, and asking the customer to understand that distinction would be asking them to understand our sweep.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Public-list visibility and tags for the Server Settings tab
Section titled Public-list visibility and tags for the Server Settings tabGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/listing
Warning
Deprecated. It still answers, but new code should not use it.
Public-list visibility and tags for the Server Settings tab.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Toggle public-list visibility and replace the listing tags
Section titled Toggle public-list visibility and replace the listing tagsPATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/listing
Warning
Deprecated. It still answers, but new code should not use it.
Toggle public-list visibility and replace the listing tags.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Request body
Section titled Request bodyapplication/json (required)
| Field | Type | Required |
|---|---|---|
hidden |
boolean or null | no |
tags |
array of string or null | no |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
List grantable permissions
Section titled List grantable permissionsGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/permissions
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Power
Section titled PowerPOST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/power
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Request body
Section titled Request bodyapplication/json (required)
| Field | Type | Required |
|---|---|---|
signal |
string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Wipe server files and re-run the template install script + verify
Section titled Wipe server files and re-run the template install script + verifyPOST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/reinstall
Wipe server files and re-run the template install script + verify.
On a server that installed, this deletes every file, so it is confirmed
the way every other wipe is: confirm_server_name must name the server.
The storefront asks for it before the request; a request without it is
refused here so no client can wipe a server on a bare click.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Request body
Section titled Request bodyapplication/json
| Field | Type | Required |
|---|---|---|
confirm_server_name |
string or null | no |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Get resources
Section titled Get resourcesGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/resources
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Patch settings
Section titled Patch settingsPATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/settings
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Request body
Section titled Request bodyapplication/json (required)
| Field | Type | Required | Description |
|---|---|---|---|
name |
string or null | no | 2–48 characters once spaces are collapsed |
world_optimization_enabled |
boolean or null | no |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Connection details for this server's SFTP login
Section titled Connection details for this server's SFTP loginGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/sftp
Connection details for this server's SFTP login.
The portal login email is the SFTP identity, and it need not match any
platform user, so the storefront cannot derive this from auth/me.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Fields of a 200 response:
| Field | Type |
|---|---|
host |
string |
port |
integer |
username |
string |
Sleep and start-queue state for a free server
Section titled Sleep and start-queue state for a free serverGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/sleep
Sleep and start-queue state for a free server.
sleeps_at is absolute so a client can run the countdown locally instead of
polling for a ticking number. Returns policy: none for a paid server, so a
frontend can render one component for both.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Fields of a 200 response:
| Field | Type |
|---|---|
sleep |
Sleep |
entitlements |
array of object |
Every startup variable the server runs with, and what its owner may do with each
Section titled Every startup variable the server runs with, and what its owner may do with eachGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/startup-variables
Every startup variable the server runs with, and what its owner may do with each.
The same answer as the client API's GET /servers/{uuid}/startup-variables:
variables (each with value, secret, editable, locked,
managed_by, removable, default, source and rule),
game and free_plan_rules. Needs startup.read.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Change, add or remove the server's startup variables
Section titled Change, add or remove the server's startup variablesPATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/startup-variables
Change, add or remove the server's startup variables.
The client API's rule (PATCH /servers/{uuid}/startup-variables):
variables sets or adds names, remove_variables takes names away,
values are single lines of up to 1,024 characters, a declared password
and a game's own settings keep their rules, and 400 names the variable for
a name the platform sets, a name its own setting manages, or a free
server's program variable or shell characters. Values live in
container_server_variables and apply on the next restart. Needs
startup.update; the activity log names the keys, never the values.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Request body
Section titled Request bodyapplication/json (required)
| Field | Type | Required |
|---|---|---|
variables |
Variables | no |
remove_variables |
array of string | no |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Ask the game itself who is online
Section titled Ask the game itself who is onlineGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/status-ping
Ask the game itself who is online. Best-effort; never fails the request.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Fields of a 200 response:
| Field | Type |
|---|---|
reachable |
boolean |
players_online |
integer or null |
players_max |
integer or null |
sample |
array of string |
version |
string or null |
protocol |
integer or null |
motd |
string or null |
favicon |
string or null |
latency_ms |
integer or null |
Rename the gameproxy join-address subdomain for this server
Section titled Rename the gameproxy join-address subdomain for this serverPATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/subdomain
Rename the gameproxy join-address subdomain for this server.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Request body
Section titled Request bodyapplication/json (required)
| Field | Type | Required |
|---|---|---|
subdomain |
string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Ask for a sleeping free server to be started
Section titled Ask for a sleeping free server to be startedPOST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/wake
Ask for a sleeping free server to be started.
First in line with headroom starts in this request so the customer is not
left waiting on a worker poll. Otherwise the row stays queued and a tick
job releases it when the node has room. The response always carries the
queue block (including ahead: 0) so a frontend can show the process.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Request body
Section titled Request bodyapplication/json
| Field | Type | Required |
|---|---|---|
turnstile_token |
string or null | no |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Return panel WS URL + the caller's bearer token for WS query auth
Section titled Return panel WS URL + the caller's bearer token for WS query authGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/websocket
Return panel WS URL + the caller's bearer token for WS query auth.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Fields of a 200 response:
| Field | Type |
|---|---|
token |
string |
socket |
string |
What unused-chunk cleanup has done to this world, and when
Section titled What unused-chunk cleanup has done to this world, and whenGET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/world-optimization
What unused-chunk cleanup has done to this world, and when.
A feature that quietly deletes parts of somebody's world owes them the receipts: how much it reclaimed, when it last ran, and which worlds it left alone. It is also what turns an abstract switch into "this saved you 1.8 GB".
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |
Queue an unused-chunk trim now, once per minintervalhours
Section titled Queue an unused-chunk trim now, once per minintervalhoursPOST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/world-optimization
Queue an unused-chunk trim now, once per min_interval_hours.
Free and paid alike. Safety checks (offline, lease, node concurrency) stay with the job; this endpoint only gates the once-per-day customer button and that the feature is on for this server. Platform dry-run mode still applies.
Cooldown is based on last_run_at, not a pre-reserve of next_eligible_at,
so a queued job that exits before recording a run cannot lock the button.
Parameters
Section titled Parameters| Name | In | Type | Required |
|---|---|---|---|
uuid |
path | string | yes |
org_slug |
path | string | yes |
Responses
Section titled Responses| Status | Meaning |
|---|---|
200 |
Success. |
422 |
The request is not valid. detail lists each problem. |