API Documentation

Create VPS

Create a new VPS instance. This endpoint creates an order, charges your saved payment method, and provisions the server. Use the Get Order Status endpoint to track progress.

Request

POST /api/v1/vps/create

Required scope: vps:provision

Headers

Header Required Value
Authorization Yes Bearer YOUR_API_KEY
Content-Type Yes application/json

Request Body

Parameter Required Description
hostsystem Yes Host system identifier (e.g. de_epyc, de_ryzen)
os Yes Operating system identifier (e.g. ubuntu-24.04)
cores Yes Number of CPU cores (>= 1)
mem Yes RAM in GB (e.g. 8)
disk Yes NVMe disk in GB (e.g. 20)
ips No Number of IPv4 addresses (default: 1)
backupSlots No Number of backup slots (default: 2)
networkSpeed No Network speed in Mbit/s (default: 1000)
storage No Additional HDD storage in GB
name No Display name for the VPS

Response

{
  "data": {
    "orderId": "507f1f77bcf86cd799439011",
    "orderToken": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "hostsystem": "de_epyc",
    "os": "ubuntu-24.04",
    "cores": 4,
    "mem": 8,
    "disk": 80,
    "status": "completed",
    "paymentId": "tr_abc123"
  }
}

Response Fields

Field Type Description
orderId string Order ID for tracking
orderToken string Order token (UUID) for tracking
hostsystem string The host system used
os string The OS that will be installed
cores number CPU cores provisioned
mem number RAM in GB
disk number NVMe disk in GB
status string completed, payment_pending, or payment_failed
paymentId string Mollie payment ID

Status Values

Status Description
completed Payment succeeded, VPS is being provisioned
payment_pending Payment initiated (e.g. SEPA direct debit), awaiting confirmation
payment_failed Payment was declined or failed

Prerequisites

Before using this endpoint, ensure:

  1. Your account has completed at least one checkout via the web dashboard (to establish a payment mandate)
  2. You have a valid payment method on file
  3. Your account is not suspended

Use the VPS Pricing endpoint to check available host systems, operating systems, and component pricing before creating a VPS.

Error Responses

Status Code Description
400 MISSING_HOSTSYSTEM The hostsystem field is required
400 MISSING_OS The os field is required
400 INVALID_CORES The cores field must be >= 1
400 INVALID_MEM The mem field must be >= 1
400 INVALID_DISK The disk field must be >= 1
400 PRICING_UNAVAILABLE Could not calculate price for VPS order
403 account_suspended Account is suspended
403 no_valid_mandate No valid payment method on file
403 no_billing_address Billing address is missing
403 INSUFFICIENT_SCOPE API key lacks vps:provision scope
409 DUPLICATE_ORDER An identical order is already pending

Example

# Create a basic VPS
curl -X POST https://hosting.site.quest/api/v1/vps/create \
  -H "Authorization: Bearer sq_live_a94ecfca096d..." \
  -H "Content-Type: application/json" \
  -d '{
    "hostsystem": "de_epyc",
    "os": "ubuntu-24.04",
    "cores": 4,
    "mem": 8,
    "disk": 80
  }'

# Create a VPS with all options
curl -X POST https://hosting.site.quest/api/v1/vps/create \
  -H "Authorization: Bearer sq_live_a94ecfca096d..." \
  -H "Content-Type: application/json" \
  -d '{
    "hostsystem": "de_epyc",
    "os": "ubuntu-24.04",
    "cores": 8,
    "mem": 16,
    "disk": 160,
    "ips": 2,
    "backupSlots": 4,
    "networkSpeed": 2000,
    "name": "Production Server"
  }'

MCP

This action is also available via the create_vm MCP tool.