Skip to content
Get started

Create volume

post/volumes

Creates a new volume. Supports two modes:

  • JSON body: Creates an empty volume of the specified size
  • Multipart form: Creates a volume pre-populated with content from a tar.gz archive
Body ParametersExpand Collapse
name: string

Volume name

size_gb: number

Size in gigabytes

id: optional string

Optional custom identifier (auto-generated if not provided)

ReturnsExpand Collapse
Volume = object { id, created_at, name, 2 more }
id: string

Unique identifier

created_at: string

Creation timestamp (RFC3339)

formatdate-time
name: string

Volume name

size_gb: number

Size in gigabytes

attachments: optional array of VolumeAttachment { instance_id, mount_path, readonly }

List of current attachments (empty if not attached)

instance_id: string

ID of the instance this volume is attached to

mount_path: string

Mount path in the guest

readonly: boolean

Whether the attachment is read-only

Create volume
curl http://localhost:8080/volumes \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $HYPEMAN_API_KEY" \
    -d '{
          "name": "my-data-volume",
          "size_gb": 10,
          "id": "vol-data-1"
        }'
{
  "id": "vol-data-1",
  "created_at": "2025-01-15T09:00:00Z",
  "name": "my-data-volume",
  "size_gb": 10,
  "attachments": [
    {
      "instance_id": "inst-abc123",
      "mount_path": "/mnt/data",
      "readonly": false
    }
  ]
}
Returns Examples
{
  "id": "vol-data-1",
  "created_at": "2025-01-15T09:00:00Z",
  "name": "my-data-volume",
  "size_gb": 10,
  "attachments": [
    {
      "instance_id": "inst-abc123",
      "mount_path": "/mnt/data",
      "readonly": false
    }
  ]
}