API Управления

Управление API-ключами, статистика и экспорт для ваших интеграций

Подключите серверную автоматизацию с отдельным ключом управления. Выберите разрешения, управляйте ключами приложений и собирайте отчёты по организации.

Открыть API Управления

Получите ключ управления

  1. Войдите в панель как администратор организации и откройте API Управления под разделом «Настройки».
  2. Укажите название, срок действия и нужные разрешения. Для отчётов достаточно usage:read; для управления обычными API-ключами добавьте keys:read и keys:write.
  3. Нажмите «Создать ключ управления» и сохраните секрет в менеджере секретов. Он показывается один раз.

Ключ управления начинается с sk-kr_mgmt_*. Он используется для автоматизации управления и отчётов. Для запросов к моделям создайте обычный API-ключ — инструкция по аутентификации.

Разрешения

РазрешениеДоступ
keys:readGET /v1/api-keys и GET /v1/keys — список обычных API-ключей организации.
keys:writeСоздание, изменение и отзыв обычных API-ключей через /v1/api-keys. Не включает чтение списка.
usage:readСтатистика, история запросов, JSON-экспорт, баланс и счета организации.
keys:write позволяет создавать ключи для платных запросов к моделям и менять их бюджеты. Выдавайте это разрешение только доверенной автоматизации.

Подключите автоматизацию

Задайте KODIK_MANAGEMENT_KEY в окружении серверного процесса из менеджера секретов. Используйте его в заголовке Authorization: Bearer. Пример ниже требует keys:read:

bash
export KODIK_BASE_URL="https://api.kodikrouter.ru"
# KODIK_MANAGEMENT_KEY — секрет, созданный в панели API Управления.
curl --fail-with-body -sS "$KODIK_BASE_URL/v1/api-keys" \
  -H "Authorization: Bearer $KODIK_MANAGEMENT_KEY"

Срок действия, ротация и отзыв

Ключ действует до выбранного срока или отзыва. Секрет хранится только как хеш и не может быть показан повторно. Изменить срок или разрешения существующего ключа нельзя: создайте замену в 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[] | nullID разрешённых моделей. 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. Примеры создания и изменения ниже выполняют реальные операции при запуске.

bash
# Список ключей, включая отозванные
curl --fail-with-body -sS \
  'https://api.kodikrouter.ru/v1/api-keys?include_inactive=true' \
  -H "Authorization: Bearer $KODIK_MANAGEMENT_KEY"
bash
# Создание обычного ключа для запросов к моделям
curl --fail-with-body -sS https://api.kodikrouter.ru/v1/api-keys \
  -H "Authorization: Bearer $KODIK_MANAGEMENT_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"name":"Production app","scopes":["gateway:write"],"environment":"production","rate_limit_rpm":10}'

Сохраните secret из ответа в менеджере секретов и используйте его как KODIK_API_KEY для запросов к моделям. Сохраните id как KODIK_KEY_ID для изменения или отзыва ключа; ID и секрет — разные значения. Не сохраняйте полный ответ с секретом в общедоступных логах.

bash
# Изменение названия и дневного бюджета существующего ключа
curl --fail-with-body -sS -X PATCH \
  "https://api.kodikrouter.ru/v1/api-keys/$KODIK_KEY_ID" \
  -H "Authorization: Bearer $KODIK_MANAGEMENT_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"name":"Production app updated","daily_credit_limit":"500.000000"}'
bash
# Отзыв обычного API-ключа
curl --fail-with-body -sS -X DELETE \
  "https://api.kodikrouter.ru/v1/api-keys/$KODIK_KEY_ID" \
  -H "Authorization: Bearer $KODIK_MANAGEMENT_KEY"

Что возвращает список

Каждый элемент содержит 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 не включает это разрешение.

По умолчанию возвращается статистика всей организации, включая другие ключи. API-ключ с gateway:read не ограничивает отчёт собственными запросами. Параметр api_key_id фильтрует отчёт, но не является границей прав доступа. Данные чужой организации недоступны.

Эндпоинты статистики

Метод и путьОтвет
GET /v1/usageМассив записей запросов: модель, провайдер, токены, стоимость, длительность, статус, error_code и request_id.
GET /v1/usage/summaryfrom, to, granularity, points и totals: число запросов, входные/выходные токены, расходы и число маскированных сущностей.
GET /v1/usage/by-modelfrom, to и models: модель/провайдер, токены, стоимость и percent_of_tokens.
GET /v1/usage/activityitems и next_cursor: журнал запросов с фильтрами и поиском. Также доступен GET /v1/activity.
GET /v1/usage/export.jsonJSON-файл со всеми подходящими записями без постраничного ограничения; включает api_key_name.
GET /v1/billing/summaryБаланс credit_balance, расходы spend_month_to_date и spend_all_time, валюта и лимиты тарифа организации.
GET /v1/billing/invoicesОбъект items с последними платежами/счетами (до 50).

Фильтры и страницы

Путь после /v1Параметры
/usagefrom, to (YYYY-MM-DD), model, environment, api_key_id; limit 1–200 (по умолчанию 200), offset ≥ 0.
/usage/summaryfrom, to (YYYY-MM-DD), model, environment, api_key_id; granularity=day или hour (по умолчанию day).
/usage/by-modelfrom, to (YYYY-MM-DD), api_key_id. Фильтров model и environment нет.
/usage/activity, /activityfrom, to (ISO 8601 с временем), model, status, environment, api_key_id, q (поиск по request_id или ID модели), cursor; limit 1–200 (по умолчанию 50).
/usage/export.jsonfrom, 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. Замените даты на нужный период.

bash
curl --fail-with-body -sS --get \
  https://api.kodikrouter.ru/v1/usage/summary \
  -H "Authorization: Bearer $KODIK_MANAGEMENT_KEY" \
  --data-urlencode "api_key_id=$KODIK_KEY_ID" \
  --data-urlencode 'from=2026-11-01' \
  --data-urlencode 'to=2026-11-04' \
  --data-urlencode 'granularity=day'

Сокращённый пример ответа; points содержит показатели для каждого периода с записями, totals — для всего диапазона:

json
{
  "from": "2026-11-01",
  "to": "2026-11-04",
  "granularity": "day",
  "points": [{"date":"2026-11-04","requests":2,"tokens_in":100,"tokens_out":50,"cost_rub_exact":"0.123456"}],
  "totals": {"requests":2,"tokens_in":100,"tokens_out":50,"cost_rub_exact":"0.123456","currency":"RUB","masked_entity_count":0}
}

Выгрузка JSON

bash
curl --fail-with-body -sS --get \
  https://api.kodikrouter.ru/v1/usage/export.json \
  -H "Authorization: Bearer $KODIK_MANAGEMENT_KEY" \
  --data-urlencode "api_key_id=$KODIK_KEY_ID" \
  --data-urlencode 'from=2026-11-01' \
  --data-urlencode 'to=2026-11-04' \
  --output usage.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.