> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ornn.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Buy relisted capacity in the Market

Open **Buy Now** in the sidebar, then **Fixed term**. The **Market** (the `/market` route) lists reserved capacity that other customers and suppliers relisted. Each relisting has an **asking price**. You drag across the time you want and buy it at that price. There are no offers and no waiting for the seller: the window is yours as soon as it is paid.

Every signed-in organization can use the Market. You do not need reservation approval, and relisted capacity has no down payment.

The timeline and order editor follow your console’s light or dark appearance setting.

The **Pay as you go** and **Fixed term** tabs remain available while capacity loads, so you can switch views without waiting for the current view to finish loading.

## The timeline

The Market shows a timeline per GPU type. In the compact view, a one-node bar has a minimum visible height; larger counts scale logarithmically, with labels showing the exact quantity. Each bar is one relisting: its height shows how many nodes are free over time, and windows with no remaining nodes are labeled **Unavailable** without a capacity bar. The part of the bar at the current time shows how much of the capacity is running on [Spot](/guides/spot) right now.

Open the filter icon beside the **Day/Week/Month** selector to search categories and choose **GPU Type** or **Location** from a submenu, and move through upcoming availability by day, week or month. Previous-period navigation stops at the current time. Filters and paging only change what you see; items already in your order stay in it; select **Reset filters** in the filter menu to see all capacity again. **Clear order** in the order form removes your items without changing the filters. The **Now** marker appears only when the current time is within the visible dates. Availability refreshes automatically every 30 seconds; you do not need to reload the page.

Relisted capacity is delivered as a **VM**. Listings show the GPU, node count, facility and region, window, and asking price. Open **Specifications** on an item for the CPU, memory, storage, GPU interconnect, and internet details the listing supplies; fields the listing does not supply are left out. Listings never show who relisted the capacity.

When no capacity is listed, the Market shows **No capacity available yet**. Select **Browse reserved capacity** to open Reserve. The tabs appear when capacity is confirmed in the other market; when neither market has capacity, only the empty state appears. Fixed-term listings with no remaining nodes in any future window do not count as available capacity. Existing order items stay visible when listings change. If capacity cannot be loaded, use **Retry**. If an update fails while the last capacity is still shown, use **Refresh**. A failed request does not mean the Market is empty.

## Buy capacity

**1. Add items to your order**

Drag across a bar to pick a window. It snaps to whole hours and starts no earlier than the next
hour. Drag the quantity grip up or down to choose how many of the listing's nodes you want, or
drag diagonally to set dates and nodes together. Each listing you touch becomes an item in the
**Your order** panel; an order can hold up to 50 items, each with its own dates and node count.

**2. Check each item**

Select your dates on the timeline; the order form automatically selects the lowest-priced
booking option that allows that duration. The order form shows the listing’s allowed durations
as rounded whole hours, with one value when the displayed limits match. Available nodes can
still have minimum and maximum booking lengths; duration shortcuts outside all available booking
options are disabled. You can buy a shorter window if it ends exactly when the listing ends.
Every purchase must still last at least one hour. Click **Max** to set that exact end time. The
maximum booking length still applies. You pay for the window you buy. Every item shows its
location, node count, dates, and subtotal, and the order total adds them up. Select the pencil
icon or the item's bar to adjust it; the same values can be typed in the order panel, and the
calendars use 24-hour UTC times. An item whose dates are no longer available keeps your
requested node count and shows an error: pick available dates before checking out. The **+1h**,
**+3h**, and **+12h** shortcuts set the start relative to now. A shortcut is disabled when that
start falls outside the selected listing's availability.

**3. Check out and purchase**

Click **Checkout** to see how the order is paid, then **Purchase for \$…**. Every item is bought
together, or none of them is. If a seller changes an asking price or someone buys part of your
window first, the purchase is refused and nothing is charged: review the order and purchase
again.

## Prices

Every asking price in the Market already includes Ornn's fees. No fee is added on top of the listing price. The price you see is the price you pay per GPU-hour, and the order total is what you are charged.

## How you pay

You pay for the whole window up front:

Checkout shows your credit balance beside a summary of the selected nodes and dates, credits applied, and amount due by card. You can edit an item before confirming.

* **Under \$10,000** per item: Ornn credits are used first, then your saved card is charged at once. Checkout shows the credits applied and the card charge, and lets you add a card there if you have none saved and your credits do not cover the order. If the charge fails, the purchase is cancelled and the window goes back on the Market.
* **\$10,000 or more** per item: the item is invoiced by wire. It is held for you, and starts once the wire arrives.

After you buy, each item shows as **Paid**, **Confirming payment…**, or **Held for you until the wire arrives**, and links to its reservation. See [Billing and payment](/guides/usage-and-billing).

## After you buy

Each bought stretch is a reservation. It appears in **Nodes** as **Awaiting payment** until it is paid, then **Confirmed** until the window starts, then **Active**.

Your machines are yours for the whole window. If they were running on Spot, the spot VM ends when your window starts. The seller gets the machines back after your window ends.

You can relist part of a reservation you bought in the Market, too. See [Relist capacity](/guides/resale).

## Use the API

You can buy Market windows with an [API key](/api-keys) instead of the console. Every member of your organization can buy; approval is not required. Prices are integer micro-USD per GPU-hour and already include Ornn's fees: `4200000` is \$4.20. The [Market API reference](/api-reference/market/list-schedules) lists every field and error.

