curl --request GET \
--url https://api.ornn.com/v1/orchestrator/nodes/{node_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/v1/orchestrator/nodes/{node_id}"
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/nodes/{node_id}', 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/nodes/{node_id}",
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/nodes/{node_id}"
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/nodes/{node_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/orchestrator/nodes/{node_id}")
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{
"node_id": "33333333-3333-4333-8333-333333333333",
"reservation_id": "11111111-1111-4111-8111-111111111111",
"controller_id": null,
"status": "bare-metal",
"hostname": "gpu-host-01",
"facility_id": "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb",
"ip": "203.0.113.10",
"port": 22,
"username": "tenant",
"ssh_endpoint": "tenant@203.0.113.10",
"gpu_type": "H100",
"gpu_count": 8,
"cpu_type": "Example 64-core CPU",
"memory_bytes": 2199023255552,
"storage_bytes": 30000000000000,
"authorized_key_fingerprints": [
"SHA256:exampleFingerprint0000000000000000000000000"
],
"authorized_key_metadata": [
{
"fingerprint": "SHA256:exampleFingerprint0000000000000000000000000",
"label": null,
"status": "installed",
"linux_username": "tenant",
"pushed_at": "2026-10-15T00:06:40Z",
"failed_at": null,
"failure_reason": null,
"request_id": null
}
],
"keys_pushed_at": "2026-10-15T00:06:40Z",
"enrolled_at": "2026-09-01T12:00:00Z",
"reboot": null,
"health_readiness": {
"ready": true,
"status": "ready",
"reasons": [],
"advisory_reasons": []
}
}{
"code": "<string>",
"detail": "<string>"
}{
"code": "<string>",
"detail": "<string>"
}{
"detail": {
"code": "node_not_found",
"message": "Ornn could not find that node in this cluster."
}
}{
"detail": {
"code": "reservation_not_launchable",
"message": "This reservation cannot launch in its current state."
}
}{
"code": "<string>",
"detail": "<string>"
}Get a reserved node
Returns one host node of an owned reservation with its SSH details, SSH key delivery, heartbeat readiness, and latest reboot. For Bare Metal, connect with ssh_endpoint and port once health_readiness.ready is true and your key’s fingerprint is in authorized_key_fingerprints. ready true with heartbeat:unknown in advisory_reasons is not proof that the host is reachable; confirm with SSH. For a VM, this is the host; use the reservation’s VM list for the VM’s own status and SSH port. Pass a node_id, not a VM id. Nodes in a Kubernetes or Slurm cluster return 404. Reading a node of an ended reservation returns 409.
curl --request GET \
--url https://api.ornn.com/v1/orchestrator/nodes/{node_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/v1/orchestrator/nodes/{node_id}"
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/nodes/{node_id}', 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/nodes/{node_id}",
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/nodes/{node_id}"
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/nodes/{node_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/orchestrator/nodes/{node_id}")
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{
"node_id": "33333333-3333-4333-8333-333333333333",
"reservation_id": "11111111-1111-4111-8111-111111111111",
"controller_id": null,
"status": "bare-metal",
"hostname": "gpu-host-01",
"facility_id": "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb",
"ip": "203.0.113.10",
"port": 22,
"username": "tenant",
"ssh_endpoint": "tenant@203.0.113.10",
"gpu_type": "H100",
"gpu_count": 8,
"cpu_type": "Example 64-core CPU",
"memory_bytes": 2199023255552,
"storage_bytes": 30000000000000,
"authorized_key_fingerprints": [
"SHA256:exampleFingerprint0000000000000000000000000"
],
"authorized_key_metadata": [
{
"fingerprint": "SHA256:exampleFingerprint0000000000000000000000000",
"label": null,
"status": "installed",
"linux_username": "tenant",
"pushed_at": "2026-10-15T00:06:40Z",
"failed_at": null,
"failure_reason": null,
"request_id": null
}
],
"keys_pushed_at": "2026-10-15T00:06:40Z",
"enrolled_at": "2026-09-01T12:00:00Z",
"reboot": null,
"health_readiness": {
"ready": true,
"status": "ready",
"reasons": [],
"advisory_reasons": []
}
}{
"code": "<string>",
"detail": "<string>"
}{
"code": "<string>",
"detail": "<string>"
}{
"detail": {
"code": "node_not_found",
"message": "Ornn could not find that node in this cluster."
}
}{
"detail": {
"code": "reservation_not_launchable",
"message": "This reservation cannot launch in its current state."
}
}{
"code": "<string>",
"detail": "<string>"
}ornn machines show <node-id> --format json. To list every node in a reservation, use List reserved GPU nodes.Authorizations
Create an organization API key in Account Settings > Developer. Do not send this key to the Kubernetes API server.
Path Parameters
A host node_id from the reservation's node list. Not a VM id.
Response
The node. The example shows a Bare Metal host with one installed key.
A reserved host node. Fields not listed under Node are SSH key delivery and reboot state.
The cluster currently holding this node, or null.
Node lifecycle or access mode, such as bare-metal; not a liveness signal.
Heartbeat-based launch preflight returned on reservation nodes. A stale heartbeat blocks launch. Missing heartbeat evidence returns ready true with heartbeat:unknown in advisory_reasons; this is not proof of host reachability, GPU health, or workload readiness. Treat an absent readiness object as unknown, not as ready. The reservation-node serializer returns an object, never null.
Show child attributes
Show child attributes
{
"ready": false,
"status": "blocked",
"reasons": ["heartbeat:stale"],
"advisory_reasons": []
}
Fingerprints of SSH keys installed for the tenant login on this host.
Show child attributes
Show child attributes
When keys were last installed on this host.
The latest tracked host reboot, or null.
Show child attributes
Show child attributes
Was this page helpful?