Перейти к основному содержимому

Группы пользователей, лимиты команд и новые маршруты API

Мы добавили работу с командой: пользователей аккаунта теперь можно объединять в группы, назначать им лимит расходов и смотреть статистику в разрезе группы. Кроме того, Responses API заработал на общем адресе Caila, а клиенты Anthropic получили доступ к моделям OpenRouter.

Что нового

  • Группы пользователей и лимиты на группу: объедините участников аккаунта в группы, назначьте тимлида и ограничьте расходы каждой команды.
  • Аналитика в разрезе группы: расходы, запросы и журнал теперь можно смотреть по конкретной группе, а журнал выгружать в CSV вместе с колонкой группы.
  • Responses API на общем адресе: работайте с Responses там же, где с остальными методами, — по адресу https://caila.io/api/openai.
  • Модели OpenRouter в формате Anthropic: клиент Anthropic Messages может обращаться к моделям OpenRouter, включая веб-поиск.
  • Подключение кодинг-агентов по актуальному каталогу: инструкции для Claude Code, OpenCode, Codex CLI и других клиентов собираются из живого каталога моделей.
  • Чат подбирает рабочие маршруты: в списке остаются только те модели и маршруты, для которых каталог объявляет способ выполнить чат-запрос, а для моделей с рассуждениями появился выбор уровня.
  • Цены моделей OpenRouter обновляются автоматически: платформа периодически сверяется с прайсом провайдера, поэтому в каталоге видна актуальная цена.
  • Видео среди модальностей моделей: в каталоге появился фильтр Видео, а видео-модели помечены отдельным значком.

Группы пользователей и лимиты

Чтобы организовать работу команды, объединяйте пользователей в группы в разделе API-ключиОрганизация.

Вкладка Организация в разделе API-ключи

В карточке группы можно управлять ее составом, бюджетом и ролями:

  • Добавлять участников: в списке СоставДобавить участников доступны пользователи аккаунта, которых еще нет в группе. О том, как добавить пользователя в аккаунт, читайте в документации.
  • Назначать тимлида: роль назначается при редактировании группы. Выбрать можно только текущего участника группы, поэтому сначала добавьте его в состав.
  • Задавать лимит группы: при создании или редактировании группы укажите сумму в рублях и период (минута, час, день или месяц).

Тимлид управляет ключами своих групп, меняет их настройки и состав участников. Назначить тимлида может только владелец аккаунта (передать эту роль самостоятельно тимлид не может).

примечание

Лимиты группы применяются дополнительно к лимитам самого API-ключа: система сначала проверяет ограничения ключа, а затем — группы. Подробнее о лимитах читайте в документации.

Аналитика по группам

Чтобы оценивать работу конкретных команд, используйте фильтр Группа в разделе Аналитика. Он пересчитывает как сводные показатели, так и данные на вкладке Журнал запросов.

Как только вы создадите группы в аккаунте, в журнале появится колонка Группа. Она также будет добавляться в CSV-выгрузку отдельным столбцом group.

Фильтровать данные можно по одной группе за раз.

Для просмотра запросов без привязки к командам используйте пункт Без группы. В эту категорию попадают запросы, если у API-ключа нет владельца или если владелец не состоит ни в одной группе.

примечание

Статистика по группам собирается с момента появления этой функции и только там, где можно определить пользователя: по ключам с назначенным владельцем и по запросам из чата. Остальные показатели учитываются в категории Без группы.

Responses API на общем адресе

Теперь вы можете обращаться к Responses API через общий адрес Caila (ранее поддерживались только отдельные адреса провайдера и адаптера). Если ваш клиент уже использует https://caila.io/api/openai, менять настройки адреса не нужно: модель указывается так же, как и в других запросах.

Доступные операции:

  • создание ответа (стандартное, потоковое и фоновое);
  • получение ответа по идентификатору;
  • отмена и удаление ответа;
  • получение списка входных элементов.
Пример запроса
curl -L 'https://caila.io/api/openai/v1/responses' \
-H 'Content-Type: application/json' \
-H 'Authorization: <ваш_Caila_API-ключ>' \
-d '{
"model": "gpt-5.6-sol",
"input": "Are semicolons optional in JavaScript?"
}'

