---
title: "Create empty volume"
method: POST
path: "/volumes"
---

# Create empty volume

`POST /volumes`

Creates a new empty volume of the specified size.

## Request body

- CreateVolumeRequest
  - `id` string — Optional custom identifier (auto-generated if not provided)
  - `name` string, required — Volume name
  - `size_gb` integer, required — Size in gigabytes
  - `tags` Tags — User-defined key-value tags.

## Response `201`

Volume created

- Volume
  - `id` string, required — Unique identifier
  - `name` string, required — Volume name
  - `size_gb` integer, required — Size in gigabytes
  - `tags` Tags — User-defined key-value tags.
  - `attachments` VolumeAttachment[] — List of current attachments (empty if not attached)
    - `instance_id` string, required — ID of the instance this volume is attached to
    - `mount_path` string, required — Mount path in the guest
    - `readonly` boolean, required — Whether the attachment is read-only
  - `created_at` string, date-time, required — Creation timestamp (RFC3339)

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `409` — Conflict - volume with this ID already exists
- `500` — Internal server error

---

[API](https://skmtc.dev/kernel/apis/hypeman-api.md) · [All operations](https://skmtc.dev/kernel/apis/hypeman-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kernel/hypeman-api/revisions/b4642bb950dc/schema)
