# API Keys

SleekAI sends requests to the AI providers with your own API keys. Store at
least one key before you chat, publish a chatbot, generate alt text or use the
Agent. You can store one key each for OpenAI, Anthropic, Google and
OpenRouter.

Keys are shared: the same stored keys serve SleekAI, the workspace assistant
and the AI features of every other SleekWP product, so a key is entered once.

## Where to enter a key

The settings button beside the theme selector in the sidebar header opens the
settings shared by every installed plugin. Its **AI** section has one field
per provider. The standalone SleekAI plugin shows the same **AI** section in
its Settings.

A key is encrypted before it is stored and is never sent back to the browser.
A provider that holds a key shows that a key is saved, with an action to
remove it; to replace a key, remove it and save the new one.

The section lists the keys you saved yourself. Requests to a provider use a key
stored for that provider whoever saved it, so a key saved by one administrator
also serves the others.

## Getting a key

Each provider issues keys in its own console:

| Provider   | Where to create a key                                                |
| ---------- | -------------------------------------------------------------------- |
| OpenAI     | [platform.openai.com/api-keys](https://platform.openai.com/api-keys) |
| Anthropic  | [console.anthropic.com](https://console.anthropic.com/account/keys)  |
| Google     | [Google AI Studio](https://aistudio.google.com/apikey)               |
| OpenRouter | [openrouter.ai/keys](https://openrouter.ai/keys)                     |

Create a key there, copy it, and paste it into SleekAI. Usage is billed by the
provider to the account that owns the key.

## From the command line

`wp sleek ai key set` stores a key, `wp sleek ai key list` lists the stored
keys without their values, and `wp sleek ai key delete` removes one:

```bash
wp sleek ai key set openai sk-... --label=Production --user=admin
wp sleek ai key list
```

`key set` also accepts a `custom-` name, such as `custom-gateway`, for a key
that only a [custom model](/docs/ai/settings/custom-models.md) uses. The key
belongs to the user the command runs as, which matters for custom models:
a custom model only finds a key its own user stored. The
[CLI reference](/docs/ai/reference/cli.md) lists every option. The workspace
assistant can list and delete keys for you but cannot store one.

## Removing SleekAI

[Uninstalling SleekAI](/docs/ai/activating.md#uninstalling) keeps the stored keys
and custom models.
