Skip to content

VPS API ​

Virtual Private Servers

Endpoints ​

MethodPathDescription
GET/v1/vpsList VPS
POST/v1/vpsCreate VPS
GET/v1/vps/plans/List plans
GET/v1/vps/os-templates/List OS templates
GET/v1/vps/{vps_id}Get VPS
GET/v1/vps/{vps_id}/statusGet status
POST/v1/vps/{vps_id}/startStart VPS
POST/v1/vps/{vps_id}/stopStop VPS
POST/v1/vps/{vps_id}/rebootReboot VPS

GET /v1/vps ​

List VPS

Get all VPS instances with hostname, IP addresses, power state, and resource allocation.

Response:

FieldTypeDescription
totalinteger
vps_instancesarray

Example:

bash
curl https://api.wayscloud.services/v1/vps \
  -H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"

Response:

json
{
  "total": 1,
  "vps_instances": [
    {
      "id": "b5c6d7e8-f9a0-1234-5678-90abcdef1234",
      "provider_vm_id": "1042",
      "hostname": "web01.example.com",
      "display_name": "Production Web Server",
      "plan_code": "NO-Start-Linux-2cpu-4096mb-30gb",
      "plan_name": "Start Linux 2 vCPU / 4 GB",
      "region": "NO",
      "os_template": "ubuntu-22.04",
      "vcpu": 2,
      "ram_mb": 4096,
      "disk_gb": 30,
      "ipv4_address": "185.35.202.45",
      "ipv6_address": "2a01:4f9:c010:1234::1",
      "status": "active",
      "power_state": "on",
      "monthly_price": 199.0,
      "currency": "NOK",
      "tags": [
        "web",
        "prod"
      ],
      "labels": {
        "env": "prod"
      },
      "disk_format": "qcow2",
      "snapshot_supported": true,
      "created_at": "2024-02-15T14:30:00Z",
      "provisioned_at": "2024-02-15T14:32:10Z",
      "metrics": null
    }
  ]
}

POST /v1/vps ​

Create VPS

Provision a new VPS. Takes 1-3 minutes. Include SSH keys for passwordless access.

Request Body:

FieldTypeDescription
hostnamestringRequired. Server hostname (FQDN recommended)
plan_codestringRequired. VPS plan code (from GET /v1/vps/plans/)
regionstringRequired. Location as an ISO 3166-1 country code, any letter case: no for Norway, or se, de, nl and other VPS locations. oslo, norway and no-oslo-1 are also accepted. Responses return the code in upper case (NO).
os_templatestringRequired. Operating system template (name from GET /v1/vps/os-templates/)
display_namestringUser-friendly name for dashboard display
ssh_keysarraySSH public keys for server access (recommended)
tagsarrayTags for grouping: at most 20, lowercase letters, digits and hyphens, up to 50 characters each
labelsobjectKey-value labels: at most 20, keys up to 50 and values up to 200 characters

Response:

FieldTypeDescription
idstring
provider_vm_idstringIdentifier of the virtual machine on its host platform; empty until provisioned
hostnamestring
display_namestring
plan_codestring
plan_namestring
regionstringCountry code of the location, upper case (NO). Requests accept any letter case.
os_templatestring
vcpuinteger
ram_mbinteger
disk_gbinteger
ipv4_addressstring
ipv6_addressstring
statusstringLifecycle state, for example provisioning, active, stopped or error
power_statestringon or off (unknown before the first status check)
monthly_pricenumber
currencystring
tagsarrayUser-defined tags for grouping
labelsobjectKey-value labels
disk_formatstringDisk image format: qcow2 or raw
snapshot_supportedbooleanWhether snapshots and backups are available for this VPS
created_atstring
provisioned_atstring
metricsobjectLive usage, filled in by GET /v1/vps/{vps_id} for an active VPS when the host answers; null otherwise

Example:

bash
curl -X POST https://api.wayscloud.services/v1/vps \
  -H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "hostname": "web01.example.com",
  "plan_code": "NO-Start-Linux-2cpu-4096mb-30gb",
  "region": "no",
  "os_template": "ubuntu-22.04",
  "display_name": "Production Web Server",
  "ssh_keys": [
    "ssh-ed25519 AAAA... user@laptop"
  ],
  "tags": [
    "web",
    "prod"
  ],
  "labels": {
    "env": "prod"
  }
}'

