Create a VM
Authorization
apiKey OpenRelay API key. Send it as Authorization: Bearer vl_….
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/orgs/string/vms/create" \ -H "Content-Type: application/json" \ -d '{ "name": "cuda-devbox", "gpuModelId": "rtx-4090", "gpuCount": 1, "imageUrl": "ghcr.io/acme/cuda-devbox:latest", "diskSizeGb": 100, "sshKeyIds": [ "key_2f9c1a" ], "envVars": { "HF_TOKEN": "hf_xxxxxxxx" } }'{
"id": "string",
"organizationId": "string",
"name": "string",
"status": "string",
"statusReason": "string",
"gpuModelId": "string",
"gpuCount": 0,
"endpointUrl": "string",
"public": true,
"createdAt": "string",
"provisioningStage": "string",
"resourceSize": "string",
"tier": "string",
"diskSizeGb": 0,
"gpuModelName": "string",
"pricePerHourCents": 0,
"serviceType": "string"
}{
"error": "string",
"code": "string"
}{
"error": "string",
"code": "string"
}{
"error": "string",
"code": "string"
}{
"error": "string",
"code": "string"
}Command line
The orl CLI wraps this endpoint:
orl vms create --name <name>Live burn rate, session cost so far, and org runway for a VM GET
Every VM bills at one bundled hourly rate (per-GPU catalog price times GPU count for GPU VMs, a flat size rate for CPU VMs); disk is included, never billed separately. The rate is locked when the usage session opens, so this endpoint reads it from the open usage record when one exists (rateSource=locked) and only falls back to the current catalog when nothing is accruing (rateSource=catalog).
Stop a VM POST
Next Page