Per-tier limits
| Tier | Requests / sec | Requests / min | Concurrent backtests | Markets / backtest |
|---|---|---|---|---|
| Free | 1 | 30 | 1 | 5 |
| Pro ($19.90 / mo) | 10 | 300 | 2 | 20 |
| Plus ($29 / mo) | 25 | 1,000 | 5 | 100 |
| Enterprise | Custom | Custom | Custom | Custom |
Response headers
Every response (including 429s) carries:Remaining-* falls as you consume, Reset-* is the seconds until the
window rolls over. If Remaining-Sec hits 0 we return 429 Too Many Requests with Retry-After: <seconds> on the response.
Recommended client pattern
What counts toward the limit
- Every
/v1/*HTTP call counts as 1 request, regardless of payload size. - WebSocket subscriptions count as 1 connection (the messages flowing inside don’t consume rps).
- Backtest jobs count as 1 for the POST + 1 per poll on the status endpoint.
What does NOT count
/health— anonymous, untracked./api/audit-public(the public audit summary) — anonymous, edge-cached.
Hitting the per-second cap is a wider-than-typical client problem. If
your bot is correctly batching it should mostly stay well under 5 rps.
If you find yourself architecturally needing more than the Plus tier,
email contact@polyquantlab.com — we’ll
size an Enterprise plan to your shape.