curl --request GET \
--url https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"virtual_machines": [
{
"id": "66666666-6666-4666-8666-666666666666",
"node_id": "33333333-3333-4333-8333-333333333333",
"reservation_id": "11111111-1111-4111-8111-111111111111",
"status": "running",
"operation": "provision",
"operation_id": "99999999-9999-4999-8999-999999999999",
"operation_status": "succeeded",
"operation_started_at": "2026-10-15T00:02:15Z",
"operation_completed_at": "2026-10-15T00:09:48Z",
"stages": [
{
"key": "prepare_host",
"label": "Preparing host",
"status": "completed",
"started_at": "2026-10-15T00:02:15Z",
"completed_at": "2026-10-15T00:02:40Z"
},
{
"key": "start_vm",
"label": "Starting virtual machine",
"status": "completed",
"started_at": "2026-10-15T00:04:05Z",
"completed_at": "2026-10-15T00:05:30Z"
},
{
"key": "configure_access",
"label": "Configuring access",
"status": "completed",
"started_at": "2026-10-15T00:09:20Z",
"completed_at": "2026-10-15T00:09:48Z"
}
],
"failure": null,
"ready_at": "2026-10-15T00:09:48Z",
"hostname": "ornn-vm-11111111-0",
"ip": "203.0.113.10",
"tenant_username": "tenant",
"port": 2222,
"gpu_count": 8,
"disk_id": "77777777-7777-4777-8777-777777777777",
"created_at": "2026-10-15T00:02:11Z",
"destroy_at": null
}
]
}{
"code": "<string>",
"detail": "<string>"
}{
"code": "<string>",
"detail": "<string>"
}{
"detail": {
"code": "reservation_not_found",
"message": "Ornn could not find that reservation."
}
}{
"code": "<string>",
"detail": "<string>"
}List a reservation's VMs
Returns the reservation’s VMs, oldest first, with their status, latest operation, grouped launch progress, and SSH details. Deleted VMs are omitted. ip and port appear while a VM is provisioning or running; tenant_username and ready_at appear only when it is running. Connect when status is running, using the returned ip, port, and tenant_username. Poll every five seconds with a deadline while any VM is provisioning or deleting. A failed VM carries failure with a code and message. You can read this list after the reservation ends.
curl --request GET \
--url https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/orchestrator/reservations/{reservation_id}/virtual-machines")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"virtual_machines": [
{
"id": "66666666-6666-4666-8666-666666666666",
"node_id": "33333333-3333-4333-8333-333333333333",
"reservation_id": "11111111-1111-4111-8111-111111111111",
"status": "running",
"operation": "provision",
"operation_id": "99999999-9999-4999-8999-999999999999",
"operation_status": "succeeded",
"operation_started_at": "2026-10-15T00:02:15Z",
"operation_completed_at": "2026-10-15T00:09:48Z",
"stages": [
{
"key": "prepare_host",
"label": "Preparing host",
"status": "completed",
"started_at": "2026-10-15T00:02:15Z",
"completed_at": "2026-10-15T00:02:40Z"
},
{
"key": "start_vm",
"label": "Starting virtual machine",
"status": "completed",
"started_at": "2026-10-15T00:04:05Z",
"completed_at": "2026-10-15T00:05:30Z"
},
{
"key": "configure_access",
"label": "Configuring access",
"status": "completed",
"started_at": "2026-10-15T00:09:20Z",
"completed_at": "2026-10-15T00:09:48Z"
}
],
"failure": null,
"ready_at": "2026-10-15T00:09:48Z",
"hostname": "ornn-vm-11111111-0",
"ip": "203.0.113.10",
"tenant_username": "tenant",
"port": 2222,
"gpu_count": 8,
"disk_id": "77777777-7777-4777-8777-777777777777",
"created_at": "2026-10-15T00:02:11Z",
"destroy_at": null
}
]
}{
"code": "<string>",
"detail": "<string>"
}{
"code": "<string>",
"detail": "<string>"
}{
"detail": {
"code": "reservation_not_found",
"message": "Ornn could not find that reservation."
}
}{
"code": "<string>",
"detail": "<string>"
}ssh -p <port> <tenant_username>@<ip> once a VM’s status is running.Authorizations
Create an organization API key in Account Settings > Developer. Do not send this key to the Kubernetes API server.
Path Parameters
An owned reservation ID (reservationId in reservation responses).
Response
The reservation's VMs. The example shows one running VM.
Show child attributes
Show child attributes
Was this page helpful?