The API cannot save a card. Save one in **Billing** before you buy unless your Ornn credits cover the order. [Check for a saved card](/api-reference/billing/payment-method) through the API: the response is `{"saved": true}` when one is saved.

### 1. Find capacity and a term

```bash CLI theme={null}
ornn schedules list --listing-kind secondary --gpu-slug nvidia_h100_sxm
ornn schedules show --listing-id <listing-id>
```

```bash REST theme={null}
export ORNN_API_URL="https://api.ornn.com"
export LISTING_ID="<listing-id>"

curl --fail-with-body \
  "$ORNN_API_URL/v1/markets/schedules?listingKind=secondary&gpuSlug=nvidia_h100_sxm" \
  -H "Authorization: Bearer $ORNN_API_KEY"

curl --fail-with-body "$ORNN_API_URL/v1/markets/schedules/$LISTING_ID" \
  -H "Authorization: Bearer $ORNN_API_KEY"
```

```python Python theme={null}
import os
import requests

API = "https://api.ornn.com"
http = requests.Session()
http.headers["Authorization"] = f"Bearer {os.environ['ORNN_API_KEY']}"

found = http.get(f"{API}/v1/markets/schedules",
                 params={"listingKind": "secondary", "gpuSlug": "nvidia_h100_sxm"},
                 timeout=30)
found.raise_for_status()
listing_id = found.json()["schedules"][0]["listingId"]

read = http.get(f"{API}/v1/markets/schedules/{listing_id}", timeout=30)
read.raise_for_status()
schedule = read.json()["schedule"]
term = next(t for t in schedule.get("terms", []) if t["type"] == "reserved")
print(schedule["capacityWindows"])
print(term["listingTermId"], term["minDurationSeconds"], term["maxDurationSeconds"],
      term["pricePerGpuHourMicroUsd"])
```

Each listing shows its window (`startsAt` to `endsAt`), `capacityWindows` with the free node count over time, and `terms`. Choose a term with `type: reserved` whose `minDurationSeconds` and `maxDurationSeconds` allow your window. A shorter window is allowed when it ends exactly at the listing's `endsAt`. The term's `pricePerGpuHourMicroUsd` is what you pay. Use this price, not the one from the listing's `/commerce/v2/listings/{listingId}/terms` route, which shows the seller's price before fees.

### 2. Buy the window

Send one leg per window. `startsAt` and `endsAt` are whole-second RFC 3339 times inside the listing, at least one hour apart, starting now or later. `nodeCount` is the number of nodes you want; leaving it out buys every node on the listing. Set `askPricePerGpuHourMicroUsd` to the term's price. Up to 50 legs are bought together, or none are.

Every purchase needs an `Idempotency-Key` header. Generate a new key for each purchase and keep it: if the response is lost, send the same request with the same key to get the original purchase back instead of buying twice.

`ornn schedules buy` does not send a term or node count, so it works only on listings without terms and always buys every node. Use REST for listings with terms.

```bash REST theme={null}
export TERM_ID="<listing-term-id>"
export PURCHASE_KEY="$(uuidgen)"

jq -n --arg listing "$LISTING_ID" --arg term "$TERM_ID" \
  '{legs: [{listingId: $listing, listingTermId: $term, nodeCount: 1,
            startsAt: "2026-10-24T00:00:00Z", endsAt: "2026-10-27T00:00:00Z",
            askPricePerGpuHourMicroUsd: 4200000}]}' > purchase.json

curl --fail-with-body -X POST "$ORNN_API_URL/v1/markets/schedules/purchases" \
  -H "Authorization: Bearer $ORNN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $PURCHASE_KEY" \
  --data-binary @purchase.json
```

```python Python theme={null}
import uuid

purchase_key = str(uuid.uuid4())  # reuse only to retry this exact request
response = http.post(
    f"{API}/v1/markets/schedules/purchases",
    headers={"Idempotency-Key": purchase_key},
    json={"legs": [{
        "listingId": listing_id,
        "listingTermId": term["listingTermId"],
        "nodeCount": 1,
        "startsAt": "2026-10-24T00:00:00Z",
        "endsAt": "2026-10-27T00:00:00Z",
        "askPricePerGpuHourMicroUsd": term["pricePerGpuHourMicroUsd"],
    }]},
    timeout=30,
)
response.raise_for_status()
reservation_id = response.json()["purchases"][0]["reservationId"]
print(reservation_id)
```

A new purchase returns HTTP `201` with one `reservationId` per leg. A retry with the same key returns `200` and the original purchase. If the price changed, part of the window sold, or the listing closed, the request fails with `409` (`ask_changed`, `window_unavailable`, or `listing_not_open`) and nothing is bought: read the listing again and buy with a new key.

### 3. Confirm payment

You pay for each reservation up front. Under $10,000, Ornn credits pay first and your saved card is charged at once for the rest. If that charge fails, the reservation is cancelled and the window goes back on the Market. At $10,000 or more, the reservation is invoiced by wire and held until the wire arrives.

Poll [Get a reservation](/api-reference/reservations/get) with each `reservationId`. The reservation can take a moment to appear. Its `status` is `awaiting_payment` until it is paid, then `confirmed` until the window starts, then `active`.

The MCP tool `ornn_schedules_purchase` has the same limits as `ornn schedules buy`.

## What's next

> **[Relist capacity](/guides/resale)**
>
> Sell part of a reservation you hold.

> **[Spot](/guides/spot)**
>
> Rent VMs with 1, 2, 4, or 8 GPUs by the hour.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.