This feature is in public preview.
/preview/v2/orderbook/ and require a Bearer token; see
Using the API.
/orderslists individual open and filled orders./windowslists active SKU and delivery-window combinations in a time range./quotereturns the top of book (best bid and best ask) for one exact window./depthreturns the live book aggregated at every SKU and price level./fillslists individual executions produced when orders match.
/windows, /quote, and /depth are derived views of open orders, while /fills is an
execution-level view. Use /windows when you don’t yet know the exact window. The other endpoints
price or trace a window you’ve already picked. To create, cancel, or inspect your own workspace’s
orders, see Orders.
The hardware filter is ?requirements=key:value. Keys are SKU property names such as
accelerator, region, or availability_zone. Values are case-sensitive and match the property’s
value spelling, as in accelerator:h100. Run sf skus list to see the properties a SKU
carries.
Each key takes exactly one value; combine keys with ; to require all of them, as in
accelerator:h100;availability_zone:a. The reserved instance_sku key matches a single SKU by its
ID. The filter covers every SKU that satisfies these requirements.
All timestamps are Unix epoch seconds. Field names use the _at suffix. Delivery-window and range
boundaries (start_at, end_at, range_start_at, and range_end_at) must be aligned to whole
minutes.
Orders
List individual open and filled orders created within the last 30 days whose delivery windows match a time range. Results are anonymized and sorted newest first bycreated_at.
open includes standing and partially filled orders; filled means the order filled completely.
Pending, cancelled, and rejected orders are not returned. Omit status to include both public
statuses, or repeat it to select more than one. Use side=buy for buys or side=sell for sells.
Delivery windows are half-open ranges: [start_at, end_at). window_relation=overlaps is the
default. contained_within requires the order’s full window to be inside the requested range.
exact requires the windows to match.
The range is capped at 30 days. limit defaults to 50 and caps at 200; pass the returned cursor
as starting_after to fetch the next page. The cursor must reference an order created within the
last 30 days; older cursors return a 422 response.
Windows
Enumerate every SKU and delivery window that currently has open orders matching the requirements filter, within a time range.best_bid / best_ask are omitted when that side is empty. Results are sorted ascending by
(start_at, end_at, instance_sku) and cursor-paginated. limit defaults to 50 and caps at 200; the
range is capped at 365 days.
Quote
Get the top of book for one exact window: the highest bid and lowest ask.allocation_schedule_delta: the unfilled nodes at that rate and SKU
over time. If multiple SKUs tie at the best price, the quote returns the SKU that sorts
first by ID. Use /depth to inspect every SKU at that price. The window’s end_at must be in the
future; read past windows through /fills.
Depth
Get the depth of book aggregated by SKU and dollars-per-node-hour rate across the hardware matching the requirements filter.depth defaults to 20 and caps at 100 per side. The
window’s end_at must be in the future; read past windows through /fills.
Fills
List individual executions for one exact delivery window. A single order can produce multiple fills, and each fill records the nodes and price that actually traded.since_at is a lower bound on when the fill was recorded. It defaults to 7 days before the request.
Values more than 30 days before the request return 422.
Results are sorted newest first and cursor-paginated. limit defaults to 50 and caps at 200.
Allocation schedule deltas
allocation_schedule_delta describes how many nodes an order requests or offers during one or
more time intervals.
start_at and end_at set the segment’s time
bounds, while node_count specifies how many nodes apply during that interval. Multiple entries
can describe different node counts over adjacent intervals.
Schedule entries describe half-open intervals [start_at, end_at): the node count applies at
start_at, but not at end_at. Adjacent entries therefore meet without overlapping. All segments
on an order refer to that order’s single instance_sku.
In responses, a non-empty array always ends with a terminator entry whose end_at is null and
node_count is 0, marking the schedule as open-ended and empty after the last segment. A schedule
with no capacity is returned as an empty array. Requests carry only the closed [start_at, end_at)
segments you submit and omit this terminator.
Orders are submitted with one node count over one delivery window, so
allocation_schedule_delta normally contains one segment. filled_allocation_schedule_delta
describes the portion that has executed so far and may contain multiple segments when different
parts of the order fill over different intervals. Subtract the filled node count from the
requested or offered node count at each instant to get the capacity that remains on the book.
For a buy, every filled segment adds to the destination pool’s allocation schedule; for a sell, it
removes that segment. An orderbook fill reports the exact schedule segment that traded. To
calculate the compute represented by a schedule, sum node_count × duration_hours across its
entries.