Skip to content
Coritan Docs

Organization API: Customer Portal: Servers

The 23 Organization API operations for servers.

View as Markdown

Part of Customer Portal.

Method Path Summary
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid} Get server
GET /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
PUT /api/v1/orgs/{org_slug}/portal/servers/{uuid}/auto-backups Pause or resume this server's automatic backups, and answer as GET does
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/command Command
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/console Console lines
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/keep Tell us this world is still wanted, and lift a hold if one is on
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/listing Public-list visibility and tags for the Server Settings tab
PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/listing Toggle public-list visibility and replace the listing tags
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/permissions List grantable permissions
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/power Power
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/reinstall Wipe server files and re-run the template install script + verify
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/resources Get resources
PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/settings Patch settings
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/sftp Connection details for this server's SFTP login
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/sleep Sleep and start-queue state for a free server
GET /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
PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/startup-variables Change, add or remove the server's startup variables
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/status-ping Ask the game itself who is online
PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/subdomain Rename the gameproxy join-address subdomain for this server
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/wake Ask for a sleeping free server to be started
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/websocket Return panel WS URL + the caller's bearer token for WS query auth
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/world-optimization What unused-chunk cleanup has done to this world, and when
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/world-optimization Queue an unused-chunk trim now, once per minintervalhours

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}

Name In Type Required
uuid path string yes
org_slug path string yes
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 backup

GET /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.

Name In Type Required
uuid path string yes
org_slug path string yes
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 does

PUT /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.

Name In Type Required
uuid path string yes
org_slug path string yes

application/json (required)

Field Type Required
enabled boolean yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/command

Name In Type Required
uuid path string yes
org_slug path string yes
command query string or null no

application/json

Field Type Required
command string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /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.

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.
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 on

POST /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.

Name In Type Required
uuid path string yes
org_slug path string yes
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 tab

GET /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.

Name In Type Required
uuid path string yes
org_slug path string yes
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 tags

PATCH /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.

Name In Type Required
uuid path string yes
org_slug path string yes

application/json (required)

Field Type Required
hidden boolean or null no
tags array of string or null no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/permissions

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/power

Name In Type Required
uuid path string yes
org_slug path string yes

application/json (required)

Field Type Required
signal string yes
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 + verify

POST /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.

Name In Type Required
uuid path string yes
org_slug path string yes

application/json

Field Type Required
confirm_server_name string or null no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/resources

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/settings

Name In Type Required
uuid path string yes
org_slug path string yes

application/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
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 login

GET /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.

Name In Type Required
uuid path string yes
org_slug path string yes
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 server

GET /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.

Name In Type Required
uuid path string yes
org_slug path string yes
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 each

GET /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.

Name In Type Required
uuid path string yes
org_slug path string yes
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 variables

PATCH /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.

Name In Type Required
uuid path string yes
org_slug path string yes

application/json (required)

Field Type Required
variables Variables no
remove_variables array of string no
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 online

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/status-ping

Ask the game itself who is online. Best-effort; never fails the request.

Name In Type Required
uuid path string yes
org_slug path string yes
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 server

PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/subdomain

Rename the gameproxy join-address subdomain for this server.

Name In Type Required
uuid path string yes
org_slug path string yes

application/json (required)

Field Type Required
subdomain string yes
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 started

POST /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.

Name In Type Required
uuid path string yes
org_slug path string yes

application/json

Field Type Required
turnstile_token string or null no
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 auth

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/websocket

Return panel WS URL + the caller's bearer token for WS query auth.

Name In Type Required
uuid path string yes
org_slug path string yes
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 when

GET /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".

Name In Type Required
uuid path string yes
org_slug path string yes
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 minintervalhours

POST /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.

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.