Stream real-time quotes using WebSockets (Socket.IO). Authenticate with JWT and subscribe to symbols for live bid/ask updates.
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);
});
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();
};
Yes. We provide real-time market data over WebSockets (Socket.IO) for PRO users.
No. WebSocket market data is available to PRO subscribers. Basic users can still access REST endpoints.
Live quotes over WebSockets. Portfolio snapshots are available via SSE on a separate endpoint.