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

# API keys

> Add an API key in three steps to lift the keyless hourly cap and get 100,000 free requests a month. Your code stays the same.

An API key removes the hourly cap of the keyless tier and gives your organization 100,000 free requests a month. Your code stays the same: the SDKs pick the key up from the environment.

**1. Create a key in the console**

Open the [Keenable console ↗](https://app.keenable.ai/console?utm_source=docs\&utm_medium=cta\&utm_campaign=api_keys\&utm_content=create_key) and create a key.

Keys start with `keen_`. Copy yours before you close the dialog.

**2. Set KEENABLE\_API\_KEY**

This command puts the key in your shell's environment, where the SDKs, the MCP server and the CLI look for it.

```bash bash theme={"system"}
export KEENABLE_API_KEY=keen_<your_key>
```

```powershell PowerShell theme={"system"}
$env:KEENABLE_API_KEY = "keen_<your_key>"
```

The variable lasts for this terminal session. Add the line to your shell profile, or to your secrets manager, to keep it.

**3. Re-run the same code**

Run the code from the [Quickstart](https://docs.keenable.ai/index.md) again. Nothing else changes.

With `KEENABLE_API_KEY` set, the Python, TypeScript and Go SDKs send the key and call the keyed endpoints instead of the `/public` ones. Responses now report what each call cost in a `usage` object (see [credits](https://docs.keenable.ai/credits.md#reading-usage-per-call)).

## Pass the key over raw HTTP

Without an SDK, send the key in the `X-API-Key` header and drop `/public` from the path. The keyed endpoints need no `X-Keenable-Title` header.

This request runs the Quickstart search with your key:

```bash theme={"system"}
curl -X POST https://api.keenable.ai/v1/search \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $KEENABLE_API_KEY" \
  -d '{"query": "fastest inference providers 2026", "max_results": 3}'
```

You get the same results as the keyless call, followed by a `usage` object.

If your client only supports bearer tokens, send `Authorization: Bearer keen_<your_key>` instead. If you send both headers, the API uses `X-API-Key`.

## Key lifetime and rotation

* Keys belong to your organization.
* Keys never expire on their own.
* You can rotate a key at any time in the [console ↗](https://app.keenable.ai/console). Create the new key, update `KEENABLE_API_KEY` everywhere it is set, then revoke the old one.

If the key is revoked, the API returns [`403`](https://docs.keenable.ai/errors#403). If the key isn't in Keenable's format, the API returns `401` with `Malformed API key` (see [401 Malformed key](https://docs.keenable.ai/errors.md#401-malformed-key)). If the key has the right format but a typo, the API returns `401` with `Authentication failed` (see [401 Invalid key](https://docs.keenable.ai/errors.md#401-invalid-key)).

## Related

* [Authentication](https://docs.keenable.ai/authentication.md): the key for the MCP server and the CLI.
* [Rate limits](https://docs.keenable.ai/rate-limits.md): keyed and keyless limits side by side.
* [Errors](https://docs.keenable.ai/errors.md): every status the API returns and how to fix it.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.