v12

latestOpenAPI 3.0.3raw.githubusercontent.com2026-06-1811583196.1 KB
Virtual Machines

Create VM

Create a new virtual machine with a chosen OS template, compute plan, and region. The VM is automatically assigned to a VPC for private networking.

Authentication

How your VM is accessed depends on the OS:

  • Linux — provide ssh_keys, password, or both. At least one is required.
  • Windowspassword is required. SSH keys are not supported.

Extra Storage

Set extra_storage (GB) to attach an additional block volume. On Linux, choose the filesystem with extra_storage_type (defaults to ext4). Windows volumes are automatically formatted as NTFS.

Backups

  • Daily — set backup_type to daily. Runs every day at backup_time (defaults to 8am).
  • Weekly — set backup_type to weekly with a backup_date (e.g. Saturday). Runs at backup_time.

Omit backup_type or set it to none to skip backups.

VPC Network

Each VM is attached to a VPC for private networking:

  1. Use existing — set vpc_id to join an existing VPC.
  2. Create new — set vpc_name and vpc_cidr to create a custom VPC.
  3. Auto-create (default) — leave all VPC fields empty. A VPC named vpc-{vm-name} is created automatically.

Billing Checks

Before provisioning, the API validates:

  • Account billing status (not banned, no failed payments)
  • Active payment method exists
post/api/v1/vms

Headers

X-Project-IDstring uuid required

Project ID. Required for all mutating operations (create, delete, power actions, resize).

Request body

namestring required

VM display name

template_idstring uuid required

OS template ID. Use GET /api/v1/public/templates to list available templates.

pricing_idinteger required

Pricing plan ID that determines vCPU, RAM, storage, and bandwidth. Use GET /api/v1/public/pricing/vm to list available plans.

region'us-east' required

Data center region

ssh_keysstring[]

SSH public keys for VM access. Required for Linux VMs if no password is provided. Ignored for Windows VMs.

passwordstring

Root password for the VM. Required for Windows VMs. For Linux VMs, required if no SSH keys are provided. Both SSH keys and password can be set on Linux. Must be at least 12 characters with: 2+ uppercase letters, 2+ digits, 1+ special character (@+-.,!). Only alphanumeric characters and @+-.,! are allowed.

extra_storageinteger

Additional block storage volume in GB (0–10,000). Attached as a separate disk to the VM.

extra_storage_type'ext4' | 'xfs' | 'btrfs'

Filesystem type for extra storage. Required for Linux VMs with extra storage (defaults to ext4 if omitted). For Windows VMs, storage is automatically formatted as NTFS — this field is ignored.

backup_type'none' | 'daily' | 'weekly'

Set daily for daily backups or weekly for weekly backups. Use none or omit for no backups.

backup_timestring

Time of day to run backups (e.g. 8am). Defaults to 8am if not specified.

backup_datestring

Day of the week for weekly backups (e.g. Saturday). Required when backup_type is weekly, ignored for daily backups. Valid values: Monday–Sunday.

tagsstring[]

Custom tags for the VM

vpc_idstring uuid

Attach VM to an existing VPC by its ID. If omitted along with vpc_name, a VPC is auto-created.

vpc_namestring

Create a new VPC with this name. Must be used together with vpc_cidr.

vpc_cidrstring

CIDR block for the new VPC (e.g. 10.0.1.0/24). Must be used together with vpc_name.

skip_public_ipboolean

When true, the VM is created without a public IPv4 address. It will only be reachable on its VPC private IP, so a VPC is required — pass vpc_id (existing) or vpc_name + vpc_cidr (new), or leave VPC fields empty to auto-create one. Combining skip_public_ip=true with skip_vpc=true is rejected because the VM would have no network at all.

skip_vpcboolean

When true, no VPC is created or attached. The VM will only have its public IP — no private networking. Cannot be combined with skip_public_ip=true.

Example request

{
  "name": "my-ubuntu-server",
  "template_id": "5ac21891-32e6-41ce-8a93-b5d6ab708b0d",
  "pricing_id": 3,
  "region": "us-east",
  "extra_storage": 100,
  "extra_storage_type": "ext4",
  "backup_type": "weekly",
  "backup_time": "8am",
  "backup_date": "Saturday",
  "vpc_name": "my-custom-vpc",
  "vpc_cidr": "10.0.1.0/24"
}

Response

VM created successfully

successboolean

Example response

{
  "data": {
    "name": "my-ubuntu-server",
    "cpu": 2,
    "ram": 4,
    "storage": 80,
    "total_storage": 80,
    "template_name": "Ubuntu",
    "template_version": "24.10x64",
    "price_per_hour": "0.027764",
    "pricing_id": 3,
    "billing_type": "payg",
    "backup_type": "weekly",
    "region": "us-east",
    "public_ipv4_address": "15.204.178.3",
    "private_ipv4_address": "10.10.0.96"
  }
}