curl --request POST \
--url https://api.ornn.com/commerce/v2/listings/{listingId}/delist \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/commerce/v2/listings/{listingId}/delist"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ornn.com/commerce/v2/listings/{listingId}/delist', 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/commerce/v2/listings/{listingId}/delist",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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/commerce/v2/listings/{listingId}/delist"
req, _ := http.NewRequest("POST", 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.post("https://api.ornn.com/commerce/v2/listings/{listingId}/delist")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/commerce/v2/listings/{listingId}/delist")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"capacityListingId": "eeeeeeee-eeee-4eee-8eee-eeeeeeeeeeee",
"listingNumber": 1188,
"parentReservationId": "11111111-1111-4111-8111-111111111111",
"kind": "secondary",
"state": "delisted",
"gpuSlug": "nvidia_h100_sxm",
"gpusPerNode": 8,
"capacityNodeCount": 2,
"facilityId": "cccccccc-cccc-4ccc-8ccc-cccccccccccc",
"provisioningType": "virtual-machine",
"availableAt": "2026-10-20T00:00:00Z",
"availableUntil": "2026-11-03T00:00:00Z",
"daysToRfs": null,
"cpu": "2x 56-core x86",
"ram": "2 TB",
"storage": "8x 3.84 TB NVMe",
"fabricType": "InfiniBand 3.2 Tbps",
"internet": "10 Gbps",
"createdAt": "2026-10-14T18:30:00Z",
"updatedAt": "2026-10-14T18:30:00Z"
}{
"code": "<string>",
"detail": "<string>"
}{
"detail": {
"code": "forbidden",
"message": "Your account cannot make this change."
}
}{
"detail": {
"code": "listing_has_active_reservations",
"message": "This listing cannot be withdrawn while a non-Spot reservation is active. Wait until it ends and try again."
}
}{
"code": "<string>",
"detail": "<string>"
}Delist your listing
Withdraws a listing your organization owns from new sales. Its unsold time leaves the Market, its Spot asks are cancelled, and running Spot VMs on it end. Windows already sold stay sold. Refused while a non-Spot reservation on the listing is active. No request body is needed.
curl --request POST \
--url https://api.ornn.com/commerce/v2/listings/{listingId}/delist \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/commerce/v2/listings/{listingId}/delist"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ornn.com/commerce/v2/listings/{listingId}/delist', 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/commerce/v2/listings/{listingId}/delist",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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/commerce/v2/listings/{listingId}/delist"
req, _ := http.NewRequest("POST", 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.post("https://api.ornn.com/commerce/v2/listings/{listingId}/delist")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/commerce/v2/listings/{listingId}/delist")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"capacityListingId": "eeeeeeee-eeee-4eee-8eee-eeeeeeeeeeee",
"listingNumber": 1188,
"parentReservationId": "11111111-1111-4111-8111-111111111111",
"kind": "secondary",
"state": "delisted",
"gpuSlug": "nvidia_h100_sxm",
"gpusPerNode": 8,
"capacityNodeCount": 2,
"facilityId": "cccccccc-cccc-4ccc-8ccc-cccccccccccc",
"provisioningType": "virtual-machine",
"availableAt": "2026-10-20T00:00:00Z",
"availableUntil": "2026-11-03T00:00:00Z",
"daysToRfs": null,
"cpu": "2x 56-core x86",
"ram": "2 TB",
"storage": "8x 3.84 TB NVMe",
"fabricType": "InfiniBand 3.2 Tbps",
"internet": "10 Gbps",
"createdAt": "2026-10-14T18:30:00Z",
"updatedAt": "2026-10-14T18:30:00Z"
}{
"code": "<string>",
"detail": "<string>"
}{
"detail": {
"code": "forbidden",
"message": "Your account cannot make this change."
}
}{
"detail": {
"code": "listing_has_active_reservations",
"message": "This listing cannot be withdrawn while a non-Spot reservation is active. Wait until it ends and try again."
}
}{
"code": "<string>",
"detail": "<string>"
}ornn capacity-offers delist --listing-id <listing-id> --yes.Authorizations
Create an organization API key in Account Settings > Developer. Do not send this key to the Kubernetes API server.
Path Parameters
Listing ID (capacityListingId or listingId).
Response
The delisted listing.
A capacity listing's hardware, size, and availability. Read prices from its terms.
primary for Reserve listings; secondary for relisted capacity.
primary, secondary, on_demand draft, available, held, sold, or delisted. Handle unrecognized values.
A short reference number. Use capacityListingId in API paths.
Set on relisted capacity: the reservation it was relisted from.
bare-metal, virtual-machine Readiness lead time in days when the listing has no fixed dates.
GPU interconnect.
Internet bandwidth.
Was this page helpful?