Update a rental
curl --request POST \
--url https://api.hyperbolic.ai/v2/on-demand/rentals/update \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rentalId": 4503599627370495,
"label": "<string>",
"convertToOnDemandOnExpiry": true
}
'import requests
url = "https://api.hyperbolic.ai/v2/on-demand/rentals/update"
payload = {
"rentalId": 4503599627370495,
"label": "<string>",
"convertToOnDemandOnExpiry": True
}
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({rentalId: 4503599627370495, label: '<string>', convertToOnDemandOnExpiry: true})
};
fetch('https://api.hyperbolic.ai/v2/on-demand/rentals/update', 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.hyperbolic.ai/v2/on-demand/rentals/update",
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([
'rentalId' => 4503599627370495,
'label' => '<string>',
'convertToOnDemandOnExpiry' => true
]),
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.hyperbolic.ai/v2/on-demand/rentals/update"
payload := strings.NewReader("{\n \"rentalId\": 4503599627370495,\n \"label\": \"<string>\",\n \"convertToOnDemandOnExpiry\": true\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.hyperbolic.ai/v2/on-demand/rentals/update")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"rentalId\": 4503599627370495,\n \"label\": \"<string>\",\n \"convertToOnDemandOnExpiry\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperbolic.ai/v2/on-demand/rentals/update")
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 \"rentalId\": 4503599627370495,\n \"label\": \"<string>\",\n \"convertToOnDemandOnExpiry\": true\n}"
response = http.request(request)
puts response.read_body{
"rentalId": "<string>",
"name": "<string>",
"label": "<string>",
"rentalType": "virtual-machine",
"region": "us-central-1",
"gpuType": "h100",
"gpuCount": 0,
"gpuFormFactor": "sxm5",
"connectionType": "infiniband",
"ethernetVariant": "normal",
"nodes": [
{
"cpuModel": "<string>",
"cpuCount": 123,
"vcpuCount": 123,
"gpuCount": 123,
"ramGb": 123,
"storageGb": 123
}
],
"sshEndpoints": [
{
"host": "<string>",
"port": 123,
"user": "<string>"
}
],
"networkInterfaces": [
{
"publicIp": "<string>",
"privateIp": "<string>"
}
],
"portMappings": [
{
"externalPort": 123,
"internalPort": 123
}
],
"supportsPortForwarding": true,
"exposedPorts": [
123
],
"supportsCustomPorts": true,
"attachedStorage": [
{
"storageVolumeId": "<string>",
"label": "<string>",
"sizeInGb": 0,
"virtualIp": "<string>",
"costPerHourCents": 123
}
],
"supportsAttachedStorage": true,
"monitoringEnabled": true,
"convertToOnDemandOnExpiry": true,
"terminationReason": "<string>",
"currentTerm": {
"effectiveAt": "2025-01-31T12:00:00.000Z",
"termType": "on-demand",
"costPerHour": 123,
"reservedUntil": null,
"reservationEndsAt": null,
"termPeriodDays": null,
"discountPercentage": null,
"originalCostPerHour": null
},
"createdAt": "2025-01-31T12:00:00.000Z",
"updatedAt": "2025-01-31T12:00:00.000Z",
"startedAt": "2025-01-31T12:00:00.000Z",
"terminatedAt": "2025-01-31T12:00:00.000Z",
"userId": "<string>",
"orgId": "<string>",
"createdBy": {
"id": "<string>",
"name": "<string>",
"email": "<string>",
"picture": "<string>"
},
"privateCluster": {
"gpuModel": "<string>",
"location": "<string>",
"sshUser": "<string>",
"sshPort": 123,
"nodes": [
{
"role": "login",
"hostname": "<string>",
"publicIp": "<string>",
"privateIp": "<string>"
}
],
"handover": {}
},
"managedCluster": {
"name": "<string>",
"label": "<string>"
}
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Rentals
Update a rental
Update a rental’s label and/or its reserved-term end-of-term action. Pass an empty label to clear it.
POST
/
v2
/
on-demand
/
rentals
/
update
Update a rental
curl --request POST \
--url https://api.hyperbolic.ai/v2/on-demand/rentals/update \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rentalId": 4503599627370495,
"label": "<string>",
"convertToOnDemandOnExpiry": true
}
'import requests
url = "https://api.hyperbolic.ai/v2/on-demand/rentals/update"
payload = {
"rentalId": 4503599627370495,
"label": "<string>",
"convertToOnDemandOnExpiry": True
}
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({rentalId: 4503599627370495, label: '<string>', convertToOnDemandOnExpiry: true})
};
fetch('https://api.hyperbolic.ai/v2/on-demand/rentals/update', 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.hyperbolic.ai/v2/on-demand/rentals/update",
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([
'rentalId' => 4503599627370495,
'label' => '<string>',
'convertToOnDemandOnExpiry' => true
]),
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.hyperbolic.ai/v2/on-demand/rentals/update"
payload := strings.NewReader("{\n \"rentalId\": 4503599627370495,\n \"label\": \"<string>\",\n \"convertToOnDemandOnExpiry\": true\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.hyperbolic.ai/v2/on-demand/rentals/update")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"rentalId\": 4503599627370495,\n \"label\": \"<string>\",\n \"convertToOnDemandOnExpiry\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperbolic.ai/v2/on-demand/rentals/update")
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 \"rentalId\": 4503599627370495,\n \"label\": \"<string>\",\n \"convertToOnDemandOnExpiry\": true\n}"
response = http.request(request)
puts response.read_body{
"rentalId": "<string>",
"name": "<string>",
"label": "<string>",
"rentalType": "virtual-machine",
"region": "us-central-1",
"gpuType": "h100",
"gpuCount": 0,
"gpuFormFactor": "sxm5",
"connectionType": "infiniband",
"ethernetVariant": "normal",
"nodes": [
{
"cpuModel": "<string>",
"cpuCount": 123,
"vcpuCount": 123,
"gpuCount": 123,
"ramGb": 123,
"storageGb": 123
}
],
"sshEndpoints": [
{
"host": "<string>",
"port": 123,
"user": "<string>"
}
],
"networkInterfaces": [
{
"publicIp": "<string>",
"privateIp": "<string>"
}
],
"portMappings": [
{
"externalPort": 123,
"internalPort": 123
}
],
"supportsPortForwarding": true,
"exposedPorts": [
123
],
"supportsCustomPorts": true,
"attachedStorage": [
{
"storageVolumeId": "<string>",
"label": "<string>",
"sizeInGb": 0,
"virtualIp": "<string>",
"costPerHourCents": 123
}
],
"supportsAttachedStorage": true,
"monitoringEnabled": true,
"convertToOnDemandOnExpiry": true,
"terminationReason": "<string>",
"currentTerm": {
"effectiveAt": "2025-01-31T12:00:00.000Z",
"termType": "on-demand",
"costPerHour": 123,
"reservedUntil": null,
"reservationEndsAt": null,
"termPeriodDays": null,
"discountPercentage": null,
"originalCostPerHour": null
},
"createdAt": "2025-01-31T12:00:00.000Z",
"updatedAt": "2025-01-31T12:00:00.000Z",
"startedAt": "2025-01-31T12:00:00.000Z",
"terminatedAt": "2025-01-31T12:00:00.000Z",
"userId": "<string>",
"orgId": "<string>",
"createdBy": {
"id": "<string>",
"name": "<string>",
"email": "<string>",
"picture": "<string>"
},
"privateCluster": {
"gpuModel": "<string>",
"location": "<string>",
"sshUser": "<string>",
"sshPort": 123,
"nodes": [
{
"role": "login",
"hostname": "<string>",
"publicIp": "<string>",
"privateIp": "<string>"
}
],
"handover": {}
},
"managedCluster": {
"name": "<string>",
"label": "<string>"
}
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Response
Successful response
A GPU rental.
Available options:
virtual-machine, bare-metal Available options:
us-central-1, us-central-2, eu-north-2, eu-west-2, eu-north-4, eu-north-5, us-east-1, us-east-2, ca-east-3, eu-north-6, eu-north-7, eu-north-8, ca-west-1, ca-east-1, us-central-3, us-southeast-1, me-central-1, ca-east-2, eu-west-1, us-southeast-2, jp-east-1, us-southeast-3, eu-west-5, us-east-3, uk-central-3, uk-southeast-3, eu-southwest-3, eu-southwest-3-1, eu-west-3, eu-west-4, private-cloud Available options:
h100, h200, b200, rtx-6000-pro Required range:
-9007199254740991 <= x <= 9007199254740991Available options:
sxm5, sxm6, pcie Available options:
infiniband, ethernet Available options:
normal, rocev2 Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
- Option 1
- Option 2
- Option 3
Show child attributes
Show child attributes
Example:
"2025-01-31T12:00:00.000Z"
Example:
"2025-01-31T12:00:00.000Z"
Example:
"2025-01-31T12:00:00.000Z"
Example:
"2025-01-31T12:00:00.000Z"
The user who created a rental.
Show child attributes
Show child attributes
The topology of a dedicated private cluster.
Show child attributes
Show child attributes
The managed Kubernetes cluster a rental is a node pool of.
Show child attributes
Show child attributes

