wss://dev.upsidemax.xyz/ws, the server pushes updates as they occur — typically every block (~500 ms) for price channels. Private account channels such as order updates and fills are available to any subscriber who provides their account address, and authenticating first is strongly recommended for forward compatibility.
Connection lifecycle
1
Open the WebSocket connection
Establish a WebSocket connection to
wss://dev.upsidemax.xyz/ws. No HTTP upgrade headers beyond the standard WebSocket handshake are required.2
(Optional) Authenticate
Send an
Auth message to associate the connection with your account. This is required before subscribing to private channels and recommended for all account-level subscriptions. See Authentication for details.3
Subscribe to channels
Send a
subscribe message for each channel you want to receive. You can subscribe to multiple channels on the same connection. See Subscription for the message format.4
Receive push messages
The server pushes messages to you as events occur. Each message includes a
channel field that identifies its source so you can route it to the correct handler.5
Send Ping every 30 seconds to keep alive
Send a standard WebSocket
ping frame (or the JSON {"msg": "Ping"} message) every 30 seconds. The server replies with a Pong to keep the connection alive.Available channels
The table below summarises every channel available on the WebSocket API. Public channels are accessible without any prior authentication step.
* Private channels currently accept the account address directly in the subscription parameters without requiring a prior
Auth message. Authentication is still recommended for future compatibility.
Reconnection
If the connection drops, the client automatically reconnects after 5 seconds. On reconnect, your authentication and subscription state are automatically restored — you do not need to manually re-send yourAuth message or re-subscribe to your channels.
The WebSocket endpoint does not guarantee message ordering across different channels. If you need causal ordering between, for example,
openOrders and orderUpdates, correlate messages using their ts timestamps and bookVersion / order ID fields.Channel quick-reference
l2Book
Full order book snapshots pushed on every block — bids and asks with price, size, and order count.
bbo
Best bid and best ask only — lower bandwidth than l2Book for top-of-book use cases.
trades
All public trades for a contract as they execute on-chain.
candle
Live OHLCV candle updates at any supported interval, with closed-bar events.
orderUpdates
Incremental order state changes — placed, filled, cancelled, and TP/SL events.
openOrders
Initial snapshot of all active orders followed by real-time incremental updates.
userFills
Every fill involving your account — whether you were the taker or the maker.
config
Lightweight notifications when contract configuration changes — new listings, freezes, or parameter updates.