create_vps
Deploy a new VPS by specifying region, cores, RAM, disk, OS, and SSH key. Requires confirmation before spending real money; returns VPS ID for tracking asynchronous provisioning.
Instructions
Deploy a new VPS. Spends real money — requires confirm=true, and should only be called after explicitly telling the user what will be provisioned and its estimated cost (see "Cost" below — get this right; it's a common mistake to quote only compute and forget the IP).
pop: a Point of Presence id from list_regions. cores/ram/disk: must match one of the allowed values the real API enforces — see get_quota or just try a value; a rejection names the allowed set.
Boot disk — exactly one of these two:
disk + operating_system: provisions a fresh disk (disk in GB) with a fresh OS install (operating_system an id from list_os_images). Both required together.
existing_boot_volume: boots from a standalone volume this account already owns instead (an id from list_volumes, kind "boot", not already attached to anything — check first). disk/operating_system are ignored if this is given; the volume already has its own OS. Costs nothing extra — the volume's own cost, if any, was already paid when it was purchased.
IP address — one of these two:
Omit existing_ip: a brand-new IP is automatically purchased and assigned as part of deployment. This is NOT free — it's the pop's own ip_price, billed the same as calling purchase_ip separately.
existing_ip: attach a standalone IP this account already owns instead (an id from list_ip_addresses, not already attached to anything — check first). No new IP purchased, no extra cost.
ssh_key: an id from list_ssh_keys, to install onto the new VPS.
Cost: call list_regions first and use the matching pop's own hourly rates. Total hourly cost = cores * cpu_price + ram * ram_price + (disk * disk_price, only if provisioning a fresh disk — 0 if existing_boot_volume is given) + (ip_price, only if existing_ip is NOT given — 0 if it is). Quote this full total, not just compute, before asking for confirmation.
Provisioning is asynchronous — this call returns immediately with the new VPS's id and is_building=true; poll get_vps for it to finish.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pop | Yes | ||
| ram | Yes | ||
| disk | No | ||
| cores | Yes | ||
| confirm | No | ||
| ssh_key | No | ||
| hostname | Yes | ||
| password | No | ||
| existing_ip | No | ||
| disable_pwd_auth | No | ||
| operating_system | No | ||
| existing_boot_volume | No |