Response:

json
{
  "id": "b5c6d7e8-f9a0-1234-5678-90abcdef1234",
  "provider_vm_id": "1042",
  "hostname": "web01.example.com",
  "display_name": "Production Web Server",
  "plan_code": "NO-Start-Linux-2cpu-4096mb-30gb",
  "plan_name": "Start Linux 2 vCPU / 4 GB",
  "region": "NO",
  "os_template": "ubuntu-22.04",
  "vcpu": 2,
  "ram_mb": 4096,
  "disk_gb": 30,
  "ipv4_address": "185.35.202.45",
  "ipv6_address": "2a01:4f9:c010:1234::1",
  "status": "active",
  "power_state": "on",
  "monthly_price": 199.0,
  "currency": "NOK",
  "tags": [
    "web",
    "prod"
  ],
  "labels": {
    "env": "prod"
  },
  "disk_format": "qcow2",
  "snapshot_supported": true,
  "created_at": "2024-02-15T14:30:00Z",
  "provisioned_at": "2024-02-15T14:32:10Z",
  "metrics": null
}

GET /v1/vps/plans/ ​

List plans

Get available VPS configurations with vCPU, RAM, storage, bandwidth, and pricing.

Response example:

json
[
  {
    "sku": "VPS-LITE-LIN-SSD",
    "plan_code": "NO-Lite-Linux-1cpu-1024mb-20gb",
    "name": "Lite Linux",
    "provider": "wayscloud",
    "cpu_cores": 1,
    "ram_mb": 1024,
    "disk_gb": 20,
    "bandwidth_tb": null,
    "monthly_price": 99.0,
    "currency": "NOK",
    "is_active": true
  }
]

Example:

bash
curl https://api.wayscloud.services/v1/vps/plans/ \
  -H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"

Response:

json
[
  {
    "sku": "VPS-LITE-LIN-SSD",
    "plan_code": "NO-Lite-Linux-1cpu-1024mb-20gb",
    "name": "Lite Linux",
    "provider": "wayscloud",
    "cpu_cores": 1,
    "ram_mb": 1024,
    "disk_gb": 20,
    "bandwidth_tb": null,
    "monthly_price": 99.0,
    "currency": "NOK",
    "is_active": true
  }
]

GET /v1/vps/os-templates/ ​

List OS templates

Get available operating systems for VPS provisioning: Ubuntu, Debian, Rocky, AlmaLinux, and Windows Server.

Response example:

json
[
  {
    "name": "ubuntu-24.04",
    "family": "Ubuntu",
    "platform": "linux",
    "is_windows": false,
    "min_ram_mb": 0,
    "min_disk_gb": 0
  },
  {
    "name": "debian-12",
    "family": "Debian",
    "platform": "linux",
    "is_windows": false,
    "min_ram_mb": 0,
    "min_disk_gb": 0
  },
  {
    "name": "windows-server-2025",
    "family": "Windows",
    "platform": "windows",
    "is_windows": true,
    "min_ram_mb": 4096,
    "min_disk_gb": 64
  }
]

Example:

bash
curl https://api.wayscloud.services/v1/vps/os-templates/ \
  -H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"

Response:

json
[
  {
    "name": "ubuntu-24.04",
    "family": "Ubuntu",
    "platform": "linux",
    "is_windows": false,
    "min_ram_mb": 0,
    "min_disk_gb": 0
  },
  {
    "name": "debian-12",
    "family": "Debian",
    "platform": "linux",
    "is_windows": false,
    "min_ram_mb": 0,
    "min_disk_gb": 0
  },
  {
    "name": "windows-server-2025",
    "family": "Windows",
    "platform": "windows",
    "is_windows": true,
    "min_ram_mb": 4096,
    "min_disk_gb": 64
  }
]

GET /v1/vps/ ​

Get VPS

Get complete VPS details: hostname, IP addresses, OS, plan, and configuration.

Response:

