cURL
curl "https://api.ornnai.com/api/gpu-utilization" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
resp = requests.get(
"https://api.ornnai.com/api/gpu-utilization",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = resp.json()
const res = await fetch("https://api.ornnai.com/api/gpu-utilization", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const data = await res.json();
<?php
$ch = curl_init("https://api.ornnai.com/api/gpu-utilization");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
package main
import (
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.ornnai.com/api/gpu-utilization", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
_ = body
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(
URI.create("https://api.ornnai.com/api/gpu-utilization"))
.header("Authorization", "Bearer YOUR_API_KEY")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
require "net/http"
require "json"
uri = URI("https://api.ornnai.com/api/gpu-utilization")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
{
"success": true,
"query": {
"region": "global",
"gpu_types": [
"H100 SXM",
"H200",
"A100 SXM4",
"B200",
"RTX PRO 6000 WS"
],
"window_days": 30
},
"data": [
{
"gpu_name": "H100 SXM",
"utilization_ratio": 0.7,
"recorded_at": "2026-08-31T12:00:00.000Z",
"avg_7d": 0.68,
"avg_30d": 0.66,
"readings_found": 720
},
{
"gpu_name": "H200",
"utilization_ratio": 0.81,
"recorded_at": "2026-08-31T12:00:00.000Z",
"avg_7d": 0.79,
"avg_30d": 0.77,
"readings_found": 720
}
]
}{
"error": "Unauthorized",
"message": "API key required. Use Authorization: Bearer YOUR_API_KEY"
}Get current utilization for all GPUs
The latest utilization reading for every tracked GPU in one call, with the 7- and 30-day means behind it. Takes no parameters.
Use this for a cross-section across GPUs. For one GPU’s series over time,
use /api/gpu/{gpuName}/volume-metrics.
utilization_ratio is the share of tracked capacity rented, between 0 and 1,
and is bounded to the last 48 hours: a GPU whose feed has stopped returns
null rather than a stale figure. avg_7d and avg_30d are explicitly
windowed and still populate in that case. A GPU with no readings at all in
the 30-day window is absent from data rather than present with nulls.
Pinned to region: "global".
GET
/
api
/
gpu-utilization
cURL
curl "https://api.ornnai.com/api/gpu-utilization" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
resp = requests.get(
"https://api.ornnai.com/api/gpu-utilization",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = resp.json()
const res = await fetch("https://api.ornnai.com/api/gpu-utilization", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const data = await res.json();
<?php
$ch = curl_init("https://api.ornnai.com/api/gpu-utilization");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
package main
import (
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.ornnai.com/api/gpu-utilization", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
_ = body
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(
URI.create("https://api.ornnai.com/api/gpu-utilization"))
.header("Authorization", "Bearer YOUR_API_KEY")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
require "net/http"
require "json"
uri = URI("https://api.ornnai.com/api/gpu-utilization")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
{
"success": true,
"query": {
"region": "global",
"gpu_types": [
"H100 SXM",
"H200",
"A100 SXM4",
"B200",
"RTX PRO 6000 WS"
],
"window_days": 30
},
"data": [
{
"gpu_name": "H100 SXM",
"utilization_ratio": 0.7,
"recorded_at": "2026-08-31T12:00:00.000Z",
"avg_7d": 0.68,
"avg_30d": 0.66,
"readings_found": 720
},
{
"gpu_name": "H200",
"utilization_ratio": 0.81,
"recorded_at": "2026-08-31T12:00:00.000Z",
"avg_7d": 0.79,
"avg_30d": 0.77,
"readings_found": 720
}
]
}{
"error": "Unauthorized",
"message": "API key required. Use Authorization: Bearer YOUR_API_KEY"
}Overview
The latest utilization reading for every tracked GPU in one call, with the 7- and 30-day means behind it. Takes no parameters. Use this for a cross-section across GPUs. For one GPU’s series over time, use Get market utilization.Reading the response
utilization_ratio is the share of tracked capacity rented, between 0 and 1, and is
bounded to the last 48 hours — a GPU whose feed has stopped returns null rather than
a stale figure. avg_7d and avg_30d are explicitly windowed and still populate in
that case, so neither can be misread as current.
A GPU with no readings at all in the 30-day window is absent from data rather than
present with nulls.
Results are pinned to region: "global".Authorizations
API key passed as a Bearer token. Create one in the dashboard.
Response
Latest utilization per GPU.

