PREVIEW · Proposed endpoints and dated plan snapshot · Not ready for public launch
navquote.
Menu
Streaming market data

Keep your
interface moving.

Receive market updates over WebSocket or Server-Sent Events. Choose the transport that fits your application.

Preview: neutral streaming URLs and example connections are pending validation. Samples below are integration drafts, not a live demo.
01 / Choose your connection

Two transports. One starting point.

Both begin with a streaming JWT. Access, token lifetime and connection limits depend on the plan.

Interactive subscriptions

WebSocket

Client Server
Send subscriptions →← Receive updates

Choose it when your client sends subscription messages over the same connection.

One-way updates

Server-Sent Events

Client Server
← Receive an HTTP event stream

Choose it for server-to-client updates using straightforward HTTP tooling.

02 / Generate a credential

Keep the API key
on your server.

Set up the API base and key in the quickstart, then mint a streaming token. Check the response’s success status, token and expiration before connecting.

POST /api/token/generate
Use the returned wsUrl / sseUrl only after confirming the neutral-address contract.
03 / Subscribe and inspect

Wait for actual market data.

These examples show the connection shape. Add expiration handling and recovery for your application.

WEBSOCKET · JAVASCRIPT
Browser WebSocket API · short-lived token only.
SERVER-SENT EVENTS · CURL
Keep credential-bearing URLs out of logs and shared screenshots.
Read the connection correctly

Connected is only the first state.

Build your UI around the last actual market observation, not just whether a socket is open.

  1. Connected

    An acknowledgement means the connection was accepted. Wait for data.

  2. Receiving data

    Read the update type, available fields and market timestamp.

  3. Recovering

    Renew if needed, reconnect and reconcile. Replay is not guaranteed.

Message fields & recovery behavior

On smaller screens, scroll horizontally to read all columns.

What you receiveWhat it establishesWhat your app should do
Connection or subscription acknowledgementThe transport or subscription was accepted.Show “waiting for data” until an update arrives.
quote_updateA quote payload for a symbol.Inspect available values and market timestamps. An update can contain only part of a quote.
price_updateA candle/price subscription update.Inspect the returned candle fields and interval; do not parse it as a quote envelope.
Disconnect, error or expired tokenThe displayed state may be stale.Check credentials, reconnect with backoff, restore subscriptions and reconcile with a REST snapshot where appropriate.
Keep credentials separate

One server-side key.
Purpose-specific tokens.

The token-generation response supplies token, expiresAt, wsUrl and sseUrl. Use the returned addresses after the neutral-address contract has been validated.

Expiration is milliseconds
The token response uses Unix milliseconds for expiresAt, suitable for comparison with Date.now(). Quote and candle timestamps use seconds in the documented examples. Keep those units separate.
SSE message framing matters
The documented stream carries a JSON type inside data: records. Handle ordinary records through onmessage; a JSON type is not an SSE event: name. See the SSE handler example.
Reconnect is not renewal or replay
A browser reconnect reuses the same URL. Renew an expired token through your server and replace the connection. No missed-event replay guarantee has been established.
04 / Connection lifecycle

Plan for the next update.

Can I connect with my long-lived API key?

Use the API key on the server to generate a streaming JWT, then use that short-lived credential for the stream. Do not expose a long-lived key in a browser application.

Does a reconnect recover every missed update?

No replay guarantee has been verified. Reconnect, restore your subscriptions and reconcile current state as needed. Do not assume a gap-free event history.

How long does a token last?

Token lifetime follows plan entitlement. Read expiresAt from the generation response and confirm the active plan in Console. An acknowledgement or heartbeat alone is not a successful data result.

Financial context in your application

Update the view. Keep the market context.

Explore assets & markets
Stock watchlists

Show the session

Build rows around the symbol, currency and market timestamp. A quiet connection can reflect a closed session; it is not necessarily a failure.

Data & availability
Crypto monitors

Keep venues separate

Track the chosen pair and venue through snapshots and updates. Confirm actual messages for each required subscription.

Data & availability
Multi-asset screens

Track freshness per row

Each instrument can have a different update cadence. Validate symbol-level stream access instead of assuming the entire directory is streamable.

Data & availability
Build something your users can use

See where this API fits.

Choose the experience you want to deliver. Follow a concrete path from the first response to the access your application needs.

From the developer guides

Make the next step concrete.

Browse all guides
Streaming

REST vs WebSocket vs SSE for market data

Choose a market data transport by interaction pattern, recovery requirements and credential handling, with examples for reports, watchlists and dashboards.

Streaming

Subscribe to market quotes over WebSocket

Generate a streaming credential, send subscribe_quote, distinguish acknowledgements from quote updates, and plan reconnects without assuming event replay.

Connect your next interface.

One account for API keys, usage and subscriptions.

Get API Key

Continue to our shared account console.