Rate Limits
The Inpera API uses rate limiting to ensure fair usage and platform stability.
Plan Limits
| Plan | Rate Limit | Window |
|---|---|---|
| Free | No API access | - |
| Pro | 100 requests | 15 minutes |
| Team | 10,000 requests | 15 minutes |
How It Works
Rate limits are applied per user/API key within a 15-minute sliding window.
Example for Pro plan:
- You can make 100 requests in any 15-minute period
- Window resets continuously (not at fixed intervals)
Response Headers
Every API response includes rate limit information:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1703433600
| Header | Description |
|---|---|
X-RateLimit-Limit |
Maximum requests per window |
X-RateLimit-Remaining |
Requests remaining |
X-RateLimit-Reset |
Unix timestamp when limit resets |
Rate Limit Exceeded
When you exceed the rate limit, you'll receive:
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
{
"statusCode": 429,
"message": "Rate limit exceeded. Please wait before making more requests.",
"error": "Too Many Requests"
}
Best Practices
Implement Exponential Backoff
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status === 429) {
const waitTime = Math.pow(2, i) * 1000; // 1s, 2s, 4s
await new Promise(r => setTimeout(r, waitTime));
continue;
}
return response;
}
throw new Error('Max retries exceeded');
}
Cache Responses
Cache GET responses to reduce API calls:
const cache = new Map();
async function getCached(url, ttl = 60000) {
const cached = cache.get(url);
if (cached && Date.now() - cached.time < ttl) {
return cached.data;
}
const data = await fetch(url).then(r => r.json());
cache.set(url, { data, time: Date.now() });
return data;
}
Batch Requests
Combine multiple operations where possible:
// Instead of multiple calls
for (const id of annotationIds) {
await updateStatus(id, 'resolved');
}
// Use batch endpoint (when available)
await batchUpdateStatus(annotationIds, 'resolved');
Need Higher Limits?
Contact [email protected] for custom rate limits on enterprise plans.