VPS API
Virtual Private Servers
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /v1/vps | List VPS |
POST | /v1/vps | Create VPS |
GET | /v1/vps/plans/ | List plans |
GET | /v1/vps/os-templates | List OS templates |
GET | /v1/vps/regions | List regions |
GET | /v1/vps/{vps_id} | Get VPS |
GET | /v1/vps/{vps_id}/status | Get status |
POST | /v1/vps/{vps_id}/start | Start VPS |
POST | /v1/vps/{vps_id}/stop | Stop VPS |
POST | /v1/vps/{vps_id}/reboot | Reboot VPS |
GET /v1/vps
List VPS
Get all VPS instances with hostname, IP addresses, power state, and resource allocation.
Response:
| Field | Type | Description |
|---|---|---|
instances | array | |
total | integer |
Example:
curl https://api.wayscloud.services/v1/vps \
-H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"Response:
{
"instances": [
{
"id": "b5c6d7e8-f9a0-1234-5678-90abcdef1234",
"hostname": "web01.example.com",
"display_name": "Production Web Server",
"status": "running",
"ipv4_address": "185.35.202.45"
},
{
"id": "c6d7e8f9-a0b1-2345-6789-0abcdef12345",
"hostname": "db01.example.com",
"display_name": "Database Server",
"status": "running",
"ipv4_address": "185.35.202.46"
}
],
"total": 2
}POST /v1/vps
Create VPS
Provision a new VPS. Takes 1-3 minutes. Include SSH keys for passwordless access.
Request Body:
| Field | Type | Description |
|---|---|---|
hostname | string | Required. Server hostname (FQDN recommended) |
plan_code | string | Required. VPS plan code (from /v1/vps/plans) |
region | string | Required. Datacenter region (see GET /v1/vps/regions for available options) |
os_template | string | Required. Operating system template (from /v1/vps/os-templates) |
display_name | string | User-friendly name for dashboard display |
ssh_keys | array | SSH public keys for server access (recommended) |
Response:
| Field | Type | Description |
|---|---|---|
id | string | VPS instance ID |
hostname | string | |
status | string | Values: provisioning, running |
ipv4 | string | Primary IPv4 address |
ipv6 | string | Primary IPv6 address |
Example:
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": "vps-4gb-2cpu",
"region": "oslo",
"os_template": "ubuntu-22.04",
"display_name": "Production Web Server",
"ssh_keys": [
"ssh-ed25519 AAAA... user@laptop"
]
}'Response:
{
"id": "b5c6d7e8-f9a0-1234-5678-90abcdef1234",
"hostname": "web01.example.com",
"status": "provisioning",
"ipv4": "185.35.202.45",
"ipv6": "2a01:4f9:c010:1234::1"
}GET /v1/vps/plans/
List plans
Get available VPS configurations with vCPU, RAM, storage, bandwidth, and pricing.
Response example:
[
{
"plan_code": "vps-2gb-1cpu",
"name": "2 GB RAM, 1 vCPU",
"vcpus": 1,
"ram_gb": 2,
"storage_gb": 40,
"bandwidth_tb": 2.0,
"price": 99.0,
"currency": "NOK"
},
{
"plan_code": "vps-4gb-2cpu",
"name": "4 GB RAM, 2 vCPU",
"vcpus": 2,
"ram_gb": 4,
"storage_gb": 80,
"bandwidth_tb": 4.0,
"price": 199.0,
"currency": "NOK"
},
{
"plan_code": "vps-8gb-4cpu",
"name": "8 GB RAM, 4 vCPU",
"vcpus": 4,
"ram_gb": 8,
"storage_gb": 160,
"bandwidth_tb": 8.0,
"price": 399.0,
"currency": "NOK"
}
]Example:
curl https://api.wayscloud.services/v1/vps/plans/ \
-H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"Response:
[
{
"plan_code": "vps-2gb-1cpu",
"name": "2 GB RAM, 1 vCPU",
"vcpus": 1,
"ram_gb": 2,
"storage_gb": 40,
"bandwidth_tb": 2.0,
"price": 99.0,
"currency": "NOK"
},
{
"plan_code": "vps-4gb-2cpu",
"name": "4 GB RAM, 2 vCPU",
"vcpus": 2,
"ram_gb": 4,
"storage_gb": 80,
"bandwidth_tb": 4.0,
"price": 199.0,
"currency": "NOK"
},
{
"plan_code": "vps-8gb-4cpu",
"name": "8 GB RAM, 4 vCPU",
"vcpus": 4,
"ram_gb": 8,
"storage_gb": 160,
"bandwidth_tb": 8.0,
"price": 399.0,
"currency": "NOK"
}
]GET /v1/vps/os-templates
List OS templates
Get available operating systems for VPS provisioning: Ubuntu, Debian, Rocky, AlmaLinux, and Windows Server.
Response example:
[
{
"id": "ubuntu-24.04",
"name": "Ubuntu 24.04 LTS",
"family": "ubuntu",
"version": "24.04",
"is_windows": false
},
{
"id": "debian-12",
"name": "Debian 12",
"family": "debian",
"version": "12",
"is_windows": false
},
{
"id": "rocky-9",
"name": "Rocky Linux 9",
"family": "rocky",
"version": "9",
"is_windows": false
},
{
"id": "windows-server-2025",
"name": "Windows Server 2025",
"family": "windows",
"version": "2025",
"is_windows": true
}
]Example:
curl https://api.wayscloud.services/v1/vps/os-templates \
-H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"Response:
[
{
"id": "ubuntu-24.04",
"name": "Ubuntu 24.04 LTS",
"family": "ubuntu",
"version": "24.04",
"is_windows": false
},
{
"id": "debian-12",
"name": "Debian 12",
"family": "debian",
"version": "12",
"is_windows": false
},
{
"id": "rocky-9",
"name": "Rocky Linux 9",
"family": "rocky",
"version": "9",
"is_windows": false
},
{
"id": "windows-server-2025",
"name": "Windows Server 2025",
"family": "windows",
"version": "2025",
"is_windows": true
}
]GET /v1/vps/regions
List regions
Get available datacenter regions. Choose the region closest to your users for best latency.
Response example:
[
{
"id": "oslo",
"name": "Oslo, Norway",
"country": "NO",
"available": true
},
{
"id": "stockholm",
"name": "Stockholm, Sweden",
"country": "SE",
"available": true
},
{
"id": "frankfurt",
"name": "Frankfurt, Germany",
"country": "DE",
"available": true
}
]Example:
curl https://api.wayscloud.services/v1/vps/regions \
-H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"Response:
[
{
"id": "oslo",
"name": "Oslo, Norway",
"country": "NO",
"available": true
},
{
"id": "stockholm",
"name": "Stockholm, Sweden",
"country": "SE",
"available": true
},
{
"id": "frankfurt",
"name": "Frankfurt, Germany",
"country": "DE",
"available": true
}
]GET /v1/vps/
Get VPS
Get complete VPS details: hostname, IP addresses, OS, plan, and configuration.
Response:
| Field | Type | Description |
|---|---|---|
id | string | |
hostname | string | |
display_name | string | |
status | string | Values: running, stopped, starting, stopping, provisioning |
plan_code | string | |
region | string | |
os_template | string | |
ipv4_address | string | |
ipv6_address | string | |
vcpus | integer | |
memory_gb | integer | |
disk_gb | integer | |
created_at | string |
Example:
curl https://api.wayscloud.services/v1/vps/{vps_id} \
-H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"Response:
{
"id": "b5c6d7e8-f9a0-1234-5678-90abcdef1234",
"hostname": "web01.example.com",
"display_name": "Production Web Server",
"status": "running",
"plan_code": "vps-4gb-2cpu",
"region": "oslo",
"os_template": "ubuntu-22.04",
"ipv4_address": "185.35.202.45",
"ipv6_address": "2a01:4f9:c010:1234::1",
"vcpus": 2,
"memory_gb": 4,
"disk_gb": 80,
"created_at": "2024-02-15T14:30:00Z"
}GET /v1/vps/{vps_id}/status
Get status
Check power state (running/stopped), uptime, and health indicators.
Response:
| Field | Type | Description |
|---|---|---|
status | string | |
uptime_seconds | integer | |
cpu_usage_percent | number | |
memory_usage_percent | number | |
disk_usage_percent | number | |
network_in_bytes | integer | |
network_out_bytes | integer |
Example:
curl https://api.wayscloud.services/v1/vps/{vps_id}/status \
-H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"Response:
{
"status": "running",
"uptime_seconds": 2592000,
"cpu_usage_percent": 12.5,
"memory_usage_percent": 68.3,
"disk_usage_percent": 42.1,
"network_in_bytes": 157286400,
"network_out_bytes": 52428800
}POST /v1/vps/{vps_id}/start
Start VPS
Power on a stopped VPS. Accessible within 30-60 seconds.
Response:
| Field | Type | Description |
|---|---|---|
success | boolean | |
action | string | |
message | string |
Example:
curl -X POST https://api.wayscloud.services/v1/vps/{vps_id}/start \
-H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"Response:
{
"success": true,
"action": "start",
"message": "VPS is starting"
}POST /v1/vps/{vps_id}/stop
Stop VPS
Gracefully shut down a running VPS. Stopped VPS still incurs storage costs.
Response:
| Field | Type | Description |
|---|---|---|
success | boolean | |
action | string | |
message | string |
Example:
curl -X POST https://api.wayscloud.services/v1/vps/{vps_id}/stop \
-H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"Response:
{
"success": true,
"action": "start",
"message": "VPS is starting"
}POST /v1/vps/{vps_id}/reboot
Reboot VPS
Graceful reboot. Back online within 1-2 minutes.
Response:
| Field | Type | Description |
|---|---|---|
success | boolean | |
action | string | |
message | string |
Example:
curl -X POST https://api.wayscloud.services/v1/vps/{vps_id}/reboot \
-H "X-API-Key: wayscloud_vps_abc12_YOUR_SECRET"Response:
{
"success": true,
"action": "start",
"message": "VPS is starting"
}