curl --request GET \
--url https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/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://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"source": "<string>",
"requirement": {
"min_vram_gb": 123,
"min_compute_capability": 123,
"cloud_policy": "<string>",
"max_usd_per_hour": 123,
"describe": "<string>"
},
"datacenters": [],
"offers": [],
"pinned": {
"forced": false
},
"market_error": "<string>",
"fetched_at": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Get Plane Offers
What the provider is selling for THIS plane in datacenter, right now,
with a verdict and a reason on every card.
NEVER 500s. A failed market read comes back 200 with source =
unavailable, market_error set and the offline catalogue clearly
labelled: this screen is opened DURING an incident, and failing it is a
second incident. A serverless plane is a 400 — it buys an endpoint, not a
card, so there is genuinely no hardware to choose.
curl --request GET \
--url https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/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://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.peachdeskai.com/api/v1/sa/gpu/planes/{key}/offers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"source": "<string>",
"requirement": {
"min_vram_gb": 123,
"min_compute_capability": 123,
"cloud_policy": "<string>",
"max_usd_per_hour": 123,
"describe": "<string>"
},
"datacenters": [],
"offers": [],
"pinned": {
"forced": false
},
"market_error": "<string>",
"fetched_at": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Interactive user session: the login JWT, sent as Authorization: Bearer <token>.
Path Parameters
Response
Successful Response
GET /sa/gpu/planes/{key}/offers — the live market for one plane.
source is not decoration. live is what the vendor said just now;
offline is our published price list (the lookup is switched off);
unavailable is the same list after a failed read, with market_error
saying what broke. Presenting the last two as though they were the first is
the confident-false-claim this screen exists to stop.
What the plane NEEDS, echoed so the table's verdicts can be read rather than taken on trust.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The plane's stored hardware pin, exactly as the server holds it.
Show child attributes
Show child attributes

