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

# API Keys

> Create and manage the API keys your integrations use to authenticate with Markup AI.

API keys authenticate your code, the [hosted MCP server](/mcp), and integrations like [Zapier](/recipes/zapier) and the [GitHub Action](/recipes/github-action) against the Markup AI API. Manage them in the [console](https://console.markup.ai) under **API Keys**.

## Generate a key

#### Open API Keys

Go to **API Keys** and select **Generate Key**.

#### Name and create it

Give the key a descriptive name — something that identifies where it's used, like `ci-pipeline` or `zapier-prod` — then select **Generate Key**.

![Generate New API Key dialog with a key name field](/_fern-img/1910c78f6560bcd25b830385065b21c5b059a4439bb9429a686a44ea1f5b078e.webp)

#### Copy it now

The full key is shown **only once**, at creation. Copy it and store it somewhere secure (a secrets manager or your CI's encrypted variables). If you lose it, delete the key and generate a new one.

## Use a key

Send the key as a bearer token on each request:

**`cURL`**

```bash title="cURL"
curl https://api.markup.ai/v1/style/checks \
  -H "Authorization: Bearer $MARKUP_AI_API_KEY"
```

The same key works for the [hosted MCP server](/mcp). For full request and response details, see the [API Reference](/api-reference) and the [Quickstart](/quickstart).

## Manage and rotate keys

The API Keys table lists every key with a masked preview, so you can tell them apart without exposing the secret. From there you can rename or delete a key. To **rotate** a key with no downtime: generate a new one, update your integration to use it, confirm it works, then delete the old key.

> **Note**
>
> A key carries the permissions of the organization it belongs to. Treat it like a password — never commit it to source control or paste it into client-side code.