Также для параметра mlp_include_cost добавлена поддержка потокового режима. Теперь вы можете получать стоимость ответа на лету. Раньше на общем адресе и адресе провайдера она возвращалась только для стандартных ответов.

Модели OpenRouter через клиент Anthropic

Если ваш клиент работает по Anthropic Messages API, теперь вы можете обращаться через него и к моделям OpenRouter. Для этого укажите базовый URL https://caila.io/api/anthropic, ваш API-ключ Caila и название нужной модели.

Заводить ключ агрегатора или перенастраивать клиента не нужно: Caila автоматически выберет маршрут и адаптирует форматы запроса и ответа. Если нужную модель обслуживает профильный провайдер, Caila отдаст приоритет ему.

Кроме того, при работе с OpenRouter в формате Anthropic теперь поддерживается веб-поиск. Вы можете задавать лимит запросов и списки разрешенных доменов — Caila обработает эти параметры, а в ответе вернет ссылки на источники в виде цитат в тексте.

Веб-поиск оплачивается: его стоимость входит в общую стоимость запроса и отдельной строкой в детализации расходов не выделяется.

Подключение кодинг-агентов

На странице Интеграции обновились инструкции для Claude Code, Claude Desktop, OpenCode, Codex CLI, Cursor и других OpenAI-совместимых клиентов. Теперь примеры настройки используют не жестко заданный список моделей, а подтягивают актуальный каталог из Caila.

Упростилась работа в самих клиентах:

  • Claude Code достаточно настроить один раз. При запуске агент сам запрашивает список доступных моделей у Caila, поэтому обновлять конфигурацию при появлении новых не нужно.
  • OpenCode требует авторизации только один раз — клиент самостоятельно сохраняет API-ключ.

Настройки моделей в чате

Мы улучшили работу чата, чтобы тестировать модели было удобнее и прозрачнее:

  • Только рабочие маршруты: в списке теперь отображаются только совместимые пары модели и маршрута. Вы больше не столкнетесь с ошибками при отправке запроса из-за несовместимости форматов.
  • Нативная маршрутизация: запросы отправляются в исходном формате выбранного маршрута (включая Anthropic Messages), а ответы автоматически приводятся к единому виду.
  • Управление рассуждениями: для моделей OpenAI с поддержкой рассуждений можно настраивать параметр reasoning_effort вместо обычного переключателя. Настройка доступна на вкладке ПараметрыРасширенные настройки (набор значений зависит от модели).

Исправления

Запросы к моделям

  • Начавшийся потоковый ответ, который замолчал, больше не держит соединение до общего получасового лимита: поток закрывается по отдельному таймауту бездействия, порог тишины — пять минут. Если клиенту еще ничего не успело уйти, он получает ошибку со статусом 504 вместо пустого ответа 500 через полчаса.
  • При таймауте ожидания модели эндпоинты LLM API отвечают статусом 504, а не 500.
  • Когда первая попытка запроса не удалась и Caila повторяет ее на резервном провайдере, ответ второй попытки доходит до клиента — раньше он терялся, и запрос завершался ошибкой по истечении лимита.
  • Запрос в формате Anthropic к модели другого вендора больше не отдает ошибку 400 из-за инструмента без описания параметров — в том числе встроенных инструментов Claude Code.
  • В потоковом ответе формата Anthropic блок содержимого открывается до первой порции текста, а событие открытия приходит ровно один раз на блок. Раньше клиент на Anthropic SDK — в том числе Claude Code — мог оборвать такой поток с ошибкой Content block not found и перейти в обычный режим.
  • Размышления модели доходят до клиента отдельным блоком thinking и на маршрутах с конверсией формата — раньше ответ мог прийти пустым, хотя токены размышлений тарифицировались.
  • Вызов инструмента без аргументов возвращается клиенту как {} вместо пустой строки: ответ разбирается OpenAI-совместимыми клиентами.
  • Запрос к недавно появившимся моделям OpenRouter больше не отвечает ошибкой о неизвестной модели: список моделей у провайдера обновляется вместе с рассылкой цен, даже если в ней встретился незнакомый вендор.
  • Запрос с полным именем модели, включающим дату выпуска, выполняется на нужном маршруте.
  • Список моделей провайдера OpenAI и карточка отдельной модели возвращают данные, а не ошибку; обращение к нереализованному методу отвечает статусом 501.
  • Невалидное тело запроса к сервису openai-proxy — битый JSON или значение, не прошедшее проверку, — возвращает статус 400 с описанием ошибки вместо 500.
  • Подсчет токенов в формате Anthropic (v1/messages/count_tokens — его вызывает, например, команда /context в Claude Code) выполняет нативный провайдер Anthropic. Раньше запрос мог уйти к другому Claude-совместимому провайдеру, который считает токены по-своему, а /context отправляет такие запросы пачкой — и команда отрабатывала заметно медленнее.
  • В блоке usage на маршруте OpenRouter больше нет полей cost_details и is_byok.
  • Чат больше не отправляет одновременно temperature и top_p на нативном маршруте Anthropic — запрос к моделям Claude не отдает ошибку 400.
  • Потоковые ответы теперь тоже несут служебные заголовки Z-requestId, Z-Server-Time, Z-Gateway-Time и Z-Provider — раньше для потоковой передачи они не добавлялись, и запрос было не с чем сопоставить в поддержке.
  • В карточке моделей Veo и Imagen пример запроса собран под тот вызов, которым эти модели работают на самом деле: для Veo — запуск генерации и опрос готовности, для Imagen — генерация изображения. Раньше в примере стоял вызов чат-модели, которого у этих моделей нет.
  • В карточке модели примеры запросов соответствуют тому, что модель умеет: чат-моделям Yandex примеры вернулись, а у моделей без чата поле примера пустое вместо неверного примера чат-модели.

