Estimate an order
⚠️ This endpoint is in public preview.
Estimate a buy or sell order before placing it.
Authorizations
Create an API token using sf tokens create or at https://sfcompute.com/dashboard/tokens.
Body
- Option 1
- Option 2
Key/value filters on instance SKU properties.
Keys are the property names instance SKUs carry on GET /v2/instance_skus (e.g. accelerator); values match each property's value spelling. The reserved instance_sku key pins to a single SKU by id.
Empty map = no constraints.
Order start: a time on the allocation schedule grid, or the current time.
1738972800
Order duration in seconds, a multiple of 60. The order must end on the allocation schedule grid.
x >= 0Number of nodes. Must be positive.
"buy"Pool that receives compute when the order fills. Omit to get an estimate without pinning to a pool. The response body then returns a placeholder you must replace before submitting to /v2/orders.
(pool_[0-9a-zA-Z_-]{1,21})|(sfc:pool:[a-zA-Z0-9._-]+(:[a-zA-Z0-9._-]+){2,2})"pool_k3R-nX9vLm7Qp2Yw5Jd8F"
If true, the estimate models an order that may fill partially — fewer nodes and/or a subset of the requested time window — instead of one that fills completely or not at all. Send the same value you will send as allow_partial on POST /v2/orders, or the estimate answers for a different order than the one you place. Absent means all-or-nothing.
The most you will pay. The estimate models a buy limited to this rate instead of one that takes any price, so it answers what an order at this limit would fill: the matched part's average rate stays at or under it, and when nothing can match within it, the response is unavailable with reason no_availability. The quoted rate never exceeds this value. Absent means any price.
^\d+\.\d+$"18.000000"
Response
Estimate result.
- Option 1
- Option 2
Ready-to-submit body for POST /v2/orders, priced at the estimated rate. It is an estimate, not a promise to fill: the market can move before you post it, and when the match combines resting orders at different prices, posting it verbatim can fill less than estimated or nothing at all. For an allow_partial estimate that matched only part of the order, the price is the rate over the part that matched.
Fee policy for the matched instance SKU.
"quoted"Node-minutes the quoted rate was derived over, present only when the estimate matched part of the order rather than all of it. To estimate the execution total, multiply the rate by this area in node-hours (matched_node_minutes / 60), not by the full allocation_schedule_delta rectangle.
When absent, the whole order matched and the rectangle is the area to price. For a buy the product can overstate the execution total: its rate is derived over the order's remaining window less one minute, so it still clears if placement lands a minute later, and is capped at limit_price_dollars_per_node_hour when one is sent.
A partial quote's rate is rounded down for a sell and up for a buy, which puts the product within $0.000001 per matched node-minute of the exact total.
Treat this area as an estimate rather than a guarantee: when the match combines resting orders at different prices, posting the quoted rate as a limit may fill less than this.
The allocation the estimate actually matched. It can be smaller than the requested schedule: an allow_partial estimate may match fewer nodes or less time, and an order that starts now cannot fill the minute already under way. Like the rate, it is an estimate, not a promise to fill.
Maintenance windows for the matched instance SKU overlapping the order's delivery window.
- Option 1
- Option 2