Skip to main content
This feature is in public preview.
Orders are how you acquire and release compute time. A buy order increases your pool’s allocation schedule. A sell order decreases it and returns credits to your balance.

Buy orders

Place a buy order to get compute time on a pool. --max-rate is the most you’ll pay in dollars per node per hour. You can also use --max-price to set a maximum total for the order instead.
If the market has availability at your rate, the order fills immediately. If not, the order is cancelled by default (immediate-or-cancel). To keep the order on the book until it fills or you cancel it, use --allow-standing.

Pin to an instance SKU

Every order is pinned to a single instance SKU; the order fills only on that SKU. Pass --instance-sku <id> to pick one directly:
Running sf orders create without --instance-sku opens an interactive picker that shows every registered SKU’s name, id, and properties. Run sf instance-skus list to browse them beforehand. See Instance SKUs for the full model.

Sell orders

Sell back compute time you own. This is useful when you have allocated time you no longer need.
When a sell order fills, credits are added to your balance and your pool’s allocation decreases. Instances on that pool that no longer have allocated time will terminate.
Sell orders are not guaranteed to fill. Use --allow-standing to keep the order on the book until a buyer matches.

Sell fees

A resale fee is deducted from the fill price when a sell order executes. The fee is dynamic and can change at any time. You receive the fill price minus the fee as credits. There are no fees on buy orders.

Order statuses

Check an order

List orders

To list orders across your entire organization, use --all:
Filter by side or status.
Filter by time range.
--created-after and --created-before accept a datetime, Unix timestamp, or a duration like 24h or 7d (meaning 24 hours or 7 days ago, respectively). You can also use --since and --until as aliases.

Cancel an order

Cancel a standing order that hasn’t filled yet.

Time formats

Order start and end times snap to hour boundaries. The CLI accepts several time formats:
  • now — current time
  • in 6h, in 2d — relative time
  • tomorrow, mar 15 — natural language dates
  • 2025-03-15T10:00:00Z — ISO 8601
  • Unix timestamps
Duration can be specified instead of an end time: 1h, 7d, 2w.

Allocation schedule deltas

allocation_schedule_delta describes how many nodes an order requests or offers during one or more time intervals. An allocation_schedule_delta JSON entry mapped to eight nodes over a time interval. start_at supplies the time for vertices A and B, end_at supplies the time for C and D, and node_count supplies the value for B and C. Each object in the array is one schedule segment. 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. 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.

API reference

See the Orders API for programmatic access.