Get Started
Rate Limits
Understanding Vetigen API rate limits, throttling, and retry strategies.
Rate Limits
The Vetigen API enforces rate limits to protect service stability.
Default Limits
| Key Type | Per Minute | Per Hour |
|---|---|---|
| Integration | 60 requests | 1,000 requests |
| Device | 120 requests | 3,000 requests |
| Partner | 300 requests | 10,000 requests |
Rate Limit Headers
API key responses include rate limit headers:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 60| Header | Description |
|---|---|
X-RateLimit-Limit | Total requests allowed in the active window |
X-RateLimit-Remaining | Remaining requests in the active window |
X-RateLimit-Reset | Seconds until the active window resets |
Retry-After | Seconds to wait before retrying, included when limited |
When You Hit a Rate Limit
When you exceed the limit, you'll receive a 429 Too Many Requests response:
{
"success": false,
"error": {
"code": "API_KEY.RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Please retry after the specified time.",
"severity": "error"
}
}Retry Strategy
Implement backoff when you receive a 429 response:
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.status !== 429) {
return response;
}
const retryAfter = Number(response.headers.get('Retry-After') || '1');
const delay = retryAfter * 1000 * Math.pow(2, attempt);
await new Promise((resolve) => setTimeout(resolve, delay));
}
throw new Error('Max retries exceeded');
}Best Practices
- Cache responses when possible — avoid redundant requests
- Use pagination efficiently — request only what you need with
page_size - Implement retry logic with exponential backoff
- Monitor headers — check
X-RateLimit-Remainingbefore large batch operations
Increasing Limits
If your integration requires higher rate limits, contact developer support with your use case.