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. - Windows —
passwordis 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_typetodaily. Runs every day atbackup_time(defaults to8am). - Weekly — set
backup_typetoweeklywith abackup_date(e.g.Saturday). Runs atbackup_time.
Omit backup_type or set it to none to skip backups.
VPC Network
Each VM is attached to a VPC for private networking:
- Use existing — set
vpc_idto join an existing VPC. - Create new — set
vpc_nameandvpc_cidrto create a custom VPC. - 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
Authorizations
API key for authentication. Each key is bound to a specific account.
Headers
Project ID. Required for all mutating operations (create, delete, power actions, resize).
Body
VM display name
1 - 64"my-ubuntu-server"
OS template ID. Use GET /api/v1/public/templates to list available templates.
"5ac21891-32e6-41ce-8a93-b5d6ab708b0d"
Pricing plan ID that determines vCPU, RAM, storage, and bandwidth. Use GET /api/v1/public/pricing/vm to list available plans.
1 <= x <= 133
Data center region
us-east "us-east"
SSH public keys for VM access. Required for Linux VMs if no password is provided. Ignored for Windows VMs.
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.
12Additional block storage volume in GB (0–10,000). Attached as a separate disk to the VM.
x >= 0100
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.
ext4, xfs, btrfs "ext4"
Set daily for daily backups or weekly for weekly backups. Use none or omit for no backups.
none, daily, weekly "weekly"
Time of day to run backups (e.g. 8am). Defaults to 8am if not specified.
"8am"
Day of the week for weekly backups (e.g. Saturday). Required when backup_type is weekly, ignored for daily backups. Valid values: Monday–Sunday.
"Saturday"
Custom tags for the VM
Attach VM to an existing VPC by its ID. If omitted along with vpc_name, a VPC is auto-created.
Create a new VPC with this name. Must be used together with vpc_cidr.
1 - 64"my-custom-vpc"
CIDR block for the new VPC (e.g. 10.0.1.0/24). Must be used together with vpc_name.
^([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}$"10.0.1.0/24"
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.
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.