Skip to content
OpenRelay is in early access, and the /v1 API is stable. New capabilities ship in the changelog.
API ReferenceComputeVMs

Get a VM by id

Returns one VM or pod of the caller's organization as a VmSummary: its status and reason, GPU model and count, endpoint URL, visibility and hourly price.

Required permission

Requires the compute.read permission. See Permissions for the roles and API key permissions that include it.

Command line

The orl CLI wraps this endpoint:

orl vms get <id>
GET
/v1/vms/{id}

Authorization

apiKey
headerAuthorizationBearer <token>

OpenRelay API key. Send it as Authorization: Bearer or_… (legacy vl_… keys still work).

Path Parameters

id*string

Response Body

The VM

application/json
  1. response
id*string
organizationId*string
name*string
status*string

deploying, running, stopped, failed, terminated, or interrupted; a row can also carry the queued status pending. interrupted means it served and is not serving now: it keeps its node, GPU and disk, and is not billed. A VM is interrupted while its node is offline and resumes when the node returns; a pod is interrupted for that and for losing its supervisor or its job on a live node, which the platform recovers by re-submitting it. After 7 days interrupted a VM is stopped (disk kept) and a pod is deleted.

statusReason?string

Cause of the current status. The machine-readable values are "node_lost" (the host went offline and is expected back, so the disk is preserved), "node_removed" (the host was decommissioned, so the disk is gone and a restart deploys fresh elsewhere), "vm_exited", "user_stopped", "user_terminated", "user_restarted", "spot_reclaimed_by_capacity_owner", "spot_preempted_for_reservation_tenant", "auto_stopped_insufficient_balance", "auto_stopped_account_suspended", "auto_stopped_organization_deleted", the prefix "container failed to start: " followed by the container runtime's own message, and on a running workload the prefix "node leaving at " followed by the RFC 3339 time its host is removed, when the workload ends with node_removed. Anything else is free text for a human to read.

gpuModelId?string
gpuCount?integer
endpointUrl?string
volumeGb?integer

pods only: size in GB of the pod's persistent /workspace volume.

public?boolean

true = open endpoint (no data-plane auth); false = require an org API key

createdAt?string
provisioningStage?string
resourceSize?string
tier?string
diskSizeGb?integer
gpuModelName?string
gpuManufacturer?string

GPU vendor from the catalog, the same value as GpuModel.manufacturer (NVIDIA, AMD); absent on a CPU-only row

pricePerHourCents?integer
serviceType?string

managed-service tag; empty for a plain VM

managedBy?string

platform owner of this row ("serving" = inference serving replica, read-only on customer surfaces); empty for a customer-launched VM

capabilityTier?string

compute-fabric capability tier (e.g. "pod"); empty for a plain VM

computeClass?string

compute-fabric purchase option (on_demand; pods created before the rename carry the legacy reserved or interruptible values); empty for a plain VM

imageUrl?string

tenant container image (pods)

Example Request
curl -X GET 'https://api.openrelay.inc/v1/vms/string'
Example Response
{  "id": "string",  "organizationId": "string",  "name": "string",  "status": "string",  "statusReason": "string",  "gpuModelId": "string",  "gpuCount": 0,  "endpointUrl": "string",  "volumeGb": 0,  "public": true,  "createdAt": "string",  "provisioningStage": "string",  "resourceSize": "string",  "tier": "string",  "diskSizeGb": 0,  "gpuModelName": "string",  "gpuManufacturer": "string",  "pricePerHourCents": 0,  "serviceType": "string",  "managedBy": "string",  "capabilityTier": "string",  "computeClass": "string",  "imageUrl": "string"}