# Ключи и авторизация

> API-ключи, заголовки Authorization и x-api-key, переменные окружения для SDK.

Все запросы к шлюзу авторизуются API-ключом. Ключи выпускаются в разделе
«Ключи» кабинета; ключ хранится в зашифрованном виде, и скопировать его можно
в любой момент — кнопкой «Показать ключ». У самых старых ключей, выпущенных до
появления этой кнопки, её нет: если такой ключ потерян, выпустите новый.

## Заголовки

Ключ передаётся в заголовке `Authorization: Bearer` — его используют
OpenAI-совместимые SDK и Claude Code:

```bash
curl https://ai-seller.vibe-codes.ru/v1/models \
  -H "Authorization: Bearer $AISELLER_API_KEY"
```

Шлюз принимает ключ и в заголовке `x-api-key` — так его передаёт Anthropic SDK.
Оба заголовка работают на всех эндпоинтах.

> `$AISELLER_API_KEY` во всех примерах — плейсхолдер. Подставьте на его место
> свой ключ из кабинета: документация никогда не подставляет реальные секреты.

`GET /v1/models` работает и без ключа. Но если заголовок с ключом передан, ключ
обязан быть действующим: с неверным ключом ответ — `401 invalid_api_key`.

## Переменные окружения для SDK

Anthropic SDK и Claude Code берут адрес и ключ из своих переменных
(SDK сам добавит `/v1/messages` к base URL):

```bash
export ANTHROPIC_BASE_URL=https://ai-seller.vibe-codes.ru
export ANTHROPIC_AUTH_TOKEN=$AISELLER_API_KEY
```

OpenAI SDK (Python и Node) — из пары `OPENAI_BASE_URL` / `OPENAI_API_KEY`:

```bash
export OPENAI_BASE_URL=https://ai-seller.vibe-codes.ru/v1
export OPENAI_API_KEY=$AISELLER_API_KEY
```

Инструменты на LiteLLM (например, aider) читают `OPENAI_API_BASE` вместо `OPENAI_BASE_URL`.
Готовые конфиги — в разделе [Интеграции](https://ai-seller.vibe-codes.ru/docs/tools).

## Безопасность ключа

- Не коммитьте ключ в репозитории и не вшивайте его в клиентский код —
  передавайте через переменные окружения или секреты CI.
- На ключ можно поставить лимит трат: при его достижении новые запросы
  получают `403 spend_limit_exceeded`, остальные ключи продолжают работать.
- Скомпрометированный ключ отзывается в кабинете мгновенно; отозванный ключ
  не восстанавливается — выпустите новый.
