Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.openpx.trade/llms.txt

Use this file to discover all available pages before exploring further.

Subscribe inputs and receive frames for the unified fills WebSocket channel, crosswalked against the upstream AsyncAPI specs cached under schema/upstream/. Every source entry is one of three types — direct (taken from upstream), synthetic (constructed by OpenPX), or omitted (not exposed upstream).

Coverage

ExchangeDirectSyntheticOmitted
kalshi321
polymarket240

Subscribe payload

Fieldkalshi sourcepolymarket sourceNotes
market_id#/components/messages/subscribeCommand#/components/messages/userSubscriptionRequestkalshi: Requires enable_user_fills=true on the Kalshi WS constructor (private fill channel auto-attaches to every subscribe(market_ticker)). polymarket: Polymarket markets[*] (condition_id) on the user channel. Auth is required: API key + secret + passphrase derived from the L1-signed CLOB credentials.
outcomeomittedsynthetickalshi: Fill frames carry side and the matched outcome; OpenPX reads it directly into ActivityFill.outcome. polymarket: Populated only when register_outcomes was called; otherwise None.

Receive messages

Variantkalshi sourcepolymarket sourceNotes
Fill#/components/messages/fill#/components/messages/tradekalshi: Authenticated Kalshi fill — mapped to ActivityFill \{ source_channel: "kalshi_user_fill", liquidity_role: Maker|Taker \}. polymarket: Polymarket user-channel trade event = a fill from the user’s perspective. Mapped to ActivityFill \{ source_channel: "polymarket_user_trade" \} with liquidity_role derived from trader_side.

Session events

Variantkalshi sourcepolymarket sourceNotes
Connectedsyntheticsynthetic
Reconnectedsyntheticsynthetic
Error#/components/messages/errorResponsesynthetic

Source specs

Tables are auto-generated from schema/mappings/. CI fails if any direct ref no longer resolves in the cached upstream AsyncAPI spec; the daily upstream-refresh PR surfaces drift here.