Расходы и биллинг

  • Запрос, который завершился ошибкой или не дождался ответа, больше не тарифицируется — даже если ответ модели пришел уже после того, как клиент получил ошибку.
  • В потоковых ответах моделей OpenRouter в завершающем блоке usage появилась стоимость запроса в рублях — как в обычном ответе.
  • Расход токенов аудио-моделей OpenAI снова учитывается, а аудио-токены на входе и выходе тарифицируются по своей ставке отдельно от текстовых.
  • Повторяющаяся часть запроса, которую DeepSeek взял из своего кеша, помечается в детализации расходов как кешированные входные токены и не учитывается дважды.
  • Длинные запросы к gpt-5.5 и gpt-5.6 через сервис openai-proxy тарифицируются по ставке длинного контекста (вход свыше 272 тысяч токенов), а цены этого сервиса приведены к общему прайсу.
  • В детализации расходов разбивка по типам токенов больше не дублируется на уровне API-ключа, а стоимость моделей с оплатой за вызов считается по заданной цене, умноженной на число вызовов.
  • Уведомления об изменении цен больше не приходят, когда меняется персональная скидка аккаунта, а не цена модели.
  • Привязанную банковскую карту снова можно отвязать.

Интерфейс

  • Первый вход нового пользователя больше не заканчивается ошибкой сервера.
  • Сохранение API-ключа больше не стирает адреса для уведомлений и список разрешенных сервисов — в том числе при массовых действиях в таблице ключей.
  • Страница аналитики отдельного ключа показывает фактические данные: расходы, токены, запросы, ошибки и разбивку по моделям.
  • Опция Новый лимит доступен сразу в настройках API-ключа больше не сбрасывается при сохранении — в том числе у ключа без лимитов расходов.
  • Включенная опция Новый лимит доступен сразу поднимает доступный остаток в момент увеличения лимита, а выключенная оставляет остаток прежним. Раньше в новом интерфейсе галка действовала наоборот.
  • Если у пользователя нет прав на управление аккаунтом, кнопки управления картой неактивны, а подсказка объясняет причину.
  • Неудачная выгрузка журнала запросов в CSV показывает сообщение об ошибке вместо тишины.

MLOps-платформа

  • Имя ресурс-группы с пробелом или кириллицей больше не мешает запуску сервисов и обучению: в манифест пода оно попадает приведенным к виду, который допускает кластер.
  • Группа сервисов создается после исправления занятого имени, а сообщение об ошибке показывается прямо у поля.

Обновление уже доступно для всех пользователей. Расскажите, как вам работается с группами, в нашем Telegram-сообществе! 🚀