Skip to content
Get started

Create volume

client.Volumes.New(ctx, body) (*Volume, error)
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
ParametersExpand Collapse
body VolumeNewParams
Name param.Field[string]

Volume name

SizeGB param.Field[int64]

Size in gigabytes

ID param.Field[string]optional

Optional custom identifier (auto-generated if not provided)

ReturnsExpand Collapse
type Volume struct{…}
ID string

Unique identifier

CreatedAt Time

Creation timestamp (RFC3339)

formatdate-time
Name string

Volume name

SizeGB int64

Size in gigabytes

Attachments []VolumeAttachmentoptional

List of current attachments (empty if not attached)

InstanceID string

ID of the instance this volume is attached to

MountPath string

Mount path in the guest

Readonly bool

Whether the attachment is read-only

Create volume
package main

import (
  "context"
  "fmt"

  "github.com/onkernel/hypeman-go"
  "github.com/onkernel/hypeman-go/option"
)

func main() {
  client := hypeman.NewClient(
    option.WithAPIKey("My API Key"),
  )
  volume, err := client.Volumes.New(context.TODO(), hypeman.VolumeNewParams{
    Name: "my-data-volume",
    SizeGB: 10,
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", volume.ID)
}
{
  "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
    }
  ]
}