Skip to main content
Ondo exposes a native WebSocket endpoint at wss://api.ondoperps.xyz/ws. The SDK discovers this URL from the wsUrl field in the GET /providers response. If you’re using the SDK, subscribe through Streaming rather than connecting to the endpoint directly.

Per-subscription dex field

When subscribing across providers, the per-subscription field that selects the venue is named dex (not provider). For Ondo the value is ondo.
See SDK / Streaming for the full list of normalized channels and the subscription lifecycle.

Channel mapping

The SDK maps each normalized channel to Ondo’s wire channel name: Ondo publishes no mid price on either market-data channel, so markPrice stands in for midPrice in the aggregated market context.

Frames

Login — sent once per connection, before the first authenticated subscribe:
The venue rejects a second login on the same connection. The SDK reads the JWT from the client-held SIWE session; an absent or expired session throws before a login frame is ever sent, so callers re-run the SIWE login. A dropped socket forgets the login and re-authenticates on reconnect. Subscribe — sent per channel, and re-sent verbatim on every reconnect:
resolution is included instead of (or alongside) markets for kLinePerps. Ping — the literal keep-alive payload the SDK sends on its heartbeat interval:

One authenticated address per connection

Ondo’s WebSocket authenticates the whole connection, not per-subscription. Once an authenticated channel (orderUpdates, fills, positions, or accountSummary) is subscribed for one address, subscribing an authenticated channel for a different address on the same connection throws — open a new connection per address instead.