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

# API ключи и безопасность

> Как создать, использовать, ограничить лимитом и отозвать API ключ RuAPI — и не дать ему утечь в Git или на фронтенд

Для вызова любых моделей через RuAPI вам нужен **API ключ** (он же «токен»). Ключ начинается с `sk-...`.

## Создание ключа

<Steps>
  <Step title="Откройте раздел Токены">
    В Консоли → **«Токены»**.
  </Step>

  <Step title="Создайте новый токен">
    Нажмите **«Создать токен»**. Заполните поля:

    * **Имя**: для удобства, например `local-dev`, `production-bot`.
    * **Срок действия**: можно оставить «Без ограничения» или задать конкретную дату.
    * **Лимит расхода (опционально)**: ограничение «сколько максимум этот ключ может потратить с общего баланса».
    * **Доступ к моделям (опционально)**: можно ограничить ключ конкретными моделями.
  </Step>

  <Step title="Скопируйте ключ">
    Сохраните ключ после создания. При необходимости его всегда можно посмотреть снова на странице **«Токены»** в Консоли.
  </Step>
</Steps>

## Использование ключа

Передавайте ключ в заголовке `Authorization: Bearer sk-...` при каждом запросе:

```bash theme={null}
curl https://www.ruapi.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{...}'
```

В SDK обычно есть параметр `api_key` или `apiKey` — см. [API Reference](/ru/api-reference).

## Best practices безопасности

<CardGroup cols={2}>
  <Card title="❌ Не коммитьте в Git" icon="ban">
    Никогда не добавляйте `sk-...` в коммиты. Ваш репозиторий — особенно публичный — будет проиндексирован ботами за считаные минуты.
  </Card>

  <Card title="✅ Используйте переменные окружения" icon="circle-check">
    Храните ключ в `.env` или системных переменных. В коде читайте через `os.getenv("OPENAI_API_KEY")`.
  </Card>

  <Card title="❌ Не передавайте на frontend" icon="ban">
    API ключ должен жить только на бэкенде. Если фронтенд напрямую вызывает RuAPI — ключ виден всем, кто откроет DevTools.
  </Card>

  <Card title="✅ Отдельный ключ на проект" icon="circle-check">
    Не используйте один ключ для всех проектов. Если один утечёт, остальные не пострадают — отзовите только проблемный.
  </Card>
</CardGroup>

## Отзыв и ротация ключей

Если ключ утёк (попал в Git, в чат, в скриншот):

<Steps>
  <Step title="Отзовите немедленно">
    В **«Токены»** найдите проблемный ключ → **«Отключить»** или **«Удалить»**. Все последующие запросы с этим ключом получат `401 Unauthorized`.
  </Step>

  <Step title="Создайте новый">
    Сгенерируйте замену с тем же лимитом и обновите в окружении вашего приложения.
  </Step>

  <Step title="Проверьте логи">
    В **«Логи»** проверьте, не было ли подозрительных запросов с утёкшего ключа до отзыва.
  </Step>
</Steps>

## Лимит расхода (spend limit)

При создании ключа вы можете задать «не больше X USD от общего баланса». Это полезно, чтобы:

* **разделить прод и стейдж**: production-ключ без лимита, staging — с лимитом 10 USD;
* **делегировать работу**: дать подрядчику ключ с лимитом 50 USD на разработку фичи;
* **защититься от багов**: скрипт, ушедший в разнос, не съест весь баланс — упрётся в лимит.

Когда лимит достигнут, ключ автоматически перестаёт работать (даже если на общем балансе ещё есть деньги).

## Множественные ключи

В Консоли можно иметь любое количество активных ключей одновременно. Типичная схема:

| Ключ           | Назначение           | Срок      | Лимит      |
| -------------- | -------------------- | --------- | ---------- |
| `prod-app`     | Production           | без срока | без лимита |
| `staging`      | Staging              | без срока | 10 USD     |
| `local-dev`    | Локальная разработка | 30 дней   | 5 USD      |
| `experiment-X` | Тестовый проект X    | 7 дней    | 1 USD      |

Это даёт изоляцию: что-то пошло не так в одном ключе — отзовите и пересоздайте, остальные работают.

## Восстановление при компрометации

Если ваш аккаунт RuAPI скомпрометирован (украли пароль):

1. Сразу смените пароль (если ещё есть доступ).
2. Если доступа нет — напишите на [support@ruapi.ai](mailto:support@ruapi.ai) с того адреса, на который зарегистрирован аккаунт, и опишите ситуацию.
3. После возвращения доступа: отзовите все API ключи и создайте новые.
