Rate Limits
Sentinel uses sliding-window rate limiting to ensure fair usage and platform stability.
Limits by Endpoint Category
| Category | Limit | Window | Scope |
|---|---|---|---|
| Auth | 10 requests | 1 minute | IP |
| Upload | 20 requests | 1 minute | User |
| Chat | 60 messages | 1 minute | User |
| General API | 300 requests | 1 minute | User |
| Export | 10 requests | 1 minute | User |
| Webhook | 100 deliveries | 1 minute | Webhook |
Response Headers
Every response includes rate limit metadata:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 247
X-RateLimit-Reset: 1715769600
X-RateLimit-Retry-After: 45
| Header | Meaning |
|---|---|
X-RateLimit-Limit |
Maximum requests allowed in window |
X-RateLimit-Remaining |
Requests remaining in current window |
X-RateLimit-Reset |
Unix timestamp when window resets |
X-RateLimit-Retry-After |
Seconds until you can retry (only on 429) |
429 Too Many Requests
When exceeded:
{
"status_code": 429,
"error": "Rate limit exceeded",
"detail": "You have exceeded 300 requests per minute. Retry after 45 seconds.",
"retry_after": 45
}
Handling:
import time
response = requests.get(url, headers=headers)
if response.status_code == 429:
retry_after = int(response.headers.get("X-RateLimit-Retry-After", 60))
time.sleep(retry_after)
response = requests.get(url, headers=headers)
Burst Behavior
Sentinel allows short bursts up to 2× the limit for 5 seconds. This accommodates:
- Batch uploads
- Page load sequences
- Report generation spikes
Sustained traffic above the limit triggers 429s.
Increasing Limits
Contact your Admin or support@centricity.co.in to request limit increases. Include:
- Use case description
- Expected peak traffic
- Current usage metrics
Premium and Dedicated tier partners receive higher default limits.