Listing your servers
/v1/dedicated does the same for dedicated servers, and /v1/services lists both kinds in one paged list. All three need services:read.
Each row already carries the last power state we polled, so a list never waits on a hypervisor. It answers just as fast for three servers as for three thousand.
Paging and filtering
Withoutlimit, you get every server. Pass limit (1 to 200) and the response gains a nextCursor. Send that back as cursor to get the next page. It’s null on the last page.
tag narrows the list to servers carrying that tag. /v1/services also takes type (cloud or dedicated), status, and q. q matches the label, hostname, primary IPv4 by prefix, service ID by prefix, and tag names.
One server
id is the service ID from the list. It’s the identifier for everything below.
Cloud VPS
State and network
services:read.
Metrics
timeframe is hour, day, week or month, and defaults to hour. Any other value falls back to hour rather than erroring. You get the current state plus a usage series for CPU, memory, disk and network. Requires services:stats.
The response also includes an estimated power draw and carbon figure. We work them out from vCPU load, datacenter PUE and the grid intensity of the country the node sits in. They’re a fair estimate for reporting, but they aren’t metered, and they aren’t what you’re billed on.
Power
services:power. action is one of:
If you want the machine off and its filesystem intact, use
shutdown, not stop.
The call starts an async job on the hypervisor. When it returns, the VM hasn’t necessarily finished booting.
The older
POST /v1/cloud/{id}/{vmid} still works for clients that already store a vmid. New code should use /power, which never needs the hypervisor’s internal number.403 to power and every other management action until the invoice is settled.
Credentials
services:rescue and only works for the account that owns the server. A team role isn’t enough. Every call is audited.
Treat the response like the secret it is. Don’t log it, and don’t put it in CI output.
Snapshots
snapshots:read and returns the snapshots newest first, plus your limit (how many a server may hold, usually 3). Taking, deleting and rolling back need snapshots:write.
A name starts with a letter and holds up to 40 letters, numbers, dashes and underscores.
{"action":"rollback"} body, not a bare POST. Rollback is the most destructive thing you can do to a running server, so it shouldn’t be something a mistyped request can trigger.
Taking, rolling back and deleting all answer 202 with a taskId. The job runs in the background, and a busy disk can take a while to freeze.
Reinstall
os is a template slug. Get the valid list from GET /v1/cloud/templates, which is public and needs no auth. Requires services:reinstall.
A successful call answers 202 with a taskId, the template os and its osName. You’ll get 409 if the server isn’t active or something else (another reinstall, a snapshot) is already running on it, and 503 if the VM hasn’t been built yet.
Dedicated servers
services:read.
GET /v1/dedicated/{id}/graphs?range=day returns IPMI sensor readings (day, week or month) and requires services:stats. traffic is always null, because there’s no switch-port monitoring behind our metal. We’d rather tell you that than draw a graph of zeros.
Power
services:power. action is start, stop, reboot or reset. reset is the physical reset line. Use it when the OS has stopped answering and reboot won’t take.
Rescue mode
DELETE /v1/dedicated/{id}/rescue boots back into the installed system. Both need services:rescue, and so does GET /v1/dedicated/{id}/credentials.
Reinstall
osId and hostname are both required. Requires services:reinstall. The same warning applies: the disks are wiped.
The list of valid OS IDs (GET /v1/dedicated/{id}/profiles) currently needs a browser session. Look the ID up once in the client area and store it in your config.
Bulk power
action is start, shutdown, stop, reboot or reset, and the response carries a result for each ID. Requires services:power.
Cancelling
/v1/dedicated/{id}/cancel and /v1/hosting/{id}/cancel work the same way. All three require services:cancel.
immediate is the field that matters:
false(the default) schedules cancellation for the end of your paid period. The server keeps running until then.trueterminates the server now. The service stops and the data is gone.
false on purpose. If you pass immediate from a variable, make sure you know what’s in it.
reason is optional and goes in our records. We do read it, so if something didn’t work for you, this is a good place to say so.
A worked example
Reboot every cloud server taggedweb:
services:read and services:power, and nothing else. That’s the whole argument for scopes.