Aller au contenu
NimbusNexus

Virtual machines

A NimbusNexus virtual machine is a metered compute instance — one process tree, one network interface, one root disk — billed by the second. You create one by picking a size and a region; everything else (block volumes, public IPs, snapshots) attaches to it as separate resources.

When to use a VM

VMs are the right primitive when you need:

  • Persistent state on disk between requests (a database, a build cache, a long-running queue worker).
  • Full OS control — installing packages, tuning kernel parameters, running anything that needs system access.
  • A specific instance shape — high-memory for an analytics workload, GPU for inference, compute-optimized for a CPU-bound service.

If your workload is stateless and request-shaped, container platforms (Kubernetes managed services, serverless runtimes) are usually a better fit. The line is roughly: if you'd be sad if a process restart erased local files, you want a VM.

Sizes, families, naming

Sizes use the shape <family>-<vCPU>-<RAM_GB>. Three families today:

  • gp-* — general purpose. Balanced CPU + RAM. Most workloads start here.
  • co-* — compute optimized. 2× the CPU-per-dollar of gp, half the RAM-per-dollar.
  • mo-* — memory optimized. Inverse trade. Right for in-memory caches, JVM heaps, analytics scratch.

So gp-4-16 is 4 vCPU, 16 GB RAM, general-purpose. co-16-32 is 16 vCPU, 32 GB RAM, compute-optimized. The full list lives at GET /v1/vms/sizes (not yet auto-rendered in this reference — coming soon).

Lifecycle

A VM moves through these states:

  • provisioning — the disk is being prepared and the hypervisor is allocating the instance. ~5–30 seconds on a cached image, up to 90 seconds on a first-time image pull.
  • running — boot complete, instance accepting traffic. This is the steady state you spend most of the time in.
  • stopping → stopped — graceful shutdown. The VM persists; you stop being billed for compute but keep being billed for storage.
  • terminated — the VM has been destroyed. Attached block volumes either also got destroyed (the default), or were detached and remain available (if preserve_volumes: true was set on delete).

State transitions are returned in the state field on every GET. Long-running transitions report progress under an embedded operation object — see the Conventions page for the operation-polling pattern that's used here and across the rest of the API.

Naming and stable ids

Two identifiers live on every VM:

  • id — opaque, prefix vm_, 26-character base32 suffix. Stable for the life of the VM. Use this in URLs, foreign keys, audit logs.
  • name — human-readable, 1–63 characters, alphanumeric + dashes, unique within a project. Mutable via PUT /v1/vms/{id}. Don't put this in any code path you don't want to rewrite the day someone renames the VM.

The endpoint reference below uses {id} in path templates; the value you pass is the opaque id.

Reference

GET/api/v1/instance/

List Instances

List virtual machine instances visible to the caller (own project, or all projects when called as admin).

Parameters

NameInRequiredDescription
admin_domainqueryno—
admin_projectqueryno—
projectqueryno—

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/

POST/api/v1/instance/

Create Instance

Provision a new virtual machine instance with the requested flavor, image, networks and security groups.

Request body

JSON body required.

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/

POST/api/v1/instance/action

Instances Action

Execute a power-state or lifecycle action on one or more instances (start, stop, reboot, pause, suspend, etc.).

Request body

JSON body required.

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/action

GET/api/v1/instance/artifacts

Instance Create Artifacts

Return reference data needed to provision a new instance (available images, networks, security groups, key pairs).

Parameters

NameInRequiredDescription
admin_domainqueryno—
admin_projectqueryno—
projectqueryno—
product_type_namequeryno—

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/artifacts

GET/api/v1/instance/server-groups

List Instance Groups

List server groups (affinity / anti-affinity policies) for VM placement.

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/server-groups

POST/api/v1/instance/server-groups

Create Instance Group

Create a new server group with the chosen affinity / anti-affinity policy.

Request body

JSON body required.

Responses

  • 201Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/server-groups

DELETE/api/v1/instance/server-groups

Delete Instance Groups

Delete one or more server groups by id.

Request body

JSON body required.

Responses

  • 204Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/server-groups

GET/api/v1/instance/{instance_id}

Instance Get

Get the full details of a single virtual machine instance.

Parameters

NameInRequiredDescription
instance_idpathyes—
admin_domainqueryno—
admin_projectqueryno—
projectqueryno—

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/{instance_id}

PATCH/api/v1/instance/{instance_id}

Instance Update

Update mutable properties of an existing instance (e.g. name, metadata).

Parameters

NameInRequiredDescription
instance_idpathyes—

Request body

JSON body required.

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/{instance_id}

POST/api/v1/instance/{instance_id}/confirm_resize

Confirm Instance Resize

Confirm a pending resize, finalising the move to the new flavor and releasing the old one.

Parameters

NameInRequiredDescription
instance_idpathyes—
admin_domainqueryno—
admin_projectqueryno—
projectqueryno—

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/{instance_id}/confirm_resize

GET/api/v1/instance/{instance_id}/console

Console

Open an interactive console session (VNC/serial) for the given instance.

Parameters

NameInRequiredDescription
instance_idpathyes—

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/{instance_id}/console

POST/api/v1/instance/{instance_id}/resize

Resize Instance

Begin resizing an instance to a different flavor; must be confirmed or reverted before the resize is finalized.

Parameters

NameInRequiredDescription
instance_idpathyes—

Request body

JSON body required.

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/{instance_id}/resize

POST/api/v1/instance/{instance_id}/revert_resize

Revert Instance Resize

Revert a pending resize, returning the instance to its previous flavor.

Parameters

NameInRequiredDescription
instance_idpathyes—
admin_domainqueryno—
admin_projectqueryno—
projectqueryno—

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/instance/{instance_id}/revert_resize

Need to make a real call? Try these endpoints in the live Swagger UI →