Skip to main content
Exchange is the single trait every venue implements (engine/core/src/exchange/traits.rs). Public methods, grouped by purpose:
GroupMethods
Identityid, name, describe
Marketsfetch_markets, fetch_market
Orderbookfetch_orderbook, fetch_orderbook_history
Orderscreate_order, cancel_order, fetch_order, fetch_open_orders
Positions & Balancefetch_positions, fetch_balance, fetch_balance_raw, refresh_balance
Trades & Historyfetch_trades, fetch_price_history, fetch_fills, fetch_user_activity

Capability flags

Not every exchange implements every method. describe() returns an ExchangeInfo struct with one bool per method:
pub struct ExchangeInfo {
    pub id: &'static str,
    pub name: &'static str,
    pub has_fetch_markets: bool,
    pub has_create_order: bool,
    pub has_cancel_order: bool,
    pub has_fetch_positions: bool,
    pub has_fetch_balance: bool,
    pub has_fetch_orderbook: bool,
    pub has_fetch_price_history: bool,
    pub has_fetch_trades: bool,
    pub has_fetch_user_activity: bool,
    pub has_fetch_fills: bool,
    pub has_approvals: bool,
    pub has_refresh_balance: bool,
    pub has_websocket: bool,
    pub has_fetch_orderbook_history: bool,
}
Calling an unsupported method returns OpenPxError::Exchange(ExchangeError::NotSupported(...)).

Pagination

Methods that paginate return (items, next_cursor). next_cursor is None on the last page; pass it back in params.cursor to advance.
ExchangePagination styleMax page size
KalshiCursor1000
PolymarketOffset500
The TypeScript binding’s fetchMarkets() auto-paginates; Rust and Python expose the cursor.