Skip to content
Docs

Create VM

client.Compute.VMs.New(ctx, body) (*Operation, error)
POST/v1/compute/vms

Create a VM

ParametersExpand Collapse
body VMNewParams
BootVolume param.Field[VMNewParamsBootVolume]

Boot volume for the VM.

Size int64

Size of the Volume in GB.

Type of the Volume.

One of the following:
const VolumeTypeNvme VolumeType = "nvme"
const VolumeTypeABS VolumeType = "abs"
Tags []stringOptional

Tags to attach to the Volume.

InstanceType param.Field[string]

Instance type name.

Name param.Field[string]

Name of the VM.

OSImageName param.Field[string]

Name of the OS Image to use for the VM.

ProjectID param.Field[string]

Project ID to create the VM in.

PublicIPEnabled param.Field[bool]

Whether to enable public IP for the VM.

Region param.Field[RegionName]

Region the resource is in.

SSHKey param.Field[SSHKeyRequest]

Public SSH key configuration for the VM.

SubnetID param.Field[string]

ID of the subnet to use for the VM.

DataVolumes param.Field[[]VMNewParamsDataVolume]Optional

Data volumes for the VM.

Name string

Name of the Volume.

Size int64

Size of the Volume in GB.

Type of the Volume.

One of the following:
const VolumeTypeNvme VolumeType = "nvme"
const VolumeTypeABS VolumeType = "abs"
Tags []stringOptional

Tags to attach to the Volume.

Tags param.Field[[]string]Optional

Tags to attach to the VM.

ReturnsExpand Collapse
type Operation struct{…}

Operation details.

ID string

Unique identifier for the Operation.

CreatedAt Time

When the Operation was created.

formatdate-time

Structured details about what an operation is changing.

Map of changed field names to their from/to diffs. Keys depend on the parent operation’s kind+type.

From OperationFieldDiffFromUnion

Previous value.

One of the following:
string
float64
bool
type OperationFieldDiffFromArray []string
To OperationFieldDiffToUnion

New value.

One of the following:
string
float64
bool
type OperationFieldDiffToArray []string

Kind of Operation.

One of the following:
const OperationKindVM OperationKind = "vm"
const OperationKindVolume OperationKind = "volume"
const OperationKindVPC OperationKind = "vpc"
const OperationKindFirewallRule OperationKind = "firewall_rule"
const OperationKindNKSCluster OperationKind = "nks_cluster"
const OperationKindNKSNodePool OperationKind = "nks_node_pool"
ProjectID string

Project ID the Operation belongs to.

ResourceID string

ID of the resource that the Operation is acting on.

Status of the Operation.

One of the following:
const OperationStatusPending OperationStatus = "pending"
const OperationStatusRunning OperationStatus = "running"
const OperationStatusDone OperationStatus = "done"
const OperationStatusFailed OperationStatus = "failed"
const OperationStatusUnknown OperationStatus = "unknown"

Type of Operation.

One of the following:
const OperationTypeCreate OperationType = "create"
const OperationTypeUpdate OperationType = "update"
const OperationTypeDelete OperationType = "delete"
const OperationTypeRestart OperationType = "restart"
UpdatedAt Time

When the Operation was updated.

formatdate-time

Create VM

package main

import (
  "context"
  "fmt"

  "github.com/nirvana-labs/nirvana-go"
  "github.com/nirvana-labs/nirvana-go/compute"
  "github.com/nirvana-labs/nirvana-go/option"
  "github.com/nirvana-labs/nirvana-go/shared"
)

func main() {
  client := nirvana.NewClient(
    option.WithAPIKey("My API Key"),
  )
  operation, err := client.Compute.VMs.New(context.TODO(), compute.VMNewParams{
    BootVolume: compute.VMNewParamsBootVolume{
      Size: 100,
      Type: compute.VolumeTypeABS,
    },
    InstanceType: "n1-standard-8",
    Name: "my-vm",
    OSImageName: "ubuntu-noble-2025-10-01",
    ProjectID: "123e4567-e89b-12d3-a456-426614174000",
    PublicIPEnabled: true,
    Region: shared.RegionNameUsSva2,
    SSHKey: compute.SSHKeyRequestParam{
      PublicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2",
    },
    SubnetID: "123e4567-e89b-12d3-a456-426614174000",
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", operation.ID)
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "details": {
    "changes": {
      "foo": {
        "from": "string",
        "to": "string"
      }
    }
  },
  "kind": "vm",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "resource_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "pending",
  "type": "create",
  "updated_at": "2025-01-01T00:00:00Z"
}
Returns Examples
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "details": {
    "changes": {
      "foo": {
        "from": "string",
        "to": "string"
      }
    }
  },
  "kind": "vm",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "resource_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "pending",
  "type": "create",
  "updated_at": "2025-01-01T00:00:00Z"
}