> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ada.cx/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ada.cx/_mcp/server.

# Authentication

Ada APIs use API keys for authentication. An API key is required to authenticate requests and enable integration with Ada’s platform.

* **Support for Multiple Keys:** Maintain multiple active API keys to enable seamless key rotation when needed.
* **Non-Expiring:** API keys remain valid until manually revoked.
* **Access:** API keys grant both read and write permissions for all APIs available to your organization.

To create a new API key, follow the steps in [Generate an Ada API key](#generate-an-ada-api-key).

To use an API key, simply include it as a `Bearer` token in the `Authorization` header of your requests. See [Authenticate your requests](#authenticate-your-requests) for detailed instructions.

> **Note**
>
> If you are already using API-specific keys, they will only work for the v1 version of the designated API. These keys are labeled with the API name followed by "(Legacy)".

## Generate an Ada API key

You can generate a new Ada API key from the Ada dashboard, which works for all APIs your organization has access to.

1. On the Ada dashboard, go to your API settings.

   * If you're using a **generative AI Agent**, go to **Config > PLATFORM > API keys**.

     ![](/_fern-img/945b8de1a8a4d2f42044a16482cbd49e9ee23765a53b4b008f2afcc8c3d4a43c.webp)

   * If you're using a **scripted bot**, go to **Settings** > **Integrations** > **APIs**.

     ![](/_fern-img/97b4f583afa689dd7ab938b63f7fb4c00369874faac1eba08fc7345ea9cba924.webp)

   The API keys page opens.

2. Create a new API key:

   * If your AI Agent doesn't have any API keys, click **Get started**.
   * If your AI Agent has existing API keys, click **New API key**.

   The New API key window opens.

3. In the New API key window, enter a **Name** for the key, then click **Generate key**. The name can be edited later if needed (see [Edit an API key name](#edit-an-api-key-name)).

   ![](/_fern-img/8caec63a1aa2a19c00d5656bb56962d96a174963bf3861954d76592cb0d8a306.webp)

4. Click **Copy** to copy your API key, then save it in a secure place immediately.

   > **Warning**
   >
   > For security reasons, the Ada dashboard only displays your API key once. If you lose this key, you'll need to create a new one.

5. Click **Done** to close the New API Key window and protect your new API key.

## Edit an API key name

To rename an existing API key, click the **Edit** (pencil) button beside it on the API keys page, update the **Name** field, and click **Save**. The key's value, permissions, and creation date remain unchanged, so external integrations using the key continue to work without reconfiguration.

Legacy API keys (those labelled with an API name followed by "(Legacy)") cannot be renamed.

## Delete an Ada API key

If you ever need to invalidate an old API key, click the **Delete** button beside it.

![](/_fern-img/3252caa8558cccf1d9e1209d5fe28fe68de9d490cf867b0e3bc666c86fdbe8c5.webp)

## Authenticate your requests

To authenticate your requests, you have to send your API key in the Authorization header in all requests to the API. Without it, your requests will fail.

### Example of a request

**`JSON`**

```json JSON
curl --location '{BOT_URL}/api/knowledge/v1/articles' \
--header 'Authorization: Bearer {YOUR_API_TOKEN}'
```

### Example responses

**`JSON`**

```json JSON
// If the request is not authenticated
status: 401
{
	"message": "Unauthorized"
}

// If the request is authenticated
status: 200
{
	"data": []
}
```