VM billing and burn rate
One bundled hourly rate per VM, live burn, and runway to the auto-stop floor.
One bundled hourly rate
Every VM bills at a single hourly rate:
- GPU VMs: the per-GPU catalog price times the number of GPUs. A 3-GPU VM at $1.37/GPU-hr bills $4.11/hr.
- CPU VMs: a flat rate for the machine size.
CPU, RAM, and disk are included in that rate. Disk is not billed separately, and there is no per-GB storage charge.
CPU machine sizes
A CPU VM boots with exactly the vCPU and RAM its size carries:
resourceSize | vCPU | RAM |
|---|---|---|
small | 2 | 4 GB |
medium | 4 | 8 GB |
large | 8 | 16 GB |
xl | 16 | 32 GB |
GET /v1/pricing returns the same figures alongside each size's rate
(vcpu, ramMb), so read them from there rather than hardcoding this table.
Omitting resourceSize on create gives you small; an unrecognised value is
rejected with INVALID_RESOURCE_SIZE.
GPU VMs size their host CPU and RAM to the card instead: a GPU VM gets RAM equal to its total VRAM and one vCPU per 4 GB of it, so a single 80 GB card comes with 80 GB of RAM and 20 vCPU.
The rate is locked when the VM starts running. A catalog price change never re-rates a running VM; the locked rate is exactly what you are charged at settlement. A stopped VM has no locked rate, so quotes for it use the current catalog price.
Live burn: GET /v1/vms/{id}/burn
Returns the VM's rate, what the current session has cost so far, and your organization's overall burn:
curl https://api.openrelay.inc/v1/vms/{id}/burn \
-H "Authorization: Bearer or_your_api_key"{
"vmId": "4f6b9a1e-9f1c-4c58-a6a3-1f2f0f6f7a10",
"pricePerHourCents": 411,
"rateSource": "locked",
"rateBasis": "gpu",
"gpuCount": 3,
"perGpuCents": 137,
"diskBilled": false,
"accruedSessionCents": 1028,
"sessionStartedAt": "2026-07-18T09:12:00Z",
"orgAccruedCents": 2120,
"orgAvailableCents": 10430,
"orgBurnPerHourCents": 414,
"projectedRunwayHours": 25.07,
"autoStopFloorCents": 50
}rateSourceislockedwhile a usage session is open (the rate settlement will charge) andcatalogotherwise (the rate that would apply on the next start).accruedSessionCentsis the cost of the current session so far, computed with the same math as your monthly bill.orgBurnPerHourCentsis the sum of the locked rates of everything currently running in your organization.projectedRunwayHoursis how long your available balance lasts at the current burn, measured down to the auto-stop floor ($0.50 of available balance). When available balance drops below that floor and auto-recharge cannot top it up, running workloads are stopped automatically. It isnullwhen nothing is accruing.
From the CLI: orl vms burn get <vm-id>.
The same numbers appear in the dashboard on each VM's detail page (hourly rate, session cost) and on the Usage page (org burn rate and runway).
Authenticating requests to your endpoint
A private VM or Pod exposes an HTTPS endpoint. Authenticate to it with your OpenRelay API key sent as a Bearer token.
Pods and persistent storage
Bring-your-own-container GPU pods, what survives a stop, restart, crash or node loss, and how the /workspace volume is billed and retained.