Limits by plan
| Plan | General endpoints | Strategy endpoints |
|---|---|---|
| Free | 30 req/min | — |
| Pro | 120 req/min | 5 req/min |
| Enterprise | Custom | Custom |
POST /v1/signals, POST /v1/signals/portfolio) have a separate, lower rate limit because they trigger computationally expensive research pipelines.
429 responses
When you exceed a rate limit, the API returns429 Too Many Requests:
Retry-After header tells you how long to wait (in seconds).
Best practices
Exponential backoff
When you receive a 429, wait and retry with increasing delays:Cache responses
Analysis results are deterministic for a given market at a point in time. Cache them locally to avoid redundant calls:- Market listings — Cache for 1-5 minutes
- Analyses — Cache based on the
freshnessfield (fresh = valid for hours) - Arbitrage feed — Cache for 1-5 minutes (use
/arbitrage/livefor real-time) - Calibration — Cache for hours (changes slowly)
Batch with screening
Instead of callingGET /v1/markets/{platform}/{market_id} for each market individually, use:
GET /v1/markets?limit=100to list markets in bulk (1 call vs 100)POST /v1/screento filter markets server-side before analyzing individually