Skip to main content

Quickstart

Goal: list the servers on your account in under two minutes.

1. Mint a Personal Access Token​

  1. Log in at https://vps-server.host/clientarea.php
  2. Open Developers → API Tokens in the sidebar (direct URL: https://vps-server.host/clientarea_api_tokens.php)
  3. Create a new token form:
    • Name: quickstart
    • Scopes: tick servers:read
    • IP allow-list: leave empty for now (tighten later)
    • Confirm your password: your client-area password
  4. Click Create token
  5. Copy the pat_live_… value shown in the yellow banner — you only see it once

Store it in your secrets manager immediately

We only store a hash. If you lose the secret, revoke the token and mint a new one.

2. List your servers​

In your terminal:

PAT='pat_live_…' # paste from step 1

curl -sS https://api.vps-server.host/v1/servers \
-H "Authorization: Bearer $PAT" | jq

Expected response:

{
"data": [
{
"id": "srv_42",
"name": "web-01",
"status": "running",
"backend": "contabo",
"plan": "vps-l",
"region": "eu-central",
"ipv4": "203.0.113.45",
"ipv6": "2001:db8::1",
"image": "ubuntu-24.04",
"created_at": "2026-04-10T08:00:00Z"
}
],
"links": { "next": null, "prev": null }
}

If you have no servers yet, data will be an empty array — the call still proves auth works.

3. Reboot a server (async)​

Add the servers:power scope to your PAT (or mint a new one with it), then:

SERVER_ID='srv_42'

curl -sS -X POST "https://api.vps-server.host/v1/servers/${SERVER_ID}:reboot" \
-H "Authorization: Bearer $PAT" \
-H "Idempotency-Key: $(uuidgen)"

Response is 202 Accepted with an Operation:

{
"id": "op_01HRZ5K3P9X2W6V8M1C4Y7B0A2",
"type": "server.reboot",
"status": "queued",
"target": { "type": "server", "id": "srv_42" },
"created_at": "2026-05-21T14:30:00Z"
}

Poll the operation to wait for completion:

OP='op_01HRZ5K3P9X2W6V8M1C4Y7B0A2'

curl -sS "https://api.vps-server.host/v1/operations/${OP}" \
-H "Authorization: Bearer $PAT" | jq .status

Or subscribe to the operation.succeeded webhook and skip polling entirely.

What's next​