> ## Documentation Index
> Fetch the complete documentation index at: https://trailblazer.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# NaijaTaste API rate limits and 429 handling

> Per-IP rate limits on the NaijaTaste public API, the X-RateLimit response headers, 429 retry-after handling, and how to request higher production limits.

## Current limits (public tier)

All public endpoints are rate-limited per IP address:

| Window     | Limit          |
| ---------- | -------------- |
| Per minute | 30 requests    |
| Per hour   | 500 requests   |
| Per day    | 2,000 requests |

These limits apply across all endpoints combined.

## Rate limit headers

Every response includes:

```text theme={null}
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 27
X-RateLimit-Reset: 1716384000
```

`X-RateLimit-Reset` is a Unix timestamp of when your window resets.

## When you hit the limit

```json theme={null}
{
  "detail": "Too many requests. Please slow down.",
  "status": 429
}
```

## Handling 429s correctly

```javascript theme={null}
async function callWithRetry(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const res = await fn();
    if (res.status !== 429) return res;
    const retryAfter = parseInt(res.headers.get('retry-after') || '60');
    await new Promise(r => setTimeout(r, retryAfter * 1000));
  }
  throw new Error('Rate limit exceeded after retries');
}
```

## Getting higher limits

If your production integration needs higher limits, open an issue on the [GitHub repo](https://github.com/juststrings/naijataste-ai). High-volume integrations will be accommodated on the authenticated tier when it ships.

<Card title="API overview" icon="book-open" href="/developers/overview">
  Back to the full endpoint reference.
</Card>