FieldTypeDescription
idstring
provider_vm_idstringIdentifier of the virtual machine on its host platform; empty until provisioned
hostnamestring
display_namestring
plan_codestring
plan_namestring
regionstringCountry code of the location, upper case (NO). Requests accept any letter case.
os_templatestring
vcpuinteger
ram_mbinteger
disk_gbinteger
ipv4_addressstring
ipv6_addressstring
statusstringLifecycle state, for example provisioning, active, stopped or error
power_statestringon or off (unknown before the first status check)
monthly_pricenumber
currencystring
tagsarrayUser-defined tags for grouping
labelsobjectKey-value labels
disk_formatstringDisk image format: qcow2 or raw
snapshot_supportedbooleanWhether snapshots and backups are available for this VPS
created_atstring
provisioned_atstring
metricsobjectLive usage, filled in by GET /v1/vps/{vps_id} for an active VPS when the host answers; null otherwise

Example:

bash
curl https://api.wayscloud.services/v1/vps/{vps_id} \
  -H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"

Response:

json
{
  "id": "b5c6d7e8-f9a0-1234-5678-90abcdef1234",
  "provider_vm_id": "1042",
  "hostname": "web01.example.com",
  "display_name": "Production Web Server",
  "plan_code": "NO-Start-Linux-2cpu-4096mb-30gb",
  "plan_name": "Start Linux 2 vCPU / 4 GB",
  "region": "NO",
  "os_template": "ubuntu-22.04",
  "vcpu": 2,
  "ram_mb": 4096,
  "disk_gb": 30,
  "ipv4_address": "185.35.202.45",
  "ipv6_address": "2a01:4f9:c010:1234::1",
  "status": "active",
  "power_state": "on",
  "monthly_price": 199.0,
  "currency": "NOK",
  "tags": [
    "web",
    "prod"
  ],
  "labels": {
    "env": "prod"
  },
  "disk_format": "qcow2",
  "snapshot_supported": true,
  "created_at": "2024-02-15T14:30:00Z",
  "provisioned_at": "2024-02-15T14:32:10Z",
  "metrics": null
}

GET /v1/vps/{vps_id}/status ​

Get status

Check power state (running/stopped), uptime, and health indicators.

Response:

FieldTypeDescription
vps_idstring
statusstring
power_statestringon or off
uptimestring
cpu_usagestring
ram_usagestring
disk_usagestring
traffic_instringNot reported yet: always null
traffic_outstringNot reported yet: always null
traffic_totalstringNot reported yet: always null

Example:

bash
curl https://api.wayscloud.services/v1/vps/{vps_id}/status \
  -H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"

Response:

json
{
  "vps_id": "b5c6d7e8-f9a0-1234-5678-90abcdef1234",
  "status": "running",
  "power_state": "on",
  "uptime": "2592000s",
  "cpu_usage": "12.5%",
  "ram_usage": "2796/4096 MB",
  "disk_usage": "34/80 GB",
  "traffic_in": null,
  "traffic_out": null,
  "traffic_total": null
}

POST /v1/vps/{vps_id}/start ​

Start VPS

Power on a stopped VPS. Accessible within 30-60 seconds.

Response:

FieldTypeDescription
okboolean
actionstring
vps_idstring
messagestring

Example:

bash
curl -X POST https://api.wayscloud.services/v1/vps/{vps_id}/start \
  -H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"

Response:

json
{
  "ok": true,
  "action": "start",
  "vps_id": "b5c6d7e8-f9a0-1234-5678-90abcdef1234",
  "message": "VPS started successfully"
}

POST /v1/vps/{vps_id}/stop ​

Stop VPS

Gracefully shut down a running VPS. Stopped VPS still incurs storage costs.

Response:

FieldTypeDescription
okboolean
actionstring
vps_idstring
messagestring

Example:

bash
curl -X POST https://api.wayscloud.services/v1/vps/{vps_id}/stop \
  -H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"

Response:

json
{
  "ok": true,
  "action": "start",
  "vps_id": "b5c6d7e8-f9a0-1234-5678-90abcdef1234",
  "message": "VPS started successfully"
}

POST /v1/vps/{vps_id}/reboot ​

Reboot VPS

Graceful reboot. Back online within 1-2 minutes.

Response:

FieldTypeDescription
okboolean
actionstring
vps_idstring
messagestring

Example:

bash
curl -X POST https://api.wayscloud.services/v1/vps/{vps_id}/reboot \
  -H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"

Response:

json
{
  "ok": true,
  "action": "start",
  "vps_id": "b5c6d7e8-f9a0-1234-5678-90abcdef1234",
  "message": "VPS started successfully"
}