Endpoint
Available streams
The WebSocket currently supports two real-time streams:Why WebSocket over polling?
REST polling at window boundaries causes two problems:- 502 errors — Chainlink/Binance takes 1–5s to publish a price after a window opens. Polling at
:00means your request arrives before the price exists. - Rate limits — Hammering the endpoint while waiting burns your 120 req/min budget instantly.
markPrice that matters for prediction-market settlement.
Market types
Supported assets:
btc, eth, sol, xrp, hype, doge, bnb
Connection flow
1. Connect
On connect the server immediately sends aconnected event:
2. Subscribe
Vatic target prices
Send a JSON message to subscribe to one asset across one or more market types:
The server confirms with a
subscribed event and immediately pushes a window_open snapshot for the current window of each subscribed type — so you always have the latest price on connect, without waiting for the next boundary.
Hyperliquid mark price
Send a JSON message to subscribe to the underlying perp mark-price stream:
The server confirms with:
3. Receive price events
At every window boundary the server pushes awindow_open event:
"snapshot": true.
If the upstream price fetch fails after all retries, you receive window_open_error instead: