Если вы просто хотите использовать 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)).
Шаг 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 на consent screen. Scope
user:id включается автоматически.
Лимиты расходов
На consent screen пользователь может установить лимит расходов для OAuth-ключа:
Сумма указывается в рублях. При достижении лимита запросы через этот ключ будут отклоняться с ошибкой
402.
Повторная авторизация
Если пользователь повторно авторизует то же приложение для той же организации, существующий API-ключ ротируется — генерируется новый секрет, обновляются scopes и лимиты. Дубликат ключа не создаётся. Старый секрет перестаёт работать.
Безопасность
- Только 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 Справочник
Полная документация эндпоинтов
Каталог моделей
Выберите модель для вашего приложения