Documentation

Rate Limits

PlanRate LimitMonthly Quota
10 req/sec10,000 requests
50 req/sec100,000 requests
100 req/sec250,000 requests
200 req/sec500,000 requests
CustomCustom
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 115
X-RateLimit-Reset: 1704067200
HeaderDescription
X-RateLimit-LimitMaximum requests per minute
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the window resets
{
  "error": "rate_limit_exceeded",
  "error_description": "Rate limit exceeded. Try again in 45 seconds.",
  "retry_after": 45
}
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 retryAfter = response.headers.get('Retry-After') || Math.pow(2, i);
      await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
      continue;
    }

    return response;
  }
  throw new Error('Max retries exceeded');
}
curl -X POST "https://api.fhirfly.io/v1/ndc/_batch" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"codes": ["0069-0151-01", "0069-0152-01", "0069-0153-01"]}'