Создать API-ключ
https://api.souz.ai/v1/keysВозвращает сырой ключ; он же сохраняется в зашифрованном виде, и автор может получить его снова через GET /v1/keys/{id}/secret. Ключ создаёт участник, который вызывает метод (через ключ управления — его держатель), и он же держатель: траты ключа идут в его лимит, при его удалении ключ отзывается. Необязательно: spend_limit_micro и spend_limit_reset (none | daily | monthly) — потолок трат ключа сразу при создании. Разработчик и выше. kind: management — ключ управления: создают владелец и администратор и только в кабинете (ключом управления — 403 cabinet_only); потолка трат у него нет — он не тратит.
Авторизация
ManagementKeyКлюч управления из кабинета souz.ai (выдают владелец и администратор аккаунта — себе или
участнику). Даёт ровно то, что его держатель видит и может в кабинете: баланс, историю
операций и запросов, расходы, обычные ключи, настройки аккаунта — с той же ролью, лимитами
и цифрами. Модели
не запускает. Обычный API-ключ здесь не подходит: 403 forbidden с
detail[].reason: requires_management_key.
ClientSessionСессия кабинета souz.ai в браузере — те же ручки, что у ключа управления.
Тело запроса обязательно
Имя и потолок — все поля необязательны
application/jsonkindstringuser — обычный ключ, запускает модели; management — ключ управления: создают
владелец и администратор и только в кабинете, трат и потолка у него нет.
user, management"user"namestring"production"spend_limit_microintegerПотолок трат ключа в микроединицах валюты; без поля — без потолка. У ключа управления потолка нет: с полем — 400.
5000000000spend_limit_resetstringКак часто обновляется потолок: none (по умолчанию, на весь срок), daily,
monthly — по UTC.
none, daily, monthly"monthly"Ответы
201Created
application/jsoncreated_atstringобязательно"2026-08-21T12:00:00Z"idstringобязательно"key_1a2b3c4d5e6f7890"keystringобязательно"sk_9f8e7d6c5b4a39281706f5e4d3c2b1a0"namestring"production"400Запрос отклонён; `error.detail[]` называет поля и допустимые значения.
application/json401Нет ключа или ключ недействителен.
application/json403Нельзя: у ключа не тот вид (модели запускает API-ключ, аккаунт — ключ управления), у роли
Нельзя: у ключа не тот вид (модели запускает API-ключ, аккаунт — ключ управления), у роли
участника нет права или подпись ссылки на файл не сходится. detail[].reason говорит,
что именно: requires_api_key, requires_management_key, cabinet_only (только в
кабинете), insufficient_role (в allowed — роли, которым можно), not_key_author
(секрет ключа открывает только тот, кто его создал).
application/json415Тип тела не тот, что принимает метод: `Content-Type: application/json` (у загрузки файла и транскрибации — `multipart/form-data`). В `detail[]` — `{"path": "body", "reason": "unsupported_format"}` и принимаемые типы.
application/json429Слишком часто — повторите через `Retry-After` секунд. Запуск моделей, задачи и файлы результатов частотой не ограничены (их ограничивают баланс и лимиты трат); здесь 429 — на поток запросов с ключом, который сервер не знает, с одного адреса, и на потоки сверх 1000 одновременных на аккаунт (события задачи, чат с `stream: true`). Пределы — раздел «Лимиты» руководства.
application/json503Плановые работы (`maintenance`): новые запросы приостановлены до `error.ends_at`,
Плановые работы (maintenance): новые запросы приостановлены до error.ends_at,
причина — в error.reason. Повторите после этого времени (или через Retry-After
секунд, чтобы узнать, не закончились ли работы раньше); принятые задачи доделываются,
переключаться никуда не нужно. Состояние — GET /v1/status.
application/json