curl --request POST \
--url https://api.hyperbolic.ai/v2/alpha/on-demand/bare-metal-rentals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"gpuCount": 2,
"storageVolume": {
"isNew": false,
"id": 4503599627370495
},
"region": "us-central-1",
"gpuType": "h100",
"label": "<string>",
"termType": "on-demand",
"discountPercentage": 0,
"termPeriodDays": 123,
"monitoringEnabled": true,
"convertToOnDemandOnExpiry": true,
"sshPublicKeyId": 0,
"sshPublicKeyIds": [
0
]
}
'import requests
url = "https://api.hyperbolic.ai/v2/alpha/on-demand/bare-metal-rentals"
payload = {
"gpuCount": 2,
"storageVolume": {
"isNew": False,
"id": 4503599627370495
},
"region": "us-central-1",
"gpuType": "h100",
"label": "<string>",
"termType": "on-demand",
"discountPercentage": 0,
"termPeriodDays": 123,
"monitoringEnabled": True,
"convertToOnDemandOnExpiry": True,
"sshPublicKeyId": 0,
"sshPublicKeyIds": [0]
}
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: 2,
storageVolume: {isNew: false, id: 4503599627370495},
region: 'us-central-1',
gpuType: 'h100',
label: '<string>',
termType: 'on-demand',
discountPercentage: 0,
termPeriodDays: 123,
monitoringEnabled: true,
convertToOnDemandOnExpiry: true,
sshPublicKeyId: 0,
sshPublicKeyIds: [0]
})
};
fetch('https://api.hyperbolic.ai/v2/alpha/on-demand/bare-metal-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/alpha/on-demand/bare-metal-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' => 2,
'storageVolume' => [
'isNew' => false,
'id' => 4503599627370495
],
'region' => 'us-central-1',
'gpuType' => 'h100',
'label' => '<string>',
'termType' => 'on-demand',
'discountPercentage' => 0,
'termPeriodDays' => 123,
'monitoringEnabled' => true,
'convertToOnDemandOnExpiry' => true,
'sshPublicKeyId' => 0,
'sshPublicKeyIds' => [
0
]
]),
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/alpha/on-demand/bare-metal-rentals"
payload := strings.NewReader("{\n \"gpuCount\": 2,\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n },\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"discountPercentage\": 0,\n \"termPeriodDays\": 123,\n \"monitoringEnabled\": true,\n \"convertToOnDemandOnExpiry\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\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/alpha/on-demand/bare-metal-rentals")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"gpuCount\": 2,\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n },\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"discountPercentage\": 0,\n \"termPeriodDays\": 123,\n \"monitoringEnabled\": true,\n \"convertToOnDemandOnExpiry\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperbolic.ai/v2/alpha/on-demand/bare-metal-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\": 2,\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n },\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"discountPercentage\": 0,\n \"termPeriodDays\": 123,\n \"monitoringEnabled\": true,\n \"convertToOnDemandOnExpiry\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\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 bare metal rental
Deprecated. This path is the pre-/v2/ URL for /v2/on-demand/bare-metal-rentals and is kept only so existing integrations keep working. It behaves identically, responds with a Sunset header, and stops being served on 2027-03-01. Move to /v2/on-demand/bare-metal-rentals.
Create a bare metal rental
curl --request POST \
--url https://api.hyperbolic.ai/v2/alpha/on-demand/bare-metal-rentals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"gpuCount": 2,
"storageVolume": {
"isNew": false,
"id": 4503599627370495
},
"region": "us-central-1",
"gpuType": "h100",
"label": "<string>",
"termType": "on-demand",
"discountPercentage": 0,
"termPeriodDays": 123,
"monitoringEnabled": true,
"convertToOnDemandOnExpiry": true,
"sshPublicKeyId": 0,
"sshPublicKeyIds": [
0
]
}
'import requests
url = "https://api.hyperbolic.ai/v2/alpha/on-demand/bare-metal-rentals"
payload = {
"gpuCount": 2,
"storageVolume": {
"isNew": False,
"id": 4503599627370495
},
"region": "us-central-1",
"gpuType": "h100",
"label": "<string>",
"termType": "on-demand",
"discountPercentage": 0,
"termPeriodDays": 123,
"monitoringEnabled": True,
"convertToOnDemandOnExpiry": True,
"sshPublicKeyId": 0,
"sshPublicKeyIds": [0]
}
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: 2,
storageVolume: {isNew: false, id: 4503599627370495},
region: 'us-central-1',
gpuType: 'h100',
label: '<string>',
termType: 'on-demand',
discountPercentage: 0,
termPeriodDays: 123,
monitoringEnabled: true,
convertToOnDemandOnExpiry: true,
sshPublicKeyId: 0,
sshPublicKeyIds: [0]
})
};
fetch('https://api.hyperbolic.ai/v2/alpha/on-demand/bare-metal-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/alpha/on-demand/bare-metal-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' => 2,
'storageVolume' => [
'isNew' => false,
'id' => 4503599627370495
],
'region' => 'us-central-1',
'gpuType' => 'h100',
'label' => '<string>',
'termType' => 'on-demand',
'discountPercentage' => 0,
'termPeriodDays' => 123,
'monitoringEnabled' => true,
'convertToOnDemandOnExpiry' => true,
'sshPublicKeyId' => 0,
'sshPublicKeyIds' => [
0
]
]),
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/alpha/on-demand/bare-metal-rentals"
payload := strings.NewReader("{\n \"gpuCount\": 2,\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n },\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"discountPercentage\": 0,\n \"termPeriodDays\": 123,\n \"monitoringEnabled\": true,\n \"convertToOnDemandOnExpiry\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\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/alpha/on-demand/bare-metal-rentals")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"gpuCount\": 2,\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n },\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"discountPercentage\": 0,\n \"termPeriodDays\": 123,\n \"monitoringEnabled\": true,\n \"convertToOnDemandOnExpiry\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperbolic.ai/v2/alpha/on-demand/bare-metal-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\": 2,\n \"storageVolume\": {\n \"isNew\": false,\n \"id\": 4503599627370495\n },\n \"region\": \"us-central-1\",\n \"gpuType\": \"h100\",\n \"label\": \"<string>\",\n \"termType\": \"on-demand\",\n \"discountPercentage\": 0,\n \"termPeriodDays\": 123,\n \"monitoringEnabled\": true,\n \"convertToOnDemandOnExpiry\": true,\n \"sshPublicKeyId\": 0,\n \"sshPublicKeyIds\": [\n 0\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
infiniband, ethernet x >= 1Must be a multiple of 8- Option 1
- Option 2
Show child attributes
Show child attributes
us-central-1, 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 cuda12.8, cuda12.9 on-demand, reserved -9007199254740991 <= x <= 90071992547409911-9007199254740991 <= x <= 9007199254740991Response
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

