What you can automate

Provisioning

Create a VPS in any of our eight locations with the OS and plan you need, straight from a script or CI pipeline.

Lifecycle

Start, stop and restart servers, reinstall the OS, reset passwords, change hostname, upgrade the plan, renew or delete.

Webhooks

Subscribe to events and let the platform call your endpoint when something happens, instead of polling.

Authentication

Every request carries an API key in the Authorization header. Keys are bound to your account and, for extra safety, to an allowlist of source IP addresses: even a leaked key is useless from a foreign network.

Authorization: Bearer YOUR_API_KEY

To get a key, open a ticket from your client area with the list of IPs you will call the API from. We issue keys the same day.

Quick start

The base URL is https://my.serva.one/api/v1/ext. Check that your key works:

curl -s https://my.serva.one/api/v1/ext/whoami \
  -H "Authorization: Bearer YOUR_API_KEY"

Create a server:

curl -s -X POST https://my.serva.one/api/v1/ext/vps \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "plan": "Micro",
    "os": "ubuntu-24.04",
    "datacenter": "Netherlands",
    "hostname": "worker-01"
  }'

The response returns the new server id; its IP and root password appear in the object as soon as provisioning finishes, usually within a minute.

Endpoints

MethodPathPurpose
GET/whoamiKey check, account info
GET/plansAvailable plans and prices
GET/osOperating system images
GET/datacentersLocations open for ordering
GET/vpsList your servers, filter by IP, paginated
GET/vps/{id}One server in detail
POST/vpsCreate a server
POST/vps/{id}/power/{action}start, stop or restart
POST/vps/{id}/reinstallReinstall the OS
POST/vps/{id}/reset-passwordNew root password
POST/vps/{id}/hostnameChange hostname
POST/vps/{id}/change-planMove to a bigger plan
POST/vps/{id}/renewRenew the service
POST/vps/{id}/consoleOne-time console link
DELETE/vps/{id}Delete the server
GET/webhooksList webhook subscriptions
POST/webhooksCreate a subscription
POST/webhooks/{id}/testSend a test event
DELETE/webhooks/{id}Remove a subscription

Errors

The API speaks plain HTTP: 2xx on success, 400 for an invalid request body, 401 for a missing or wrong key, 403 for a call from an IP outside your allowlist, 404 for objects that do not exist or belong to someone else. Error bodies are JSON with a human-readable detail field.

Destructive calls are deliberately strict: deletion requires an explicit confirmation field in the body, and power actions are validated against the current server state. Your automation cannot wipe a server by accident with a typo.