Аутентификация
Аутентифицируйте каждый запрос API-ключом Lovely Router, переданным в том заголовке, который уже использует ваш SDK.
Каждому запросу, который расходует ваш баланс, нужен API-ключ. Один ключ работает во всём API: модели Claude, GPT и Gemini, инструменты данных, браузерный агент и MCP-сервер.
Получение API-ключа#
Создайте ключ на странице API-ключи в панели. Ключ выглядит как lr-, за которым следуют 40 букв и цифр. Он показывается один раз, при создании. Lovely Router хранит только хеш ключа, поэтому потерянный ключ восстановить нельзя: отзовите его и создайте новый.
Храните ключ в переменной окружения. Все примеры в этой документации читают его из $LOVELY_API_KEY.
export LOVELY_API_KEY="lr-..."Как ограничить расходы ключа или то, что он может вызывать, описано в разделе API-ключи.
Передача ключа#
Lovely Router принимает ключ в любом из мест, которые используют API поставщиков. Все четыре способа работают на каждом эндпоинте, поэтому оставьте то, что ваш SDK или инструмент отправляет по умолчанию.
| Где | Пример | Кто отправляет |
|---|---|---|
Заголовок Authorization | Authorization: Bearer lr-... | OpenAI SDK, Claude Code (ANTHROPIC_AUTH_TOKEN), инструменты данных, браузерный агент, MCP-клиенты |
Заголовок x-api-key | x-api-key: lr-... | Anthropic SDK |
Заголовок x-goog-api-key | x-goog-api-key: lr-... | Google Gen AI SDK, Gemini CLI |
Параметр запроса key | ?key=lr-... | REST-примеры Gemini |
Если в запросе указано несколько форм, побеждает первая найденная в таком порядке: Authorization: Bearer, x-api-key, x-goog-api-key, ?key=.
Предпочитайте заголовки
Ключ в строке запроса попадает в логи прокси, историю оболочки и историю браузера. Используйте ?key= только для инструментов, которые не умеют отправлять заголовок.
Проверка ключа#
Для подсчёта токенов нужен действующий ключ, но он ничего не стоит, так что это быстрый способ проверки. Ответ 200 означает, что ключ активен и ему разрешено использовать модель.
curl https://lovelyrouter.com/v1/messages/count_tokens \
-H "x-api-key: $LOVELY_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5.5",
"messages": [{"role": "user", "content": "ping"}]
}'Эндпоинты без ключа#
Эндпоинты каталогов публичные, так что просматривать модели и инструменты можно ещё до регистрации. Ключ, отправленный на них, игнорируется, кроме планировщика: он использует ключ, чтобы дать более высокий лимит.
| Эндпоинт | Что возвращает |
|---|---|
GET /v1/models | Все доступные модели с размером контекста, ценами и группами каналов |
GET /v1beta/models | Тот же список в формате Gemini |
GET /v1/tools | Каталог инструментов данных |
GET /v1/tools/{id} | Схему входных данных, пример входных данных и цену одного инструмента |
POST /v1/tools/discover | Инструменты, подходящие под поисковый запрос по ключевым словам |
POST /v1/tools/suggest | Пошаговый план использования инструментов для задачи. Без ключа все анонимные клиенты делят 100 запросов в минуту; с ключом вы получаете 100 запросов в минуту на этот ключ. |
Для всего остального нужен ключ: запросы к моделям (включая подсчёт токенов), запуски инструментов, все эндпоинты /v1/browser и запуск инструментов через MCP.
Ошибки аутентификации#
Если ключ отсутствует, неизвестен, отозван или просрочен, возвращается 401. Тело ответа использует формат того API, которое вы вызывали.
| Причина | Сообщение |
|---|---|
| В запросе к модели нет ключа | Missing API key |
| Ключ неизвестен или отозван, либо аккаунт заблокирован | Invalid or revoked API key |
| Срок действия ключа истёк | This API key has expired |
Нет ключа, либо ключ неизвестен или отозван, на /v1/tools или /v1/browser | Missing, invalid or revoked API key |
{"type": "error", "error": {"type": "authentication_error", "message": "Invalid or revoked API key"}}Действующий ключ всё равно может получить отказ из-за того, что ему разрешено: 403 для модели вне его списка разрешённых, 402, когда исчерпан лимит расходов, 429 при достижении лимита запросов. См. Что происходит при достижении лимита и Ошибки.
Безопасное хранение ключей#
- Держите ключи на сервере. Никогда не помещайте ключ в веб-страницу, мобильное приложение или что-либо ещё, что вы передаёте пользователям. API принимает запросы с любого origin, поэтому ключ во фронтенд-коде может скопировать и потратить любой, кто его откроет.
- Загружайте ключи из окружения или менеджера секретов. Не коммитьте их. Добавьте файлы
.envв.gitignore. - Используйте отдельный ключ для каждого приложения и окружения. Тогда утёкший ключ стейджинга не затронет продакшен, а Логи покажут, какой ключ отправил каждый запрос.
- Ограничивайте возможности каждого ключа. Задайте лимит расходов, список разрешённых моделей и срок действия для ключей, которыми пользуются агенты, CI-задачи или другие люди. См. API-ключи.
- Регулярно меняйте ключи, а также сразу, когда уходит человек, у которого был доступ. См. Замена ключа.