> ## 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 keys and the planned auth tier

> Core NaijaTaste endpoints need no API key today. Learn how the upcoming authenticated tier handles keys, rate limits, webhooks, and storage best practices.

## Public access

All core NaijaTaste endpoints are publicly accessible with no authentication:

* `POST /recommend`
* `POST /simulate-review`
* `GET /places/top-picks`
* `GET /place-details/{place_id}`
* `GET /cache/stats`
* `GET /health`

Start building right now. No credentials needed.

## Three-key rotation (internal)

The API uses a three-key round-robin rotation on Gemini API keys internally, giving 3× the free-tier quota. This is handled server-side — you don't need to worry about it as an API consumer.

## What an API key tier will cover

A key tier is planned for:

* Higher rate limits for production integrations
* Access to user-level persona snapshots (with user consent)
* Webhooks for cache invalidation events
* Priority support

Keys will be issued through the API playground at [naijataste-api.onrender.com/docs](https://naijataste-api.onrender.com/docs).

## Using a key when available

```bash theme={null}
curl -X POST https://naijataste-api.onrender.com/recommend \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{...}'
```

## Security practices

* Do not embed keys in client-side code or public repositories
* Store keys in environment variables
* Rotate immediately if compromised

```bash theme={null}
# .env
NAIJATASTE_API_KEY=your_key_here
```

```javascript theme={null}
// Use in server-side code only
const res = await fetch('https://naijataste-api.onrender.com/recommend', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.NAIJATASTE_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ ... })
});
```

<Card title="Rate limits" icon="gauge" href="/developers/rate-limits">
  Understand the per-IP limits and how to handle rate limit responses.
</Card>
