Rate limits
Per-plan request and usage limits.
Limits by plan
| Plan | Requests / min | API calls | Metrics | History |
|---|---|---|---|---|
| Free trial (3 days) | 10 | 100 total | All | 1 day |
| Starter | 30 | 5,000 / month | Basic tier (classical) | 7 days |
| Pro | 120 | 50,000 / month | Basic + Pro (adds AI) | 90 days |
| Enterprise | 600 | Unlimited | All (incl. quantum) | Unlimited |
Current plans and prices: madjik.io/pricing.
Check your own limits at any time with GET /v1/subscription.
When you exceed a limit
The API returns 429 with a JSON body explaining which limit you hit:
{"detail": "Rate limit exceeded. Your plan allows 30 requests per minute."}
{"detail": "Usage limit exceeded. Used 5000/5000 API calls. Upgrade at https://www.madjik.io/pricing/"}
The per-minute window is rolling. Responses do not currently include
X-RateLimit-* headers — treat any 429 as the signal to back off.
Best practices
- Cache responses — most metrics update on multi-minute cadences (each metric page lists its cadence).
- Batch requests —
GET /v1/metrics?metric_ids=M10004,M50014,M50030fetches many metrics in one call. - Use webhooks — subscribe to
metric.updatedevents instead of polling; see the API reference. - Back off exponentially on 429s.