Get Offers
curl --request POST \
--url https://supply-api.compute-desk.com/get_offers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/yaml' \
--data '
"vendor: nebius\nregion: EU\n\ncompute:\n gpu_type: nvidia-l40s-48gb\n gpu_count: 1\n max_price_per_gpu_hour: 5\n contract_type: ondemand\n"
'import requests
url = "https://supply-api.compute-desk.com/get_offers"
payload = "vendor: nebius
region: EU
compute:
gpu_type: nvidia-l40s-48gb
gpu_count: 1
max_price_per_gpu_hour: 5
contract_type: ondemand
"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/yaml"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/yaml'},
body: JSON.stringify('vendor: nebius\nregion: EU\n\ncompute:\n gpu_type: nvidia-l40s-48gb\n gpu_count: 1\n max_price_per_gpu_hour: 5\n contract_type: ondemand\n')
};
fetch('https://supply-api.compute-desk.com/get_offers', 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://supply-api.compute-desk.com/get_offers",
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('vendor: nebius
region: EU
compute:
gpu_type: nvidia-l40s-48gb
gpu_count: 1
max_price_per_gpu_hour: 5
contract_type: ondemand
'),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/yaml"
],
]);
$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://supply-api.compute-desk.com/get_offers"
payload := strings.NewReader("\"vendor: nebius\\nregion: EU\\n\\ncompute:\\n gpu_type: nvidia-l40s-48gb\\n gpu_count: 1\\n max_price_per_gpu_hour: 5\\n contract_type: ondemand\\n\"")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/yaml")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://supply-api.compute-desk.com/get_offers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/yaml")
.body("\"vendor: nebius\\nregion: EU\\n\\ncompute:\\n gpu_type: nvidia-l40s-48gb\\n gpu_count: 1\\n max_price_per_gpu_hour: 5\\n contract_type: ondemand\\n\"")
.asString();require 'uri'
require 'net/http'
url = URI("https://supply-api.compute-desk.com/get_offers")
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/yaml'
request.body = "\"vendor: nebius\\nregion: EU\\n\\ncompute:\\n gpu_type: nvidia-l40s-48gb\\n gpu_count: 1\\n max_price_per_gpu_hour: 5\\n contract_type: ondemand\\n\""
response = http.request(request)
puts response.read_body{
"offers": [
{
"offer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"gpu_type": "<string>",
"gpu_family": "<string>",
"gpu_count": 123,
"vendor": "<string>",
"region": "<string>",
"gpu_price_per_hour": 123,
"boot_disk_in_gb": 123,
"created_at": "2023-11-07T05:31:56Z",
"vendor_region": "<string>",
"contract_type": "<string>",
"type": "vm",
"vcpu_count": 123,
"memory_in_gb": 123,
"storage_details": [
{
"name": "<string>",
"size_gb": 123,
"type": "<string>",
"storage_class": "<string>",
"vendor_class": "<string>",
"vendor_region": "<string>",
"price_per_gb_month": 123,
"monthly_cost": 123,
"hourly_cost": 123,
"persistent": false
}
],
"storage_price_per_hour": 123,
"total_price_per_hour": 123,
"expires_at": "2023-11-07T05:31:56Z",
"deployment_type": "<string>",
"node_count": 123,
"gpus_per_node": 123,
"infiniband_bandwidth_gbps": 123,
"cluster_storage_gb": 123
}
],
"total_count": 123,
"filters_applied": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Offers
Get Offers
Query available GPU offers from a raw YAML string.
Offer expiration: 30 minutes from creation
POST
/
get_offers
Get Offers
curl --request POST \
--url https://supply-api.compute-desk.com/get_offers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/yaml' \
--data '
"vendor: nebius\nregion: EU\n\ncompute:\n gpu_type: nvidia-l40s-48gb\n gpu_count: 1\n max_price_per_gpu_hour: 5\n contract_type: ondemand\n"
'import requests
url = "https://supply-api.compute-desk.com/get_offers"
payload = "vendor: nebius
region: EU
compute:
gpu_type: nvidia-l40s-48gb
gpu_count: 1
max_price_per_gpu_hour: 5
contract_type: ondemand
"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/yaml"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/yaml'},
body: JSON.stringify('vendor: nebius\nregion: EU\n\ncompute:\n gpu_type: nvidia-l40s-48gb\n gpu_count: 1\n max_price_per_gpu_hour: 5\n contract_type: ondemand\n')
};
fetch('https://supply-api.compute-desk.com/get_offers', 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://supply-api.compute-desk.com/get_offers",
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('vendor: nebius
region: EU
compute:
gpu_type: nvidia-l40s-48gb
gpu_count: 1
max_price_per_gpu_hour: 5
contract_type: ondemand
'),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/yaml"
],
]);
$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://supply-api.compute-desk.com/get_offers"
payload := strings.NewReader("\"vendor: nebius\\nregion: EU\\n\\ncompute:\\n gpu_type: nvidia-l40s-48gb\\n gpu_count: 1\\n max_price_per_gpu_hour: 5\\n contract_type: ondemand\\n\"")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/yaml")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://supply-api.compute-desk.com/get_offers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/yaml")
.body("\"vendor: nebius\\nregion: EU\\n\\ncompute:\\n gpu_type: nvidia-l40s-48gb\\n gpu_count: 1\\n max_price_per_gpu_hour: 5\\n contract_type: ondemand\\n\"")
.asString();require 'uri'
require 'net/http'
url = URI("https://supply-api.compute-desk.com/get_offers")
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/yaml'
request.body = "\"vendor: nebius\\nregion: EU\\n\\ncompute:\\n gpu_type: nvidia-l40s-48gb\\n gpu_count: 1\\n max_price_per_gpu_hour: 5\\n contract_type: ondemand\\n\""
response = http.request(request)
puts response.read_body{
"offers": [
{
"offer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"gpu_type": "<string>",
"gpu_family": "<string>",
"gpu_count": 123,
"vendor": "<string>",
"region": "<string>",
"gpu_price_per_hour": 123,
"boot_disk_in_gb": 123,
"created_at": "2023-11-07T05:31:56Z",
"vendor_region": "<string>",
"contract_type": "<string>",
"type": "vm",
"vcpu_count": 123,
"memory_in_gb": 123,
"storage_details": [
{
"name": "<string>",
"size_gb": 123,
"type": "<string>",
"storage_class": "<string>",
"vendor_class": "<string>",
"vendor_region": "<string>",
"price_per_gb_month": 123,
"monthly_cost": 123,
"hourly_cost": 123,
"persistent": false
}
],
"storage_price_per_hour": 123,
"total_price_per_hour": 123,
"expires_at": "2023-11-07T05:31:56Z",
"deployment_type": "<string>",
"node_count": 123,
"gpus_per_node": 123,
"infiniband_bandwidth_gbps": 123,
"cluster_storage_gb": 123
}
],
"total_count": 123,
"filters_applied": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Query real-time GPU offers across all vendors. This is the primary entry point for finding available compute.
This endpoint accepts a YAML request body, not JSON. Set
Content-Type: application/yaml.Request format
vendor: nebius # Optional: filter by vendor
region: EU # Optional: US, EU, APAC, Other
compute:
gpu_type: H100 # Family name or canonical name
gpu_count: 1 # Number of GPUs
max_price_per_gpu_hour: 5 # Price cap in USD
contract_type: ondemand # ondemand or spot
network: # Optional
supports_cilium: true # Filter to Cilium-capable vendors
Key fields
| Field | Required | Description |
|---|---|---|
compute.gpu_type | Yes | GPU family (e.g., H100) or canonical name (e.g., nvidia-h100-sxm5-80gb) |
compute.gpu_count | No | Number of GPUs (default: 1) |
compute.max_price_per_gpu_hour | No | Max price in USD per GPU per hour |
compute.contract_type | No | ondemand or spot |
vendor | No | Filter to a specific vendor (e.g., nebius, hyperstack, scaleway) |
region | No | Filter to a region group: US, EU, APAC, Other |
Rate limiting
This endpoint is rate-limited to 5 requests per minute per client. Exceeding the limit returns429 Too Many Requests.
Offer expiration
Offers expire after 30 minutes. Use theoffer_id to procure before expiration.
Filtering by vendor
Pass the vendor name directly:vendor: massedcompute
compute:
gpu_type: A100
gpu_count: 1
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/yaml
The body is of type string.
⌘I