Rate Limiting
To ensure service stability, API requests are rate-limited per user and endpoint.
Rate Limit Levels
| Level | Requests per Minute | Description |
|---|---|---|
| Level 1 | 120 | Standard API requests |
| Level 2 | 60 | Resource-intensive requests |
| Level 3 | 20 | Heavy server-load requests |
Response Headers
Every API response includes rate limit information in the headers:
| Header | Description |
|---|---|
RateLimit-Limit | Your quota for this endpoint |
RateLimit-Remaining | Remaining requests until reset |
RateLimit-Reset | Time when the limit resets |
Retry-After | When to retry (only on 429 responses) |
Handling Rate Limits
If you exceed the limit, the API returns status code 429 Too Many Requests.
Best practices:
- Check headers - Monitor
RateLimit-Remainingto avoid hitting limits - Implement backoff - When you receive a 429, wait until
Retry-Afterbefore retrying - Batch requests - Combine multiple operations where possible
- Cache responses - Avoid repeated identical requests
Example retry logic (Python):
import time
import requests
def api_request_with_retry(url, headers, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)
if response.status_code == 429:
retry_after = int(response.headers.get('Retry-After', 60))
print(f"Rate limited. Waiting {retry_after} seconds...")
time.sleep(retry_after)
continue
return response
raise Exception("Max retries exceeded")