Trading
Trading Guide
Place orders, watch fills, manage positions. This chapter walks through trading on SatoriEx end-to-end, from a first curl call to running a quoting bot.
Custodial by default, on-chain when you want it
Your first trade, end-to-end
Use the REST API to read the order book, then place a limit order. Public market data does not require authentication; placing orders does.
# 1) Read the order book
curl https://staging.satoriex.io/api/v1/markets/MKT_ID/orderbook
# 2) Place a limit order (auth required)
# Returns 202 Accepted โ order is queued; fills arrive via WebSocket
curl -X POST https://staging.satoriex.io/api/v1/orders \
-H "Authorization: Bearer $SATORIEX_TOKEN" \
-H "Content-Type: application/json" \
-d '{"market_id":"MKT_ID","outcome_id":"OUT_ID","side":1,"price":4200,"quantity":100}'
# side: 1=buy 2=sell | price: BPS (4200 = 42%) | quantity: sharesReplace MKT_ID and OUT_ID with values from /api/v1/markets. Start with small sizes on a low-volume market while you validate your integration.
Explore the chapter
Order lifecycle
From submit to fill: every state your order moves through and what each one means.
Read moreOrder attribution
Tag orders with a builder code so volume is credited to your integration.
Read moreAuthentication
Session tokens, OAuth scopes, and the headers every trading call needs.
Read moreCancel orders
Single, bulk, and panic-button cancellation patterns โ plus what cannot be cancelled.
Read morePositions
Read your open positions, close them early, and compute P&L from cost basis and current mid.
Read moreCustodial trading
Why custodial trading needs zero per-trade signatures, and where on-chain costs do show up.
Read moreMatching engine
Price-time priority, halts, restarts, and the fairness rules the engine enforces.
Read moreCapital-efficient multi-outcome
Capital-efficient multi-outcome design โ planned, not shipped.
Read more