Группы пользователей, лимиты команд и новые маршруты 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-ключа: система сначала проверяет ограничения ключа, а затем — группы. Подробнее о лимитах читайте в документации.
Аналитика по группам
Чтобы оценивать работу конкретных команд, используйте фильтр Группа в разделе Аналитика. Он пересчитывает как сводные показатели, так и данные на вкладке Журнал запросов.
Как только вы создадите группы в аккаунте, в журнале появится колонка Группа. Она также будет добавляться в 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-сообществе! 🚀