---
title: "Create VM"
method: POST
path: "/virtual_machines"
tags: ["Virtual machines"]
---

# Create VM

`POST /virtual_machines`

Creates a new Virtual Machine.

## Request body

- VirtualMachinePayload
  - `data` object
    - `type` 'virtual_machines'
    - `attributes` object
      - `name` string, required
      - `billing` 'hourly' | 'monthly' | 'yearly' — Billing cycle for the VM. The supported set is validated per-project (on_demand vs reserved). Defaults to the project's default billing when omitted.
      - `plan` string, nullable — The plan ID or Slug for the Virtual Machine
      - `ssh_keys` string[], nullable
      - `project` string, required
      - `operating_system` string, nullable — The operating system slug for the Virtual Machine. If not specified, defaults to ubuntu_24_04_x64_lts for CPU plans or ubuntu24_ml_in_a_box for GPU plans.
      - `user_data` union — A user data record reference (encoded id_hash, e.g. 'ud_xxx', or raw integer id) to apply as cloud-init configuration
        - integer
        - string
      - `tags` string[], nullable — Array of tag IDs to assign to the VM.
      - `site` string, nullable — Site/region slug where the VM is provisioned (e.g. DAL, SAO). Defaults to DAL when omitted.

## Response `201`

Created

---

[API](https://skmtc.net/latitude/apis/latitude-sh-api.md) · [All operations](https://skmtc.net/latitude/apis/latitude-sh-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/latitude/latitude-sh-api/versions/7302d79e39bb/schema)
