curl --request POST \
--url https://api.hyperbolic.ai/v2/on-demand/rentals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"gpuCount": 123,
"region": "us-central-1",
"gpuType": "h100",
"label": "<string>",
"termType": "on-demand",
"termPeriodDays": 123,
"discountPercentage": 0,
"convertToOnDemandOnExpiry": true,
"monitoringEnabled": true,
"sshPublicKeyId": 0,
"sshPublicKeyIds": [
0
],
"customPorts": [
32768
],
"storageVolume": {
"isNew": false,
"id": 4503599627370495
}
}
'import requests
url = "https://api.hyperbolic.ai/v2/on-demand/rentals"
payload = {
"gpuCount": 123,
"region": "us-central-1",
"gpuType": "h100",
"label": "<string>",
"termType": "on-demand",
"termPeriodDays": 123,
"discountPercentage": 0,
"convertToOnDemandOnExpiry": True,
"monitoringEnabled": True,
"sshPublicKeyId": 0,
"sshPublicKeyIds": [0],
"customPorts": [32768],
"storageVolume": {
"isNew": False,
"id": 4503599627370495
}
}
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({
gpuCount: 123,
region: 'us-central-1',
gpuType: 'h100',
label: '<string>',
termType: 'on-demand',
termPeriodDays: 123,
discountPercentage: 0,
convertToOnDemandOnExpiry: true,
monitoringEnabled: true,
sshPublicKeyId: 0,
sshPublicKeyIds: [0],
customPorts: [32768],
storageVolume: {isNew: false, id: 4503599627370495}
})
};
fetch('https://api.hyperbolic.ai/v2/on-demand/rentals', 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",
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([
'gpuCount' => 123,
'region' => 'us-central-1',
'gpuType' => 'h100',
'label' => '<string>',
'termType' => 'on-demand',
'termPeriodDays' => 123,
'discountPercentage' => 0,
'convertToOnDemandOnExpiry' => true,
'monitoringEnabled' => true,
'sshPublicKeyId' => 0,
'sshPublicKeyIds' => [
0
],
'customPorts' => [
32768
],
'storageVolume' => [
'isNew' => false,
'id' => 4503599627370495
]
]),
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"
payload := strings.NewReader("{\n \"gpuCount\": 123,\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"termPeriodDays\": 123,\n \"discountPercentage\": 0,\n \"convertToOnDemandOnExpiry\": true,\n \"monitoringEnabled\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\n ],\n \"customPorts\": [\n 32768\n ],\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n }\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")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"gpuCount\": 123,\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"termPeriodDays\": 123,\n \"discountPercentage\": 0,\n \"convertToOnDemandOnExpiry\": true,\n \"monitoringEnabled\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\n ],\n \"customPorts\": [\n 32768\n ],\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperbolic.ai/v2/on-demand/rentals")
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 \"gpuCount\": 123,\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"termPeriodDays\": 123,\n \"discountPercentage\": 0,\n \"convertToOnDemandOnExpiry\": true,\n \"monitoringEnabled\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\n ],\n \"customPorts\": [\n 32768\n ],\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n }\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": []
}Create a rental
Rent a virtual machine or a bare metal server. rentalType decides which machine-type-specific fields apply; sending a field for the other type is a BAD_REQUEST (INVALID_INPUT_FOR_RENTAL_TYPE).
curl --request POST \
--url https://api.hyperbolic.ai/v2/on-demand/rentals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"gpuCount": 123,
"region": "us-central-1",
"gpuType": "h100",
"label": "<string>",
"termType": "on-demand",
"termPeriodDays": 123,
"discountPercentage": 0,
"convertToOnDemandOnExpiry": true,
"monitoringEnabled": true,
"sshPublicKeyId": 0,
"sshPublicKeyIds": [
0
],
"customPorts": [
32768
],
"storageVolume": {
"isNew": false,
"id": 4503599627370495
}
}
'import requests
url = "https://api.hyperbolic.ai/v2/on-demand/rentals"
payload = {
"gpuCount": 123,
"region": "us-central-1",
"gpuType": "h100",
"label": "<string>",
"termType": "on-demand",
"termPeriodDays": 123,
"discountPercentage": 0,
"convertToOnDemandOnExpiry": True,
"monitoringEnabled": True,
"sshPublicKeyId": 0,
"sshPublicKeyIds": [0],
"customPorts": [32768],
"storageVolume": {
"isNew": False,
"id": 4503599627370495
}
}
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({
gpuCount: 123,
region: 'us-central-1',
gpuType: 'h100',
label: '<string>',
termType: 'on-demand',
termPeriodDays: 123,
discountPercentage: 0,
convertToOnDemandOnExpiry: true,
monitoringEnabled: true,
sshPublicKeyId: 0,
sshPublicKeyIds: [0],
customPorts: [32768],
storageVolume: {isNew: false, id: 4503599627370495}
})
};
fetch('https://api.hyperbolic.ai/v2/on-demand/rentals', 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",
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([
'gpuCount' => 123,
'region' => 'us-central-1',
'gpuType' => 'h100',
'label' => '<string>',
'termType' => 'on-demand',
'termPeriodDays' => 123,
'discountPercentage' => 0,
'convertToOnDemandOnExpiry' => true,
'monitoringEnabled' => true,
'sshPublicKeyId' => 0,
'sshPublicKeyIds' => [
0
],
'customPorts' => [
32768
],
'storageVolume' => [
'isNew' => false,
'id' => 4503599627370495
]
]),
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"
payload := strings.NewReader("{\n \"gpuCount\": 123,\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"termPeriodDays\": 123,\n \"discountPercentage\": 0,\n \"convertToOnDemandOnExpiry\": true,\n \"monitoringEnabled\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\n ],\n \"customPorts\": [\n 32768\n ],\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n }\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")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"gpuCount\": 123,\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"termPeriodDays\": 123,\n \"discountPercentage\": 0,\n \"convertToOnDemandOnExpiry\": true,\n \"monitoringEnabled\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\n ],\n \"customPorts\": [\n 32768\n ],\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperbolic.ai/v2/on-demand/rentals")
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 \"gpuCount\": 123,\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"termPeriodDays\": 123,\n \"discountPercentage\": 0,\n \"convertToOnDemandOnExpiry\": true,\n \"monitoringEnabled\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\n ],\n \"customPorts\": [\n 32768\n ],\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n }\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
The machine type to rent. Fields marked for one machine type are rejected for the other.
virtual-machine, bare-metal GPUs to rent. Bare metal rents whole nodes, so a multiple of 8.
Required for bare metal. Virtual machines default to ethernet.
infiniband, ethernet A region that offers the chosen machine type.
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 h100, h200, b200, rtx-6000-pro on-demand, reserved The saved SSH key to authorize on the rental. Defaults to the most recently added key.
-9007199254740991 <= x <= 9007199254740991The saved SSH keys to authorize on the rental.
1-9007199254740991 <= x <= 9007199254740991Virtual machines only.
201 <= x <= 65535Bare metal only.
cuda12.8, cuda12.9 Bare metal only.
- Option 1
- Option 2
Show child attributes
Show child attributes
Response
Successful response
A GPU rental.
virtual-machine, bare-metal 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 h100, h200, b200, rtx-6000-pro -9007199254740991 <= x <= 9007199254740991sxm5, sxm6, pcie infiniband, ethernet 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
"2025-01-31T12:00:00.000Z"
"2025-01-31T12:00:00.000Z"
"2025-01-31T12:00:00.000Z"
"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

