curl --request POST \
--url https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"mode": "reboot"
}
'import requests
url = "https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot"
payload = { "mode": "reboot" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({mode: 'reboot'})
};
fetch('https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot', 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}/virtual-machines/{vm_id}/reboot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'mode' => 'reboot'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot"
payload := strings.NewReader("{\n \"mode\": \"reboot\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"mode\": \"reboot\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"mode\": \"reboot\"\n}"
response = http.request(request)
puts response.read_body{
"id": "66666666-6666-4666-8666-666666666666",
"node_id": "33333333-3333-4333-8333-333333333333",
"reservation_id": "11111111-1111-4111-8111-111111111111",
"status": "running",
"operation": "reboot",
"operation_id": "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb",
"operation_status": "queued",
"operation_started_at": "2026-10-20T15:00:00Z",
"operation_completed_at": null,
"stages": [],
"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
}{
"detail": {
"code": "invalid_virtual_machine_reboot_mode",
"message": "Choose reboot or reset."
}
}{
"code": "<string>",
"detail": "<string>"
}{
"detail": {
"code": "virtual_machine_not_found",
"message": "Ornn could not find that virtual machine."
}
}{
"detail": {
"code": "virtual_machine_busy",
"message": "This VM is already changing. Try again when its current reboot, launch, or reimage finishes."
}
}{
"code": "<string>",
"detail": "<string>"
}Reboot a VM
Restarts one running VM in place. Its disk, GPUs, SSH port, and network are kept, and other VMs on the node are not affected. mode reboot (the default) asks the VM’s operating system to restart and resets the VM if it has not come back within about 90 seconds. mode reset power-cycles the VM at once; anything not yet written to its disk is lost. Any member of the reservation’s organization can reboot. A 202 response is acceptance: the VM’s operation becomes reboot. Poll the reservation’s VM list until operation_status is succeeded or failed. A failed reboot leaves the VM running with failure set; you can reboot again.
curl --request POST \
--url https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"mode": "reboot"
}
'import requests
url = "https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot"
payload = { "mode": "reboot" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({mode: 'reboot'})
};
fetch('https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot', 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}/virtual-machines/{vm_id}/reboot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'mode' => 'reboot'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot"
payload := strings.NewReader("{\n \"mode\": \"reboot\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"mode\": \"reboot\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/orchestrator/nodes/{node_id}/virtual-machines/{vm_id}/reboot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"mode\": \"reboot\"\n}"
response = http.request(request)
puts response.read_body{
"id": "66666666-6666-4666-8666-666666666666",
"node_id": "33333333-3333-4333-8333-333333333333",
"reservation_id": "11111111-1111-4111-8111-111111111111",
"status": "running",
"operation": "reboot",
"operation_id": "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb",
"operation_status": "queued",
"operation_started_at": "2026-10-20T15:00:00Z",
"operation_completed_at": null,
"stages": [],
"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
}{
"detail": {
"code": "invalid_virtual_machine_reboot_mode",
"message": "Choose reboot or reset."
}
}{
"code": "<string>",
"detail": "<string>"
}{
"detail": {
"code": "virtual_machine_not_found",
"message": "Ornn could not find that virtual machine."
}
}{
"detail": {
"code": "virtual_machine_busy",
"message": "This VM is already changing. Try again when its current reboot, launch, or reimage finishes."
}
}{
"code": "<string>",
"detail": "<string>"
}Authorizations
Create an organization API key in Account Settings > Developer. Do not send this key to the Kubernetes API server.
Path Parameters
The VM's node_id from the reservation's VM list.
The VM's id from the reservation's VM list.
Body
Omit the body for a plain reboot.
reboot, reset Response
Reboot accepted. The body is the VM with operation reboot.
VM id. Reboot a VM and reimage take this ID with its node_id. The host reboot and hard reset route takes a node ID, not this ID.
The host node running the VM.
provisioning, running, failed, or deleting. Treat any other value as not ready.
Customer launch progress for the latest provision, in order.
Show child attributes
Show child attributes
The latest operation, provision, destroy, or reboot. A VM stays running during a reboot.
queued, running, succeeded, or failed.
Present when the VM or its latest operation failed. code is virtual_machine_provision_failed, virtual_machine_cleanup_failed, or virtual_machine_reboot_failed.
Show child attributes
Show child attributes
When the VM first became ready. Set only while running.
The VM's hostname. Not an SSH address.
SSH address. Present while provisioning or running.
Linux login, tenant. Present only while running.
SSH port. Present while provisioning or running. Do not assume 22.
Was this page helpful?