Перейти к содержимому

Ключи и разрешения

Ключами управляет владелец аккаунта в мини-приложении (Профиль → API-ключи); сами ключи не могут создавать или отзывать другие ключи.

  • Создание. Название, набор разрешений, необязательный срок действия и необязательная квота в кредитах. Секрет вида npk_… показывается один раз и не хранится — его нельзя посмотреть повторно.
  • Использование. Только заголовок Authorization: Bearer npk_… и только на путях /api/v1/*. Ни один эндпоинт не принимает идентификатор пользователя: владелец определяется ключом.
  • Отзыв. Мгновенный и необратимый; история операций ключа сохраняется.
  • Лимит. Не больше 20 неотозванных ключей на владельца (409 API_KEY_LIMIT_REACHED).

По истечении срока ключ не проходит новые запросы к публичному API (401 API_KEY_EXPIRED), включая новое создание или Continue. Уже принятое асинхронное задание продолжает работу с исходной принадлежностью ключу и его квотой; истечение срока само по себе не отменяет задание и не освобождает его удержания. Отзыв ключа запрещает новые платные действия и для принятого задания.

Разрешение Что даёт
podcasts:quote GET /api/v1/podcasts/voices, POST /api/v1/podcasts/quotes, POST …/:id/continuation-quote
podcasts:create POST /api/v1/podcasts, POST …/:id/cancel, POST …/:id/continue
podcasts:read GET /api/v1/podcasts/:id, …/receipt, …/audio
news:quote GET /api/v1/news/voices, POST /api/v1/news/quotes
news:create POST /api/v1/news, POST /api/v1/news/:taskId/cancel
news:read GET /api/v1/news/:taskId, …/result, …/receipt, …/audio
tts:quote GET /api/v1/tts/voices, POST /api/v1/tts/quotes, POST /api/v1/tts/podcasts/:id/continuation-quote
tts:create POST /api/v1/tts/podcasts, POST …/:id/cancel, POST …/:id/continue
tts:read GET /api/v1/tts/podcasts/:id, …/receipt, …/audio

Разрешения *:create тратят кредиты и выдаются, только если владелец отметил их явно. Ни одно разрешение не даёт публиковать, лайкать, добавлять в избранное, управлять лентой, библиотекой источников, расписаниями или горячими новостями. Запрос без нужного разрешения получает 403 API_KEY_SCOPE_DENIED.

Необязательная квота ограничивает кредиты, которые ключ может удержать и потратить. Новый Podcast и News проверяет квоту перед каждым платным запросом: подтверждённый расход занимает её окончательно, неиспользованная часть краткого удержания освобождается. Исторические чеки Podcast и News сохраняют исходный учёт квоты; задачи с неподдерживаемым сохранённым планом не возобновляются. Если квоты не хватает, выпуск сообщает API_KEY_QUOTA_EXCEEDED отдельно от нехватки баланса; повторное пополнение баланса само по себе квоту ключа не увеличивает.