REST rate limits
Rate limits are applied per API key. When you exceed the allowed request rate, the API returns an HTTP429 Too Many Requests response with the standard error envelope:
Handling a 429
When you receive a429, back off and retry with a delay. A simple exponential backoff strategy works well:
Batch requests and symbol limits
Endpoints that accept asymbols query parameter accept up to 250 symbols per request. Symbols beyond the 250-symbol limit are silently dropped. Split large symbol lists across multiple requests if your universe exceeds this limit.
The
/instruments endpoint has its own limit parameter (default 50, max 200 per page) that controls how many instrument records are returned per request, separate from the 250-symbol batch cap.WebSocket connection limits
You may have one active WebSocket connection per user account at any time. Opening a new connection automatically evicts the previous one — the older connection receives close code4409 and is terminated.
- You cannot fan out to multiple persistent WebSocket clients under the same API key or account.
- If your process restarts and reconnects, the new connection takes over immediately and the old one closes.
- Monitor for close code
4409in your client and treat it as a displacement event rather than an error.
Handling displacement
Best practices
Following these patterns keeps your integration efficient and avoids hitting limits unnecessarily.Use WebSocket for live data
Subscribe to the
quotes, states, and alerts.* WebSocket channels instead of polling REST endpoints in a loop. WebSocket push updates are more efficient and don’t consume REST quota.Cache REST responses
Instrument metadata (
/instruments) and candle history (/candles/{symbol}) change infrequently. Cache responses locally and refresh on a schedule rather than fetching on every request.Batch symbol lookups
Use the
symbols parameter to request data for multiple instruments in a single call instead of making one request per symbol. Stay under the 250-symbol limit per call.Filter at the API
Use query parameters like
timeframe, direction, window_minutes, and limit to narrow responses server-side. Fetching more data than you need wastes quota and increases latency.