Skip to main content
This page covers how to connect to the Limitless WebSocket API, how to sign the handshake for authenticated channels, and the full list of client and server events. Each subscription has its own page pairing the subscribe call with the payloads it delivers.

Connection

URL: wss://ws.limitless.exchange Namespace: /markets Transport: WebSocket only (no polling fallback)
No client PING required. The server runs the Socket.IO heartbeat (server-initiated ping / client pong) automatically. Every official Socket.IO client (JavaScript, Python python-socketio, Go, Rust) responds to it out of the box. Do not send your own PING frames. Keep the connection open and rely on the built-in heartbeat and the auto-reconnect flow in WebSocket quick start.
Authenticated channels (positions, order events) require an HMAC-signed handshake. Sign a fixed canonical message — {ISO-8601 timestamp}\nGET\n/socket.io/?EIO=4&transport=websocket\n — with the base64-decoded secret and pass three headers as extraHeaders:
See Authentication for how to generate TOKEN_ID and SECRET. If you use an official SDK, prefer its WebSocket client, which signs the handshake automatically from hmacCredentials (TypeScript) / hmac_credentials (Python) / WithHMACCredentials (Go).

Event reference

Unsubscribing

There is no generic unsubscribe event. Only two channels have an explicit unsubscribe: unsubscribe_market_lifecycle and unsubscribe_unrealized_pnl. subscribe_market_prices, subscribe_positions, and subscribe_order_events have none. Each of those replaces its previous subscription on the same connection when you emit it again, so to drop a market you re-emit the subscribe with the smaller set. To stop everything, disconnect. An unsubscribe event name that the server does not register never gets an acknowledgement, so a client waiting on one times out. Each subscription has its own page pairing the subscribe call with the payloads it delivers:
  • Market data: subscribe_market_prices, newPriceData, orderbookUpdate
  • Positions: subscribe_positions, positions
  • Order events: subscribe_order_events, orderEvent
  • Market lifecycle: subscribe_market_lifecycle, unsubscribe_market_lifecycle, marketCreated, marketResolved
  • Unrealized PnL: subscribe_unrealized_pnl, unsubscribe_unrealized_pnl, unrealizedPnlProjectionChanged