Docs navigation
Rate limits
Per-minute, daily, and result-count limits
Authenticated data routes are rate limited by both minute and day. The exercise list endpoint also applies plan-based result caps and free-tier pagination depth rules.
Tier limits
| Tier | Daily | Per minute | Max results/request |
|---|---|---|---|
| Free | 100 | 5 | 20 |
| Starter | 1000 | 30 | 50 |
| Pro | 10000 | 100 | 100 |
| Business | 100000 | 500 | 100 |
Header behavior
- Authenticated data routes include rate limit headers. `GET /v1/health` is excluded.
- Successful authenticated responses report the current daily window.
- `429 RATE_LIMIT_EXCEEDED` responses report the window that was exceeded, either `minute` or `day`.
- `Retry-After` is only returned on `429` responses.
- If Redis is unavailable, successful authenticated responses can fail open with `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` all set to `-1`.
Pagination behavior
- `limit` is validated up to 100 and then clamped to your plan's per-request result cap.
- Free-tier pagination depth is capped at `offset + limit <= 500`.
- Pagination-depth violations return `403 PAGINATION_DEPTH_EXCEEDED`.
Successful authenticated response headers
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 82
X-RateLimit-Reset: 1775184000429 response headers
X-RateLimit-Limit: 5
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1775182500
Retry-After: 32