Skip to main content
OAuth PKCE позволяет сторонним приложениям получать API-ключи от имени пользователей Polza.ai — без ручного создания ключей. Пользователь авторизует приложение через consent screen, выбирает организацию, scopes и лимиты расходов, после чего приложение получает готовый API-ключ.
Если вы просто хотите использовать API напрямую — создайте ключ в личном кабинете. OAuth PKCE нужен разработчикам сторонних приложений, которые запрашивают доступ у пользователей.

Как это работает

1

Генерация PKCE

Приложение генерирует пару code_verifier + code_challenge (SHA-256).
2

Перенаправление на авторизацию

Приложение перенаправляет пользователя на https://polza.ai/api/auth/authorize с параметрами.
3

Consent screen

Пользователь видит экран подтверждения — выбирает организацию, разрешённые данные и лимит расходов.
4

Callback с кодом

После подтверждения пользователь перенаправляется обратно на callback_url с параметром code.
5

Обмен кода на API-ключ

Приложение обменивает code + code_verifier на API-ключ через POST /api/auth/token.

Шаг 1: Генерация PKCE

Сгенерируйте случайный code_verifier (43-128 символов, [A-Za-z0-9\-._~]) и вычислите code_challenge как BASE64URL(SHA256(code_verifier)).
Сохраните code_verifier — он понадобится на шаге обмена кода. Никогда не передавайте его в URL или в открытом виде.

Шаг 2: Перенаправление на авторизацию

Перенаправьте пользователя на эндпоинт авторизации с необходимыми параметрами:

Шаг 3: Обработка callback

После авторизации пользователь будет перенаправлен на ваш callback_url с параметрами:
  • При успехе: ?code=<код_авторизации>&state=<ваш_state>
  • При отказе: ?error=access_denied&state=<ваш_state>

Шаг 4: Обмен кода на API-ключ

Обменяйте код авторизации на API-ключ, отправив code_verifier для подтверждения PKCE:
Ответ:
Параметр callback_url в запросе должен точно совпадать с тем, что был указан при авторизации.

Шаг 5: Использование API-ключа

Полученный ключ работает как обычный API-ключ Polza.ai:

Данные пользователя

Получите информацию о пользователе, авторизовавшем ключ, через эндпоинт GET /api/auth/userinfo:
Ответ зависит от scopes, разрешённых пользователем:

Доступные scopes

Пользователь выбирает scopes на consent screen. Scope user:id включается автоматически.

Лимиты расходов

На consent screen пользователь может установить лимит расходов для OAuth-ключа: Сумма указывается в рублях. При достижении лимита запросы через этот ключ будут отклоняться с ошибкой 402.

Повторная авторизация

Если пользователь повторно авторизует то же приложение для той же организации, существующий API-ключ ротируется — генерируется новый секрет, обновляются scopes и лимиты. Дубликат ключа не создаётся. Старый секрет перестаёт работать.

Безопасность

Используйте параметр state для защиты от CSRF-атак. Генерируйте случайное значение перед началом flow и проверяйте его в callback.
  • Только S256 — метод plain не поддерживается
  • HTTPS обязателен для callback_url (исключение: localhost и 127.0.0.1 для локальной разработки)
  • Код авторизации действителен 5 минут и может быть использован только один раз
  • code_verifier проверяется с защитой от timing-атак
  • Rate limit на эндпоинт /api/auth/token: 5 запросов в минуту

Ошибки

В redirect (callback_url)

При обмене кода (POST /api/auth/token)

При авторизации (GET /api/auth/authorize)

Следующие шаги

API Справочник

Полная документация эндпоинтов

Каталог моделей

Выберите модель для вашего приложения