WebSocket Market Data

Stream real-time quotes using WebSockets (Socket.IO). Authenticate with JWT and subscribe to symbols for live bid/ask updates.

Subscribe to Quotes (Node)

import { io } from 'socket.io-client';

const socket = io('https://api.paperinvest.io/v1/ws/market', {
  path: '/socket.io',
  transports: ['websocket'],
  auth: { token: 'Bearer YOUR_JWT' },
});

socket.on('connected', (info) => {
  console.log('Connected:', info);
  socket.emit('subscribe', { symbols: ['AAPL','MSFT','NVDA'], channels: ['quote'] });
});

socket.on('quote', (q) => {
  console.log('Quote:', q.symbol, 'bid', q.bid, 'ask', q.ask);
});

socket.on('error', (err) => {
  console.error('WS error:', err);
});

Portfolio Stream (SSE)

const es = new EventSource('https://api.paperinvest.io/v1/stream/portfolio/PORTFOLIO_ID', {
  withCredentials: false
});

es.onmessage = (evt) => {
  const snapshot = JSON.parse(evt.data);
  console.log('Equity:', snapshot.totalEquity, 'BP:', snapshot.buyingPower?.dayTrade);
};

es.onerror = (e) => {
  console.error('SSE error', e);
  es.close();
};

FAQ

Do you support WebSockets?

Yes. We provide real-time market data over WebSockets (Socket.IO) for PRO users.

Is WebSocket market data available on the free tier?

No. WebSocket market data is available to PRO subscribers. Basic users can still access REST endpoints.

What can I stream?

Live quotes over WebSockets. Portfolio snapshots are available via SSE on a separate endpoint.