ДокументацияНачало работыАутентификация

Аутентификация

Три заголовка авторизации, формат и жизненный цикл ключа, ошибки аутентификации.

Каждый запрос к data plane (/v1/* и /v1beta/*) должен содержать API-ключ. Для совместимости со всеми тремя семействами SDK шлюз проверяет три заголовка по порядку — достаточно любого из них:

ЗаголовокФорматТипичные клиенты
AuthorizationAuthorization: Bearer sk-sole-… (принимается и ключ без префикса Bearer)OpenAI SDK · Codex
x-api-keyx-api-key: sk-sole-…Anthropic SDK · Claude Code
x-goog-api-keyx-goog-api-key: sk-sole-…Google GenAI SDK

Передача ключа в параметрах URL (например, ?key= у Google) не поддерживается: строки запроса попадают в журналы доступа и историю браузера, что ведёт к утечкам. Всегда используйте заголовок.

Формат и жизненный цикл ключа

Ключи начинаются с sk-sole-. Полный ключ показывается один раз при создании, сервер хранит только хеш — утерянный ключ нельзя восстановить, только заменить. Для каждого ключа отдельно настраиваются:

  • Включение/отключение: ключ можно отключить в любой момент, история использования сохраняется.
  • Срок действия: удобно для временных интеграций или передачи ключей третьим лицам.
  • Лимит расходов: потолок в USD с опциональным сбросом раз в день/неделю/месяц; после исчерпания запросы ключа отклоняются (HTTP 402).
  • Список разрешённых IP: ограничивает, с каких адресов можно использовать ключ; остальные запросы отклоняются (HTTP 403).

Ошибки аутентификации

СитуацияHTTPИдентификатор
Ключ не передан401key_missing
Ключ не найден или удалён401key_invalid
Ключ отключён403key_disabled
Срок действия ключа истёк403key_expired
IP не входит в список разрешённых403key_ip_denied
Исчерпан лимит расходов ключа402key_quota_exhausted
Аккаунт заблокирован403account_disabled

Формат тела ошибки соответствует SDK, определяемому по пути запроса, а сообщения локализуются под язык аккаунта (до аутентификации — по Accept-Language, по умолчанию английский). См. Ошибки.

Рекомендации по безопасности

  • Храните ключи в переменных окружения или менеджере секретов — не в исходном коде и репозиториях конфигурации.
  • Не раскрывайте ключи в клиентском коде (например, в браузере); если фронтенду нужен прямой доступ, используйте отдельный ключ с малым лимитом и списком IP.
  • Разделяйте ключи по задачам: это изолирует расход и ограничивает инциденты — отключается только затронутый ключ.
  • Периодически меняйте ключи, а временным задавайте срок действия и лимит расходов.