PopNowДокументация API
Работа с API
Основное содержимое

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

Формат ключа, где его хранить, ограничения для отдельных ключей, ротация и что делать при утечке.

Каждый запрос к API несёт один API-ключ в заголовке Authorization:

Authorization: Bearer sk-popnow-3f9c0a…

Других способов аутентификации нет: ключ в строке запроса URL никогда не принимается, а ваш вход на popnow.ai для API не действует.

Одно исключение: OpenAI-совместимые маршруты под /v1 читают ключ и из заголовка x-api-key, поэтому клиенты в стиле OpenAI работают без изменений. Нативные маршруты /api/v1 читают только Authorization.

Как выглядит ключ

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

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

  1. Войдите на popnow.ai и откройте API-консоль.
  2. Нажмите Create key и дайте ключу имя, по которому понятно, где он будет работать, например production-backend.
  3. Сразу скопируйте ключ. Он показывается один раз.

Ключей может быть несколько одновременно. Отдельный ключ для каждой среды или сервиса — хорошая привычка: тогда один можно отозвать, не трогая остальные. Все ключи расходуют один и тот же баланс кредитов.

Где хранить ключ

  • В переменной окружения или хранилище секретов вашей платформы (POPNOW_API_KEY), а не в исходном коде.
  • Никогда — в браузере, мобильном приложении или любом коде, который работает на чужом устройстве. Кто может прочитать ключ, тот может тратить ваши кредиты. Поставьте между ними свой сервер, и пусть PopNow вызывает он.
  • Не в логах. Если вы логируете заголовки запросов, сначала уберите Authorization.

Что разрешено ключу

Каждому ключу можно задать собственные ограничения в API-консоли:

ОграничениеЧто делаетОшибка, когда срабатывает
Разрешённые моделиКлюч может вызывать только перечисленные модели40301
Белый список IPЗапросы должны приходить с этих адресов или подсетей40302
Лимиты расходовДневной, месячный и общий лимит для этого ключа, в кредитах40202

По умолчанию у ключа нет ни ограничений, ни лимитов. Ключам для продакшена давайте минимально необходимые права.

Задачи принадлежат ключу, который их создал

recordInfo, retry, purge, список задач и статистика видят только задачи, созданные тем же ключом. Задача, созданная другим ключом вашего аккаунта, отвечает 404 — так же, как несуществующая. Генерации, запущенные на сайте, не видны ни одному ключу. Чтобы увидеть весь аккаунт, используйте API-консоль.

Ротация

Как заменить ключ без простоя:

  1. Создайте новый ключ.
  2. Разверните его везде, где использовался старый.
  3. Убедитесь в консоли, что время последнего использования старого ключа больше не меняется.
  4. Отзовите старый ключ.

Если ключ утёк

  1. Отзовите его немедленно в API-консоли — это действует со следующего запроса.
  2. Создайте замену и разверните её.
  3. Проверьте, для чего его использовали: логи и статистика в консоли показывают каждую задачу, созданную этим ключом.
  4. Ограничьте новый ключ белым списком IP и лимитом расходов.

Если видите расходы, которые делали не вы, напишите в поддержку.

Как выглядит ошибка

Все три проблемы аутентификации возвращают HTTP 401 с code: 401, а различаются по msg:

Что говорит msgЧто произошлоЧто делать
Нет учётных данныхЗаголовок Authorization не дошёлПроверьте, что заголовок задан и запущенный процесс видит переменную окружения
Формат ключа не распознанЧто-то пришло, но это не ключ PopNowУбедитесь, что он начинается с sk-popnow-; возможно, вставлено что-то другое
Учётные данные недействительны или истеклиКлюча нет, он отозван или истёкСоздайте новый ключ; повтор никогда не сработает

Действующий ключ тоже может получить 403 — например, если адрес почты аккаунта ещё не подтверждён (40310). См. Ошибки.

На этой странице