Rate Limits
The Conviction Public API applies rate limits to ensure service stability and fair access for all users.
#Current Limits
| Layer | Rate Limit | Description |
|---|---|---|
| Burst (edge) | 50 requests / 10 seconds per IP | Counts every request to api.conviction.bet. Going over blocks the IP for 10 seconds. |
| Sustained (application) | 200 requests / 60 seconds per IP, per endpoint | Each /v1/... endpoint keeps its own counter — requests to the market list do not use up the order-book budget. |
Limits are subject to change as the service scales.
#Rate-limit headers
Every response from a /v1/... endpoint carries the state of that endpoint's 60-second counter:
| Header | Description |
|---|---|
X-RateLimit-Limit | The limit for the window (200) |
X-RateLimit-Remaining | Requests left in the current window |
X-RateLimit-Reset | Seconds until the window resets |
#Exceeding Rate Limits
When you exceed the 60-second limit, the API returns a 429 Too Many Requests response:
{
"statusCode": 429,
"message": "ThrottlerException: Too Many Requests"
}The response includes a Retry-After header indicating how many seconds to wait before retrying.
When you exceed the 10-second burst limit, the block comes from the network edge instead: it is still an HTTP 429, but the body is not this JSON, so don't parse it as such.
#Best Practices
- Cache responses when possible
- Use
limitandoffsetto paginate rather than fetching all data at once - Back off exponentially when you receive a 429 instead of retrying immediately
- Spread polling out — a tight loop over many markets hits the 10-second burst limit long before the 60-second one
Was this page helpful?