Limits
| Scope | Limit | Window |
|---|---|---|
| Global (all endpoints) | 120 requests | Per minute, per API key |
| AI explain endpoint | 5 requests | Per minute, per API key |
Rate limit headers
Every authenticated response includes these headers:| Header | Description |
|---|---|
X-RateLimit-Limit | Max requests allowed per window |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
Handling 429 responses
When you exceed the rate limit, the API returns429 with a retry_after_seconds field:
Best practices
- Check headers proactively — Slow down when
X-RateLimit-Remainingdrops below 10 - Use pagination wisely — Larger
page_size(up to 200) means fewer requests - Cache responses — Portfolio summary and residual reports don’t change frequently
- Use
updated_since— Incremental sync avoids re-fetching unchanged records - Spread requests — Avoid bursting 120 requests in the first second of a window