/reserve route) lists reserved GPU capacity. A listing sells whole: you make an offer for the listing, the seller accepts, and the listing becomes your reservation.
Reserve is open to approved organizations. Until your organization is approved, you can still rent on Spot and buy relisted capacity in the Market.
Reserve shows listings whose full quantity is available for a listed term’s minimum
duration, starting at the later of now and the published start date. Availability
refreshes automatically. Your full chosen duration must still be available when
you send an offer and when the seller accepts it.
If a selected listing is no longer available, a dialog identifies the listing by GPU type, listing number, GPU quantity, and region when available, and explains that it is no longer available. Choose Keep browsing to return to the available listings with your current search and filters.
What a listing shows
Each row in Reserve shows:- Listing No.: the listing number, padded with leading zeros to at least four digits, such as
0001. - Type: the GPU type.
- Region: where the capacity is, with a flag for recognized countries such as Thailand.
- Quantity: the listing’s nodes, for example
4 × 8 GPUs. - Start date: the published start date when provided; otherwise, an estimate of today plus the readiness lead time in days. A missing lead time counts as zero days.
- Duration: a single term as text, or up to three selectable terms ordered shortest to longest. Each shows its maximum duration in hours, days, months, or years, or No maximum when uncapped. Months use 30 days and years use 365 days for this display.
- Price: the price per GPU-hour for the selected term.
0001 or L-1), listing UUID, GPU type, or region. Search covers all pages and ignores capitalization. Combine words to narrow results, or clear the search to show all listings. Changing the search returns to the first page.
Use Filters to narrow listings by GPU type, region, access mode, total GPU count, start date, duration, and price per GPU-hour. Multiple choices within a group match any selected value; different groups apply together with search. Duration and price filters use each row’s selected term. Start-date windows include capacity available now; duration ranges use 30-day months and 365-day years. Reset filters removes the filters. Select the Start date heading to switch between earliest and latest availability. Hover or focus a column heading to reveal its sort arrow, then select the heading to sort by that column. Select it again to reverse the order. Sorting covers all pages. Quantity sorts by total GPU count; duration and price use each row’s selected term, with unavailable terms last. Changing the sort returns to the first page. Listings show 10 rows per page. The count and pagination controls stay at the bottom of the listings pane while the rows scroll above them.
Listings refresh on their own; you do not need to reload the page. Select a row to open the listing in the side panel. Its heading shows the GPU type, with the listing number, region, and node/GPU count underneath. The panel shows its specs, access mode, availability, readiness lead time after signing, and financial terms. Compare durations and asking prices using the selectable cards; a single duration appears as plain text. The selected term’s renewal option and fixed down payment appear below. Your price, estimated total, and offer button stay at the bottom of the panel while you scroll.
The shortest term is selected by default. If a listing offers several terms, you can choose another duration and asking-price option in its side panel. The row shows each term’s duration range, or its exact duration for fixed terms. For terms with a duration range, the offer form starts at the minimum and lets you enter a duration within that range. Use the quick buttons to increase or decrease it in steps suited to the available range, or Max to select the term’s maximum duration. Choose a duration that fits before the listing ends, including when availability has already started. Fixed-duration terms use their exact duration. Those options share the same capacity; they are not separate pools of machines. An accepted offer keeps its agreed duration, price, and fixed down payment. The accepted price is your reservation’s total rate per GPU-hour, even when it differs from the advertised listing price.
Listing API responses include an integer listingNumber for reference.
Continue using the listing’s UUID in API paths; the number does not replace it.
Make an offer
1
Open the listing
Select a row to open its side panel. An offer is for every node on the listing. Select a
financial term. A listing with one term selects it automatically. For a term with a range, enter
Duration (hours) within its bounds and the remaining availability window.
2
Set your price
At the bottom of the panel, enter Your price (USD / GPU-hr). It starts at the selected
term’s price. You can offer below or above it; the seller decides. The down payment is fixed by
the selected term. Estimated total updates with your price and your chosen duration for all
GPUs in the listing.
3
Send the offer
Click Make offer. The offer is open until the seller accepts or declines it, you withdraw
it, or the listing sells to another offer. While it is open, the panel shows it with Withdraw
offer. Track it in Nodes under Offers & listings.
After the seller accepts
The listing is your reservation. Its start and readiness date are agreed when the offer is accepted. It appears in Nodes:
Accepted windows are binding. To get value from time you will not use, relist it.
A reservation goes straight to Confirmed.
Sharing a listing
Use Copy link on a listing to grab its share URL. Every share link points at/reserve/{listingId}.
- Not signed in: a read-only page with the GPU, capacity, availability or readiness lead time, and available pricing terms, plus a Reserve button that returns to the listing after login.
- Signed in, organization pending approval: the same read-only page.
- Signed in with an approved organization: Reserve, with the listing open in the side panel.
/listing/{listingId}/og.png and a spec sheet PDF at /listing/{listingId}/spec.pdf. Neither shows offers or who supplies the capacity. The preview and PDF direct readers to the listing for term prices. Unavailable or expired listings cannot be shared.
Use the API
You can browse Reserve and make offers with an API key instead of the console. The key acts as you in its organization, so your organization must be approved. Prices are integer micro-USD per GPU-hour:2500000 is $2.50. The Reserve API reference lists every field and error.
For listings with selectable terms, CLI and MCP offer creation do not yet accept those selections. Make the offer in Reserve, or send the term with the REST request below.
1. Find a listing and its terms
nextCursor until it is absent. Each term has a listingTermsId, a duration range in hours, a price, and a fixed down payment.
2. Make an offer
An offer covers every node on the listing, starting at the later of the listing’s start and now. Send the term’slistingTermsId as listingTermId, your duration in whole seconds within the term’s range, your price, and the term’s downPaymentCents. You can leave out durationSeconds only when the term’s minimum and maximum are equal.
Every offer needs an Idempotency-Key header. Generate a new key for each offer and keep it: if the response is lost, send the same request with the same key to get the original offer back instead of posting a second one.
ornn offers post does not send a term or duration, so it works only on listings without terms. Use REST for listings with terms.
201 with status: open. A retry with the same key returns 200 and the original offer. Errors use detail.code: for example invalid_listing_term, invalid_duration, offer_below_minimum, or window_unavailable when another trade already took the window.
3. Track or withdraw the offer
open until the seller accepts it (accepted) or it is cancelled; cancelReason says why, for example cancelled_by_seller or conflict_with_trade when another offer took the window. An accepted offer’s offerId is also your reservation ID. Read it with Get a reservation; it can take a moment to appear, and starts as confirmed.
If your organization owns a Reserve listing, accept an offer with ornn offers accept --listing-id <listing-id> --offer-id <offer-id> --yes or the accept endpoint.
The MCP server cannot yet send a term or duration either; make offers on listings with terms in Reserve or through REST.
What’s next

Secondary market
Offer on capacity other customers relisted.

Billing and payment
How Spot hours and reservations are paid.