POST /orders-v3. The field-by-field reference lives on the
endpoint page.
Prerequisites
You also need your API key, sent asx-sx-api-key. See
Authentication and API key.
Steps
GET /metadata/obv3— chain id, Escrow address, active token, ladder step, size limits.- Round your odds down onto the ladder — a multiple of
oddsLadderStepSize × 10^15. See Odds rounding. - Choose a
timeInForce—GTCto rest,IOC/FOKto execute now. See Time in force. - Sign the eight-field EIP-712
Orderstruct. POST /orders-v3— expect200and a per-order result carryingSUBMITTED, the server-assignedcommandId, and yourclientOrderId/externalUserIdif you set them.- Wait for
ACTIVE—PENDINGis not live. Watch youraccount:orders_v3stream for the transition instead of polling. Or setwaitForOutcome: trueto have the call wait and return each order’s terminaloutcomeinline.
Posting an order does not lock capital, regardless of
timeInForce. Funds are only escrowed when
the order matches — see Risk limits.Posting a GTC order end to end
A non-zero
expiry that falls inside the market’s betting delay plus two seconds is rejected.
Resolve the delay from bettingDelay on GET /metadata/obv3.Batching
POST /orders-v3 takes an array of up to limits.maxCreateOrders orders (currently 10), one
shared maker per batch — the full field rules are on Create orders.
- One maker per request. Every order in the batch must carry the same
maker. Mixed makers are a400. - Batches are not atomic. Each order gets its own entry —
orderId,status(SUBMITTED/FAILED),commandId, andclientOrderId/externalUserIdwhen you set them — in the responseordersarray, and a partial outcome is normal. When you requestwaitForOutcome, eachSUBMITTEDentry also carries anoutcomeobject with its terminalstate;FAILEDentries never carry anoutcome. There is one exception: a duplicateclientOrderIdfails the whole batch. Always read every entry in the array.
Dust remainders
A partial fill that would leave a remainder below
limits.minRestingOrderSizeBaseUnits (0.1 USDC,
or 100000 base units) does not rest that remainder — the engine discards it. The order then goes
terminal: status: "INACTIVE" with inactiveReason: "FILLED".Re-quoting
There is no amend. To move a price: cancel, then post a new order.Related
Create orders
Every field, every validation rule.
Taking liquidity
The same signing and submission path, from the taker’s side.
Time in force
Choosing between GTC, IOC and FOK.
Tracking your orders
Reading your own orders back, and what the API will not tell you.
Market making
Quoting, exposure and re-quote loops.
External user id
Tag orders when one SX account places bets for many people.