WebSockets
Charting WebSocket
Real-time WebSocket API for TradingView chart data. Stream live quotes and trades for equities and options. Connect, authenticate, then subscribe to symbols.
WSS
What this stream is for. This WebSocket is a charting-specific feed designed to plug straight into the TradingView Charting Library or any chart widget that follows the TradingView data shape. If you’re rendering candlestick or line charts in your app and need them to update in real time, use this feed. If you need full market depth, Greeks, or T&S, use the Market Data WebSocket instead.
Key Features
Key Features
Connect Then Authenticate
Open a WebSocket to the endpoint, then send a request to POST /auth with your token. Subscribe only after authSuccess.
Real-Time Quotes
Stream live bid/ask, last price, OHLC, volume, and change for charting.
Real-Time Trades
Receive last-trade updates (price, size, timestamp) for tape and chart integration.
Subscribed Quotes
Subscribe to one or more symbols; receive event messages with quote and trade data for each subscribed symbol.
TradingView Format
Quote and trade payloads use TradingView-friendly field names for easy integration.
Equities & Options
Support for stock tickers and OSI option symbols.
Keep-Alive
Ping/pong for connection health; optional correlation ID for pong.
Connection Details
Connection Details
Endpoint
Connect to the WebSocket at/v1/charts/ws.Production: wss://api.aries.com/v1/charts/wsStaging:
wss://api.aries.com/v1/charts/wsHealth check: GET /tv/health (HTTP)Authentication
Authentication is required. Use an OAuth2 access token (e.g. fromPOST /v1/oauth2/token). After the connection is open, send a request message with method POST, path /auth, and body { "token": "<your_access_token>" }. Wait for a response with action authSuccess before sending subscribe messages. If the server returns authRequired or error, authentication failed (e.g. invalid or expired token).This WebSocket follows a TradingView-compatible message format. All request/response messages use the shared envelope:
type, id, payload (with method, path, body for requests).Supported Symbols
Supported Symbols
Equities
Standard stock ticker symbols (e.g.,AAPL, MSFT, GOOGL, TSLA). Use them exactly as a brokerage screen would display them.Options
Option contracts use OSI (Options Symbology Initiative) symbols. Format:ROOT + YYMMDD + C/P + strike-in-cents (e.g., AAPL240119C00150000 is the AAPL Jan-19-2024 $150 Call).Message Envelope
Message Envelope
Every message you send or receive uses the same outer JSON shape:
Data Types
Data Types
The subscription
payload.type controls what kind of data the server streams back:quotes(default) — Bid/ask, last price, OHLC, volume, change, and change percent. This is what most chart widgets need for the price/quote display.bars— Accepted as a subscriptiontype, but the server currently streams the samequotes-shaped quote/trade events for abarssubscription. It does not emit distinct OHLC bar/candle objects, resolutions, or intervals today. Usequotesunless you have a specific reason to sendbars.
Use Cases
Use Cases
Live Chart Updates
Display real-time price movements on interactive charts.
TradingView Widgets
Feed real-time data into TradingView charting library or embedded widgets.
Quote Displays
Show last price, bid/ask, and volume in chart widgets (after authenticating).
Technical Analysis
Provide data for indicators and overlays in charting tools.
Connection
Connect to the Charting WebSocket the same way you would the Market Data WebSocket: establish the connection, then authenticate, then subscribe to symbols to receive real-time quotes and trades.Connect to the endpoint
Open a secure WebSocket connection to:Authenticate
Immediately after the connection is open, send one request message to authenticate. Do not send subscribe messages until you receive a successful auth response. Send the following auth message:type: "response", with payload.action: "authSuccess", optional payload.id (echoed from request), payload.timestamp (Unix milliseconds), and payload.data.expiresIn (session expiry in milliseconds).
Server responds (failure): payload.action: "authRequired" or payload.action: "error" with payload.error (e.g. “token is required”, “authentication failed”). Reconnect or send a new auth request with a valid token.
Subscribe to symbols
After authSuccess, send subscribe messages to start receiving quote and trade event messages for the requested symbols. See Subscribing to Chart Data below.Subscribing to Chart Data
After you have connected and authenticated, you can subscribe to real-time quotes (and trades) for one or more symbols. Each subscription uses a subscribe message; the server then sends event messages containing quote/trade data for those symbols.Basic subscription structure
Send a subscribe message withtype fixed as "subscribe", any id you want (used to correlate the server’s responses), and a payload describing what you want to receive:
Full message to send:
Subscription examples
Single symbol (quotes)
Single symbol (quotes)
Subscribe to real-time quotes for one equity:You will receive event messages with
payload.type: "quotes" and payload.symbol: "AAPL" containing payload.data.quote and payload.data.trade.Multiple symbols (quotes)
Multiple symbols (quotes)
Subscribe to quotes for several symbols by sending one subscribe message per symbol (each with its own Second symbol:Third symbol:The server sends event messages for each subscribed symbol; use
id if needed):First symbol:payload.symbol to route updates.Option contract (quotes)
Option contract (quotes)
For option contracts, use the OSI symbol:
Another equity (quotes)
Another equity (quotes)
Connection Flow
1
Connect
Open a WebSocket connection to
wss://api.aries.com/v1/charts/ws2
Authenticate
Send a request message:
type: "request", payload: { "method": "POST", "path": "/auth", "body": { "token": "<access_token>" } }. Wait for a response with payload.action: "authSuccess".3
Subscribe
Send subscribe messages with
payload.type and payload.symbol for each symbol you want.4
Receive events
Process event messages containing quote and trade data for your subscribed symbols.
5
Unsubscribe (optional)
Send unsubscribe with the same symbol to stop updates.
6
Keep-Alive (optional)
Send ping periodically; server responds with pong.
Client → Server Messages
Subscribe
Providepayload.type and payload.symbol; the full message is built as:
Unsubscribe
Stop receiving updates for a symbol. Onlypayload.symbol is required — the server unsubscribes by symbol, so payload.type is not needed and is ignored.
Ping
Keep-alive; server responds with pong. Optionalid is echoed in the pong.
Server → Client Messages
Event (quote/trade update)
Server pushes quote and/or trade data for subscribed symbols.The field names below (
ch, chp, lp, n, v, etc.) are TradingView’s short-form keys. They look cryptic but they’re standardized — the TradingView Charting Library expects exactly these names. Do not rename them in your handler if you’re piping data into a TradingView widget.payload fields:
payload.data fields:
payload.data.quote.v fields — these are the values the chart actually plots. All numbers and all optional (only changed fields may be present in an update):
payload.data.trade fields — emitted whenever a new print appears on the tape:
Response (auth or error)
Auth success:type: "response", payload.action: "authSuccess", optional payload.id (echoed request ID), payload.timestamp (Unix milliseconds), payload.data.expiresIn (session expiry in milliseconds).
Error (e.g. invalid subscribe): type: "response", payload.error with message.