Skip to content

VPS

POST /v1/vps/{id}/backups · scope vps:write · reversible · asynchronous · idempotent

Queues a vzdump. With mode: snapshot (the default) the machine keeps running. The operation reflects that the task was queued, not that the archive is ready: the final size appears in GET /v1/vps/{id}/backups once the hypervisor finishes.

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432/backups \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: vps.backups.create

DELETE /v1/vps/{id}/backups/{backup_id} · scope vps:write · destructive — cannot be undone · idempotent

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432/backups/local:backup/vzdump-qemu-101-2026_07_27-03_00_01.vma.zst \
-X DELETE \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: vps.backups.delete

GET /v1/vps/{id}/backups · scope vps:read

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432/backups \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: vps.backups.list

POST /v1/vps/{id}/backups/{backup_id}/restore · scope vps:write · destructive — cannot be undone · asynchronous · idempotent

Destructive. Powers off the machine and overwrites the entire disk: everything written after that backup is lost. The backend verifies the backup belongs to this VPS before touching anything.

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432/backups/local:backup/vzdump-qemu-101-2026_07_27-03_00_01.vma.zst/restore \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: vps.backups.restore

GET /v1/vps/{id}/config · scope vps:read

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432/config \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: vps.config.get

POST /v1/vps/{id}/console · scope vps:console · reversible

Issues a single-use ticket. It grants full access to the operating system, bypassing the network and SSH, which is why it lives in its own scope (vps:console) instead of falling under vps:write. Do not log it: the SPICE file carries the password inside.

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432/console \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: vps.console.create

GET /v1/vps/{id} · scope vps:read

Queries the hypervisor. If it does not respond, the state fields come back null instead of failing: a hypervisor hiccup should not stop you from reading the rest of the resource or its capabilities.

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432 \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: vps.get

GET /v1/vps/{id}/ips · scope vps:read

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432/ips \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: vps.ips.list

GET /v1/vps · scope vps:read

Served from the database, without querying the hypervisor: state, cpu, memory, and disk come back null. Fetching them would cost one backend call per page item. For the live state of one instance, use GET /v1/vps/{id}.

Terminal window
curl https://api.truo.cloud/v1/vps \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: vps.list

Get CPU, memory, disk, and network usage series

Section titled “Get CPU, memory, disk, and network usage series”

GET /v1/vps/{id}/metrics · scope vps:read

The hypervisor’s RRD series. Resolution is set by timeframe and is not configurable: hour yields minutes, year yields weeks. cpu_percent is a percentage of the allocated total.

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432/metrics \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: vps.metrics.list

POST /v1/vps/{id}/power · scope vps:power · reversible · asynchronous · idempotent

Returns 202 as soon as the order is issued, not when the machine reaches the requested state. The operation resolves against the VM’s actual state, so it survives the backend taking longer than the HTTP timeout — a reboot is stop, wait, and start, which does not fit in one request. Wait on it with GET /v1/operations/{id}.

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432/power \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"action":"start"}'

operationId: vps.power

POST /v1/vps/{id}/reinstall · scope vps:write · destructive — cannot be undone · asynchronous · idempotent

Destructive and irreversible: it wipes the entire disk. Queues a job that runs the same state machine as a fresh provision (provision → wait for boot → health check), so the operation reports real progress and can take several minutes. The IP is preserved.

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432/reinstall \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"template":"<template>","root_password":"<root_password>"}'

operationId: vps.reinstall

List the operating systems available for reinstall

Section titled “List the operating systems available for reinstall”

GET /v1/vps/{id}/templates · scope vps:read

Depends on the machine type and the node it lives on, so it is requested per VPS rather than globally.

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432/templates \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: vps.templates.list

PATCH /v1/vps/{id} · scope vps:write · reversible · idempotent

Changes the operating system hostname. On LXC it takes effect immediately; on KVM it renames the VM and the operating system picks it up on the next reboot.

Terminal window
curl https://api.truo.cloud/v1/vps/svc_10432 \
-X PATCH \
-H "Authorization: Bearer $TRUO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"hostname":"<hostname>"}'

operationId: vps.update