Skip to content
API Reference

Rate Limits

Per-endpoint request limits, the 429 contract, and retry with exponential backoff.

On this page

Rate Limits#

The API enforces per-endpoint rate limits to protect shared infrastructure. Exceeding one is a transient, retryable condition — not an error in your integration.

Current Limits#

When you exceed the rate limit, the API responds with a 429 status code and a Retry-After header indicating when to retry.

EndpointsSustainedBurst
All endpoints20 req/s50 req/s

Handling Rate Limits#

Implement exponential backoff with the Retry-After header for robust rate limit handling:

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 = response.headers.get("Retry-After") || "1"
    await new Promise((r) => setTimeout(r, parseInt(retryAfter) * 1000))
  }
  throw new Error("Max retries exceeded")
}

Rate limits are separate from billing. For what an operation costs and how usage is metered, see How Credits Work.

We use cookies to run and improve Gydr.

Read our Cookie Policy