Rate Limits & Credits
How request limits and credits work across plans.
Request rate limits
Requests are rate-limited per plan. The window is 15 seconds. If you exceed the limit, the API returns HTTP 429 and you must wait for the window to reset before retrying.
| Plan | Requests per 15 s |
|---|---|
| Free | 1 |
| Basic | 5 |
| Pro | 30 |
| Expert | 75 |
Credits
A credit is a unit that counts against your plan's monthly allowance. Each API call consumes a certain number of credits depending on the endpoint and what it returns.
Bulk requests and construct limits
A single POST /bulk request can contain up to 20 constructs, each with up to 20 indicators. How many constructs your plan allows per request may differ from the hard cap — see your subscription for plan-specific limits.
Handling 429 responses
When rate-limited, the API returns:
{ "error": "Rate limit exceeded. Your plan allows 30 requests per 15 seconds." }
Wait until the 15-second window expires, then retry. Do not retry immediately in a tight loop — that will keep triggering 429s.
For long-running applications, consider using WebSocket streaming, which maintains one persistent connection and pushes updates without counting per-poll requests.