curl --request GET \
--url https://api.ornn.com/v1/markets/schedules \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/v1/markets/schedules"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ornn.com/v1/markets/schedules', 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.ornn.com/v1/markets/schedules",
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.ornn.com/v1/markets/schedules"
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.ornn.com/v1/markets/schedules")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/markets/schedules")
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{
"schedules": [
{
"listingId": "eeeeeeee-eeee-4eee-8eee-eeeeeeeeeeee",
"listingKind": "secondary",
"gpuSlug": "nvidia_h100_sxm",
"gpusPerNode": 8,
"nodeCount": 2,
"nodeIds": [
"33333333-3333-4333-8333-333333333333",
"12121212-1212-4212-8212-121212121212"
],
"startsAt": "2026-10-20T00:00:00Z",
"endsAt": "2026-11-03T00:00:00Z",
"status": "active",
"cancelReason": null,
"acceptedWindows": [
{
"startsAt": "2026-10-21T00:00:00.000Z",
"endsAt": "2026-10-23T00:00:00.000Z",
"isMine": false
}
],
"capacityWindows": [
{
"startsAt": "2026-10-20T00:00:00.000Z",
"endsAt": "2026-10-21T00:00:00.000Z",
"nodeCount": 2
},
{
"startsAt": "2026-10-21T00:00:00.000Z",
"endsAt": "2026-10-23T00:00:00.000Z",
"nodeCount": 1
},
{
"startsAt": "2026-10-23T00:00:00.000Z",
"endsAt": "2026-11-03T00:00:00.000Z",
"nodeCount": 2
}
],
"typedTerms": true,
"terms": [
{
"listingTermId": "88888888-8888-4888-8888-888888888888",
"type": "reserved",
"minDurationSeconds": 86400,
"maxDurationSeconds": 604800,
"pricePerGpuHourMicroUsd": 4200000,
"downPaymentCents": null,
"renewable": false
}
],
"askPricePerGpuHourMicroUsd": 4200000,
"spotPricePerGpuHourMicroUsd": 4200000,
"spotGpusInUse": 8,
"spotGpusOffered": 0,
"isMine": false
}
]
}{
"detail": {
"code": "invalid_request",
"message": "Check the request details and try again."
}
}{
"code": "<string>",
"detail": "<string>"
}{
"code": "<string>",
"detail": "<string>"
}{
"code": "<string>",
"detail": "<string>"
}List tradable listings
Lists listings that can be traded now, with sold windows, free capacity over time, and terms. Use listingKind secondary for the Market (relisted capacity, open to every member of your organization) and primary for Reserve (shown only to approved organizations; otherwise silently omitted). Listings offered only on Spot are not included. Prices are what you pay, fees included. The response does not include offers; read one listing for its offers.
curl --request GET \
--url https://api.ornn.com/v1/markets/schedules \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/v1/markets/schedules"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ornn.com/v1/markets/schedules', 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.ornn.com/v1/markets/schedules",
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.ornn.com/v1/markets/schedules"
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.ornn.com/v1/markets/schedules")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/markets/schedules")
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{
"schedules": [
{
"listingId": "eeeeeeee-eeee-4eee-8eee-eeeeeeeeeeee",
"listingKind": "secondary",
"gpuSlug": "nvidia_h100_sxm",
"gpusPerNode": 8,
"nodeCount": 2,
"nodeIds": [
"33333333-3333-4333-8333-333333333333",
"12121212-1212-4212-8212-121212121212"
],
"startsAt": "2026-10-20T00:00:00Z",
"endsAt": "2026-11-03T00:00:00Z",
"status": "active",
"cancelReason": null,
"acceptedWindows": [
{
"startsAt": "2026-10-21T00:00:00.000Z",
"endsAt": "2026-10-23T00:00:00.000Z",
"isMine": false
}
],
"capacityWindows": [
{
"startsAt": "2026-10-20T00:00:00.000Z",
"endsAt": "2026-10-21T00:00:00.000Z",
"nodeCount": 2
},
{
"startsAt": "2026-10-21T00:00:00.000Z",
"endsAt": "2026-10-23T00:00:00.000Z",
"nodeCount": 1
},
{
"startsAt": "2026-10-23T00:00:00.000Z",
"endsAt": "2026-11-03T00:00:00.000Z",
"nodeCount": 2
}
],
"typedTerms": true,
"terms": [
{
"listingTermId": "88888888-8888-4888-8888-888888888888",
"type": "reserved",
"minDurationSeconds": 86400,
"maxDurationSeconds": 604800,
"pricePerGpuHourMicroUsd": 4200000,
"downPaymentCents": null,
"renewable": false
}
],
"askPricePerGpuHourMicroUsd": 4200000,
"spotPricePerGpuHourMicroUsd": 4200000,
"spotGpusInUse": 8,
"spotGpusOffered": 0,
"isMine": false
}
]
}{
"detail": {
"code": "invalid_request",
"message": "Check the request details and try again."
}
}{
"code": "<string>",
"detail": "<string>"
}{
"code": "<string>",
"detail": "<string>"
}{
"code": "<string>",
"detail": "<string>"
}ornn schedules list --listing-kind secondary. See Buy relisted capacity for the complete purchase flow.Authorizations
Create an organization API key in Account Settings > Developer. Do not send this key to the Kubernetes API server.
Query Parameters
primary (Reserve) or secondary (Market). Omit for both.
primary, secondary Only listings for this catalog GPU slug.
RFC 3339 time. Only listings that end after it.
RFC 3339 time. Only listings that start at or before it.
Response
Tradable listings.
Show child attributes
Show child attributes
Was this page helpful?