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 TypePer MinutePer Hour
Integration60 requests1,000 requests
Device120 requests3,000 requests
Partner300 requests10,000 requests

Rate Limit Headers

API key responses include rate limit headers:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 60
HeaderDescription
X-RateLimit-LimitTotal requests allowed in the active window
X-RateLimit-RemainingRemaining requests in the active window
X-RateLimit-ResetSeconds until the active window resets
Retry-AfterSeconds 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-Remaining before large batch operations

Increasing Limits

If your integration requires higher rate limits, contact developer support with your use case.

On this page