Skip to content

Managing instances

Once an instance exists you can drive its full lifecycle through the API. All management endpoints operate on your instances only — an ID you do not own returns 404.

Read operations require vps:read; mutating operations require vps:write (implied by vps:create).

Terminal window
# All your instances
curl .../api/v1/instances -H "Authorization: Bearer $KEY"
# One instance
curl .../api/v1/instances/123 -H "Authorization: Bearer $KEY"
# Live status + usage
curl .../api/v1/instances/123/status -H "Authorization: Bearer $KEY"
# Historical metrics (range = 1h|6h|24h|7d|30d)
curl ".../api/v1/instances/123/metrics?range=24h" -H "Authorization: Bearer $KEY"
Terminal window
curl -X POST .../api/v1/instances/123/start -H "Authorization: Bearer $KEY"
curl -X POST .../api/v1/instances/123/stop -H "Authorization: Bearer $KEY"
curl -X POST .../api/v1/instances/123/restart -H "Authorization: Bearer $KEY"
# Reinstall the OS (os slugs come from GET /services/{plan_id}/os-options)
curl -X POST .../api/v1/instances/123/reinstall \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"os": "debian-12", "ssh_pubkey": "ssh-ed25519 AAAA..."}'
# Reset the root password (returned once, never stored)
curl -X POST .../api/v1/instances/123/reset-password -H "Authorization: Bearer $KEY"
Terminal window
# Change hostname
curl -X PATCH .../api/v1/instances/123/hostname \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"hostname": "db-01.example.com"}'
# Set reverse DNS (PTR)
curl -X POST .../api/v1/instances/123/rdns \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"ip": "203.0.113.10", "ptr": "db-01.example.com"}'

List plans you can move to (same data centre), then resize. Upgrades are prorated and charged to your wallet; downgrades take effect with no refund.

Terminal window
curl .../api/v1/instances/123/available-plans -H "Authorization: Bearer $KEY"
curl -X POST .../api/v1/instances/123/resize \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"service_id": 15}'
Terminal window
# Snapshots
curl .../api/v1/instances/123/snapshots -H "Authorization: Bearer $KEY"
curl -X POST .../api/v1/instances/123/snapshots \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"name": "before-upgrade"}'
curl -X POST .../api/v1/instances/123/snapshots/9/restore -H "Authorization: Bearer $KEY"
curl -X DELETE .../api/v1/instances/123/snapshots/9 -H "Authorization: Bearer $KEY"
# Backups
curl .../api/v1/instances/123/backups -H "Authorization: Bearer $KEY"
curl -X POST .../api/v1/instances/123/backups/4/restore -H "Authorization: Bearer $KEY"
Terminal window
# ISO library
curl .../api/v1/instances/123/isos -H "Authorization: Bearer $KEY"
curl -X POST .../api/v1/instances/123/iso \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"iso_id": 7}'
curl -X DELETE .../api/v1/instances/123/iso -H "Authorization: Bearer $KEY"
# Rescue mode (enter returns a one-time password)
curl -X POST .../api/v1/instances/123/rescue -H "Authorization: Bearer $KEY"
curl -X DELETE .../api/v1/instances/123/rescue -H "Authorization: Bearer $KEY"
Terminal window
curl ".../api/v1/instances/123/tasks?limit=20&offset=0" -H "Authorization: Bearer $KEY"

For exact request/response shapes of every endpoint, see the API Reference.