API Управления
Управление API-ключами, статистика и экспорт для ваших интеграций
Подключите серверную автоматизацию с отдельным ключом управления. Выберите разрешения, управляйте ключами приложений и собирайте отчёты по организации.
Открыть API УправленияПолучите ключ управления
- Войдите в панель как администратор организации и откройте API Управления под разделом «Настройки».
- Укажите название, срок действия и нужные разрешения. Для отчётов достаточно usage:read; для управления обычными API-ключами добавьте keys:read и keys:write.
- Нажмите «Создать ключ управления» и сохраните секрет в менеджере секретов. Он показывается один раз.
Ключ управления начинается с sk-kr_mgmt_*. Он используется для автоматизации управления и отчётов. Для запросов к моделям создайте обычный API-ключ — инструкция по аутентификации.
Разрешения
| Разрешение | Доступ |
|---|---|
| keys:read | GET /v1/api-keys и GET /v1/keys — список обычных API-ключей организации. |
| keys:write | Создание, изменение и отзыв обычных API-ключей через /v1/api-keys. Не включает чтение списка. |
| usage:read | Статистика, история запросов, JSON-экспорт, баланс и счета организации. |
Подключите автоматизацию
Задайте KODIK_MANAGEMENT_KEY в окружении серверного процесса из менеджера секретов. Используйте его в заголовке Authorization: Bearer. Пример ниже требует keys:read:
Срок действия, ротация и отзыв
Ключ действует до выбранного срока или отзыва. Секрет хранится только как хеш и не может быть показан повторно. Изменить срок или разрешения существующего ключа нельзя: создайте замену в API Управления, переключите автоматизацию и отзовите старый ключ там же. Отзыв применяется к последующим запросам.
Для создания и отзыва нужны права администратора организации. Если включена 2FA и панель просит повторное подтверждение, войдите заново и повторите действие в течение 5 минут. Ключи управления не могут создавать или отзывать другие ключи управления.
Ключ привязан к организации и выдавшему его администратору. Доступ прекращается при деактивации владельца, потере его членства или прав администратора, а также изменении версии безопасности аккаунта, например при изменении 2FA. Запросы к моделям, изменение аккаунта, платежи и раскрытие существующих секретов для ключа управления недоступны.
По умолчанию лимит составляет 60 запросов в минуту на ключ, суммарно для всех разрешённых endpoint; сервер может настроить другое значение. При 429 повторяйте запрос после Retry-After. Если API Управления недоступен на вашем сервере, обратитесь к администратору.
Управление API-ключами
Создание, настройки, бюджеты и отзыв через API
Создавайте и отзывайте ключи через API, меняйте разрешения и бюджеты. Те же настройки доступны на странице API-ключи.
Авторизация: ключ управления
Создайте ключ на странице API Управления и передавайте его в Authorization: Bearer $KODIK_MANAGEMENT_KEY. Для списка нужно разрешение keys:read, для создания, изменения и отзыва — keys:write. Эти разрешения независимы.
Обычный ключ с gateway:read или gateway:write не даёт права управлять ключами. Ключ управления действует только в организации, где он создан. Раскрытие существующих секретов через /reveal не поддерживается для ключей управления; просмотр обычного ключа доступен администратору в панели API-ключи.
Эндпоинты управления ключами
| Метод и путь | Результат |
|---|---|
| GET /v1/api-keys | Массив ключей организации. По умолчанию только активные; include_inactive=true включает отозванные. |
| POST /v1/api-keys | Созданный ключ с полем secret — полным секретом. |
| PATCH /v1/api-keys/{key_id} | Обновлённые настройки ключа. Передавайте только изменяемые поля. |
| DELETE /v1/api-keys/{key_id} | Отзыв ключа; ответ { status: "ok" }. История использования сохраняется; ключ без связанных записей удаляется. |
Совместимые пути: GET/POST /v1/keys и DELETE /v1/keys/{key_id}. Для обновления используйте /v1/api-keys. Отдельного GET по ID и отдельного endpoint ротации нет: создайте новый ключ, переключите приложение и отзовите старый.
Поля создания и обновления
Типы указаны для JSON-тела запроса. Метка req означает обязательное поле при создании; default — значение при создании, если поле не передано.
| Поле | Тип | Описание |
|---|---|---|
namereq | string | Название ключа, от 1 до 120 символов. |
environment | string | Окружение: production, staging, development или test.default: "production" |
scopes | string[] | Непустой список gateway:read и/или gateway:write. Для статистики добавьте gateway:read; write не включает read.default: ["gateway:write"] |
models_allowlist | string[] | null | ID разрешённых моделей. null или [] — без ограничения по списку.default: null |
rate_limit_rpm | integer | От 10 до 20000, но не выше максимума тарифа организации. Если максимум тарифа ниже 130, задайте допустимое значение явно.default: 130 |
credit_limit | number | string | null | Месячный лимит в RUB: положительное десятичное число, до 6 знаков после запятой. Можно передать числом или строкой; null снимает лимит.default: null |
daily_credit_limit | number | string | null | Дневной лимит в RUB: положительное десятичное число, до 6 знаков после запятой. Можно передать числом или строкой; null снимает лимит.default: null |
expires_at | string | null | Дата и время ISO 8601, например 2027-01-01T00:00:00Z; null снимает срок действия.default: null |
В PATCH пропущенное поле остаётся без изменений. null разрешён для models_allowlist, credit_limit, daily_credit_limit и expires_at. Поле is_active не принимается: для отзыва используйте DELETE.
Примеры cURL
Задайте KODIK_MANAGEMENT_KEY в окружении доверенного серверного процесса. Для всех примеров ниже нужны keys:read и keys:write. Примеры создания и изменения ниже выполняют реальные операции при запуске.
Сохраните secret из ответа в менеджере секретов и используйте его как KODIK_API_KEY для запросов к моделям. Сохраните id как KODIK_KEY_ID для изменения или отзыва ключа; ID и секрет — разные значения. Не сохраняйте полный ответ с секретом в общедоступных логах.
Что возвращает список
Каждый элемент содержит id, name, prefix, masked_secret, scopes, models_allowlist, environment, rate_limit_rpm, credit_limit, daily_credit_limit, is_active, created_at, expires_at и last_used_at. Полного секрета в списке нет; сохраните secret из ответа создания. Повторный просмотр обычного ключа доступен в панели API-ключи, если его секрет сохранён на сервере.
Для контроля бюджета используйте day_spend_rub, month_spend_rub, day_limit_reached, month_limit_reached, day_resets_at и month_resets_at. Дневной период начинается в 00:00 UTC; месячный отсчитывается от даты создания ключа. Ориентируйтесь на возвращаемые даты сброса.
Ошибки
400 — неверные поля или превышен допустимый RPM тарифа; 401 — ключ управления неверен, отозван или истёк; 403 — недостаточно прав; 404 — ключ не найден в вашей организации; 429 — слишком много запросов.
Для запросов, токенов и расходов по конкретному ключу перейдите к статистике и аналитике ниже.
Статистика и аналитика
Запросы, токены, расходы и экспорт по организации и ключам
Получайте расходы, токены и историю запросов для своих отчётов. Готовые графики доступны на странице Использование.
Авторизация и область данных
Для отчётов и автоматизации используйте ключ управления с usage:read в заголовке Authorization: Bearer. Создать его можно на странице API Управления. Обычные API-ключи с gateway:read также поддерживают чтение статистики; gateway:write не включает это разрешение.
Эндпоинты статистики
| Метод и путь | Ответ |
|---|---|
| GET /v1/usage | Массив записей запросов: модель, провайдер, токены, стоимость, длительность, статус, error_code и request_id. |
| GET /v1/usage/summary | from, to, granularity, points и totals: число запросов, входные/выходные токены, расходы и число маскированных сущностей. |
| GET /v1/usage/by-model | from, to и models: модель/провайдер, токены, стоимость и percent_of_tokens. |
| GET /v1/usage/activity | items и next_cursor: журнал запросов с фильтрами и поиском. Также доступен GET /v1/activity. |
| GET /v1/usage/export.json | JSON-файл со всеми подходящими записями без постраничного ограничения; включает api_key_name. |
| GET /v1/billing/summary | Баланс credit_balance, расходы spend_month_to_date и spend_all_time, валюта и лимиты тарифа организации. |
| GET /v1/billing/invoices | Объект items с последними платежами/счетами (до 50). |
Фильтры и страницы
| Путь после /v1 | Параметры |
|---|---|
| /usage | from, to (YYYY-MM-DD), model, environment, api_key_id; limit 1–200 (по умолчанию 200), offset ≥ 0. |
| /usage/summary | from, to (YYYY-MM-DD), model, environment, api_key_id; granularity=day или hour (по умолчанию day). |
| /usage/by-model | from, to (YYYY-MM-DD), api_key_id. Фильтров model и environment нет. |
| /usage/activity, /activity | from, to (ISO 8601 с временем), model, status, environment, api_key_id, q (поиск по request_id или ID модели), cursor; limit 1–200 (по умолчанию 50). |
| /usage/export.json | from, to (YYYY-MM-DD), model, environment, api_key_id. limit и offset не применяются. |
Для summary и by-model без дат используется диапазон от 30 дней до даты to (по умолчанию сегодня) до самой даты to включительно. Для /usage и export без обеих дат доступны записи за всё время. Если задана только одна дата, to по умолчанию — сегодня, from — за 30 дней до to. Дата to включена целиком. Задавайте обе даты для воспроизводимых отчётов.
Для журнала activity передавайте next_cursor из ответа в следующий запрос без изменений и сохраняйте те же фильтры; null означает конец списка. Для /usage увеличивайте offset на limit до неполной или пустой страницы. Параметр api_key_id — ID из списка ключей, а не секрет. История отозванных ключей доступна по тому же ID.
Расходы по одному ключу
Задайте KODIK_MANAGEMENT_KEY с usage:read и KODIK_KEY_ID — ID обычного API-ключа, который нужно анализировать. Получить ID можно через список ключей с разрешением keys:read. Замените даты на нужный период.
Сокращённый пример ответа; points содержит показатели для каждого периода с записями, totals — для всего диапазона:
Выгрузка JSON
Валюты и точность
Для точных расчётов используйте cost_rub_exact — списание в рублях с шестью знаками после запятой. cost_rub — форматированная сумма для отображения; в JSON-экспорте она содержит точное значение. Денежные поля передаются строками: используйте decimal-арифметику.
provider_cost_usd — база расчёта в USD до конвертации и наценки; она берётся из ответа провайдера либо рассчитывается по каталогу. Устаревшее cost_usd — алиас рублёвой суммы, а не доллары. currency и cost_usd_currency имеют значение RUB, provider_cost_currency — USD. В экспорте избыточные алиасы удалены.
Если запрос не проходит
401 — неверный, отозванный или истёкший токен/ключ; 403 — отсутствует gateway:read у обычного ключа, usage:read у ключа управления или доступ к организации; 402 — достигнут бюджет API-ключа, проверяемый также при чтении статистики; 400 — некорректные параметры; 429 — превышен лимит запросов. Для просмотра статистики при исчерпанном бюджете ключа используйте ключ управления с usage:read.
