Authenticated endpoints for viewing positions and order history. Use REST positions for recovery or audit snapshots after reconnects, missed WebSocket messages, and settlement windows.
Get active orders
Returns a list of currently open (active) orders. Requires authentication.
Get active orders › Request Body
symbolFilter by contract instrument symbol
limitMaximum number of results to return (default 50, max 100)
offsetNumber of results to skip for pagination
Get active orders › Responses
Successful response
Get order history
Returns historical orders (filled or cancelled) for the authenticated user. Use status: filled with from and to to retrieve fully filled orders in a bounded time window. The range is [from, to): from is inclusive and to is exclusive. A time-bounded response contains at most limit results and ignores offset; split high-volume periods into non-overlapping ranges. Use /orders/active for open orders.
Get order history › Request Body
statusFilter by order status
symbolFilter by contract instrument symbol
limitMaximum number of results to return. Defaults to 50 and is capped at 1000.
offsetNumber of results to skip for pagination. Offset is ignored when from or to is supplied.
fromInclusive start of the order-closed time range, expressed as Unix epoch milliseconds. Use with to for a UTC daily window.
toExclusive end of the order-closed time range, expressed as Unix epoch milliseconds. from must not be later than to.
Get order history › Responses
Successful response
Get positions
Returns current filled positions for the authenticated user. All query parameters are optional; omitting them preserves the legacy unpaginated, unsorted behavior.
query Parameters
eventTickerFilter positions to a single event ticker (e.g. FEDJAN26). Positions on sub-events whose parentEventTicker matches the value may also be included.
limitMaximum number of positions to return. Clamped to [1, 1000] when supplied. Omit for legacy unpaginated behavior.
offsetNumber of positions to skip for pagination. Floor-clamped to 0 when supplied. Ignored when limit is omitted (the response is unpaginated).
sortSort order. Accepts positionValue, unrealizedPnl, or expiryDate (case-insensitive), optionally prefixed with + (ascending) or - (descending). A bare field name uses each field's default direction: positionValue and unrealizedPnl default to descending; expiryDate defaults to ascending (soonest-first). unrealizedPnl and expiryDate sort NULLS LAST so positions without the sort key sink to the bottom regardless of direction. instrumentId ascending is the final tiebreaker for stable pagination across quote ticks. A malformed sort value silently falls back to -positionValue — no 400 is returned.
Get positions › Responses
Successful response
totalTotal number of positions (for pagination)
Get settled positions
Returns historically settled positions for the authenticated user. Each entry represents a position in a contract that has resolved.
payout— the amount received from settlementresolutionSide— indicates which outcome (yesorno) won.
This endpoint differs from Get positions in that it returns closed positions from settled contracts rather than current open positions.
query Parameters
eventTickerOptional event ticker to filter settled positions to a single event (e.g. FEDJAN26). If omitted, all settled positions for the account are returned.
limitMaximum number of settled positions to return.
offsetNumber of settled positions to skip for pagination.
sortSort order. Accepts date or payout, optionally prefixed with + (ascending) or - (descending). A bare field name defaults to descending. date ascending is rejected and silently falls back to the default order — settled positions are conceptually ordered most-recent-first. A malformed sort value also falls back silently; no 400 is returned.
searchCase-insensitive substring filter. Matches against the event name, contract name, event ticker, or any ancestor category name in the contract's category subtree (up to four levels). Whitespace is trimmed; inputs under 3 characters are dropped (GIN trigram lookup floor); inputs over 64 characters are truncated.
categoryFilter to settled positions whose contract's event belongs to the named category (or any of its descendants in the category tree). Whitespace is trimmed; empty values are ignored.
withCashOutsOpt-in flag. When true, the response carries new sibling fields (cashOuts, totalCashOutProceeds, totalCashOutCostBasis, totalCashOutNetProfit) populated with the qualifying cash-outs in the same account-scoped time window as the returned page's settled positions. When false (default) the response shape is byte-identical to the pre-withCashOuts contract: the positions[] element schema is unchanged regardless of the flag.
Get settled positions › Responses
Successful response
totalTotal number of settled positions across all pages for the current filter set.
totalPayoutSum of payout across all settled positions in the filter set. Retained for binary back-compat with the legacy response shape; field is absent (not null) on the unified backend because computing a roll-up over the full filtered set would require a separate aggregate query (deferred until a partner asks). Play's default OptionHandlers omits absent Option fields rather than emitting null.
totalCostBasisSum of costBasis across all settled positions in the filter set. Retained for binary back-compat; field is absent (not null) on the unified backend (see totalPayout).
totalNetProfitSum of netProfit across all settled positions in the filter set. Retained for binary back-compat; field is absent (not null) on the unified backend (see totalPayout).
Cash-outs (early sells before contract resolution) in the same account-scoped time window as the returned page's settled positions. Field is absent (not null) when withCashOuts=true is not passed on the request. positions[] pagination is unaffected — limit/offset continue to scope positions[] only.
totalCashOutProceedsSum of cashOuts[].proceeds over the returned cash-outs. Field is absent (not null) when withCashOuts=true is not passed on the request.
totalCashOutCostBasisSum of cashOuts[].costBasis over the returned cash-outs. Field is absent (not null) when withCashOuts=true is not passed on the request.
totalCashOutNetProfitSum of cashOuts[].netProfit over the returned cash-outs. Field is absent (not null) when withCashOuts=true is not passed on the request.
Get volume metrics
Returns per-contract share volume metrics for an event, including the authenticated user's taker and maker volumes.
All volumes are in shares (number of contracts traded), not dollar amounts.
totalQty— Total taker volume across all participants for this contractuserAggressorQty— The authenticated user's taker (aggressor) volumeuserRestingQty— The authenticated user's maker (resting) volume, counted when another order fills against the user's resting limit order
An optional time range can be specified to filter trades within a specific window.
Get volume metrics › Request Body
eventTickerThe event ticker symbol
startTimeStart of time range filter (epoch milliseconds). If omitted, defaults to the earliest contract creation time.
endTimeEnd of time range filter (epoch milliseconds). If omitted, includes all trades up to now.
Get volume metrics › Responses
Successful response
eventTickerThe event ticker