AIREITER

Дашборд активности OpenRouter: расходы, экспорт и подводные камни API

Последнее обновление: 2026-08-18 00:27:49

17 августа 2026 года OpenRouter показал на собственном примере, как одна из preview-моделей незаметно съедала около $6.2K в месяц — примерно в 25 раз больше смешанной ставки организации. При этом 98% расходов пришлось на один API-ключ, использовавшийся в пакетном конвейере. Запущенный в тот же день дашборд активности как раз и нужен для таких ситуаций: он помогает найти проблему за минуты, а не за месяцы. Интерфейс получился удачным: расходы, токены, доля попаданий в кэш и детализация отдельных запросов собраны в одном месте. А вот лежащий под ним бета-версия Analytics API пока заметно менее отполирована — дальше разберём его ограничения.

Урок на $6.2K: что умеет находить дашборд активности OpenRouter

Внутренний кейс из публикации о запуске отлично показывает, от каких ошибок защищает новый инструмент. За месяц preview-модель потратила $6,185 на 250M токенов — около $24.7 за миллион токенов при доле попаданий в кэш 7.6%. Детализация по API-ключам показала, что $6,067 из этой суммы пришлись на ключ batch-pipeline: 127M токенов и 37,000 запросов. Для массовой пакетной обработки несложных задач это примерно $48/Mtok. Исправление оказалось элементарным — достаточно было заменить модель одной строкой кода. Полный разбор есть в руководстве по контролю расходов.

Страница анонса дашборда активности OpenRouter

Вместе с дашбордом появились представление Explore для произвольных запросов, Trends для отслеживания изменений, Guardrails для событий, связанных с prompt injection и чувствительными данными, логи на уровне запросов, бета-версия Analytics API, а также устанавливаемый openrouter-analytics skill на GitHub для coding-агентов.

На какие вопросы отвечает каждая вкладка Activity

Дашборд активности OpenRouter устроен вокруг задач, а не просто набора меню. Основную работу с расходами выполняют три вкладки, и каждая отвечает на свой вопрос.

Overview: сколько мы потратили?

На Overview отображаются пять ключевых показателей: общие расходы, число запросов, объём токенов, доля попаданий в кэш и смешанная стоимость миллиона токенов. Для каждого есть мини-график и сравнение с предыдущим периодом. Ниже находятся самые активные пользователи и приложения, расходы по моделям, разделение между кредитами OpenRouter и оценочными расходами BYOK, а также количество prompt- и completion-токенов. Это вкладка для ситуации, когда нужно быстро понять саму сумму.

Trends: что изменилось с прошлого периода?

Trends ранжирует не абсолютные значения, а изменения — по моделям, пользователям, API-ключам и приложениям. Здесь удобно ловить агента, внезапно вышедшего из-под контроля, неожиданно популярную модель или внутренний инструмент, который за короткое время превратился из эксперимента в стандартный. Overview показывает, что что-то дорого стоит, а Trends — что именно недавно стало дорогим.

Explore: как самостоятельно разрезать данные?

Explore — это конструктор запросов. Среди доступных метрик — расходы, запросы, несколько категорий токенов, доля попаданий в кэш, смешанная стоимость миллиона токенов, расходы BYOK и кредитов, а также задержка и пропускная способность на уровнях P50/P90/P99.

Группировать данные можно максимум по двум измерениям за раз. Доступны модель, провайдер, API-ключ, приложение, пользователь, workspace, страна, регион, длина контекста, сессия, генерация, пользовательские ID и классификаторы. Временная агрегация варьируется от минуты до месяца, графики могут быть столбчатыми, линейными или точечными, а любой график разрешено сохранить как приватный или общий для организации. Есть два ограничения: третий уровень группировки будет отклонён, а содержимое prompt и completion в логах появится только в том случае, если приватное логирование ввода и вывода включили до выполнения запроса.

Экспорт в CSV и PDF без обращения к API

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

  1. Откройте страницу Activity.
  2. Выберите период и группировку — по модели, API-ключу или создателю.
  3. Откройте меню параметров в правом верхнем углу.
  4. Выберите Export to….
  5. Укажите CSV или PDF.

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

Фильтр по времениИнтервал
1 Hourпо минутам
1 Dayпо часам
1 Monthпо дням
1 Yearпо месяцам

В документации есть ещё два важных уточнения. Расходы BYOK в таких отчётах — это оценка по рыночным ставкам провайдеров. От реального внешнего счёта она может отличаться, поскольку скидки конкретных провайдеров не учитываются. Токены рассуждений входят в completion-токены с точки зрения биллинга, но в отчёте показываются отдельно: «думающая» часть счёта видна, но повторно не учитывается.

Первый запрос к Analytics API за пять минут

Analytics API предоставляет те же данные, которые рассчитывает Explore, через два эндпоинта. Но это именно бета-версия, поэтому начинать стоит не с запроса, а с изучения доступной схемы.

Пропуск только по management-ключу

Для Analytics API нужен management key; обычный ключ для inference-запросов получит HTTP 403. Верно и обратное: как отмечается в руководстве по контролю расходов, management-ключи не могут отправлять запросы к моделям. Это уменьшает ущерб при утечке ключа, хотя данные о расходах всей организации он всё равно раскрывает. Совет из руководства предельно прямой: обращайтесь с ним как с любым другим секретом.

Сначала meta, потом query

GET /api/v1/analytics/meta возвращает поддерживаемые сейчас метрики, измерения, операторы фильтрации и варианты детализации. Перед каждым запуском автоматизации стоит обращаться к этому эндпоинту: в бета-версии поддержка может меняться. Сам запрос выполняется через POST /api/v1/analytics/query. Документированный пример cURL:

curl -X POST https://openrouter.ai/api/v1/analytics/query \
  -H "Authorization: Bearer <management-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "metrics": ["request_count"],
    "dimensions": ["model"],
    "granularity": "day",
    "limit": 100,
    "time_range": {
      "start": "2026-08-01T00:00:00Z",
      "end": "2026-08-08T00:00:00Z"
    }
  }'

В ответе строки находятся внутри data.data, а рядом возвращается блок metadata с полями query_time_ms, row_count и truncated. В руководстве приведены примеры, где запрос с одной строкой выполняется за 17 мс, так что такие вызовы недороги. Сам процесс описан как доступный только для чтения и бесплатный сверх уже существующих расходов на использование. Документированные ошибки: 400 (некорректный запрос), 401 (нет авторизации), 403 (неподходящий тип ключа), 408 и 500.

Четыре запроса для поиска перерасхода

В официальном руководстве пять рецептов. Если выстроить их в последовательность, получится вполне рабочий алгоритм поиска лишних расходов.

1. Какая модель расходует больше всего? Первый запрос из руководства запрашивает total_usage, request_count, tokens_total и cache_hit_rate, группируя результат по model и сортируя модели по расходам:

{
  "metrics": ["total_usage", "request_count", "tokens_total", "cache_hit_rate"],
  "dimensions": ["model"],
  "order_by": { "metric": "total_usage", "direction": "desc" },
  "limit": 10,
  "time_range": { "start": "2026-07-01T00:00:00Z", "end": "2026-08-01T00:00:00Z" }
}

Главное производное значение — эффективная стоимость миллиона токенов: total_usage / tokens_total × 1e6. Сравните её со своей смешанной ставкой — той же формулой без измерений. Эвристика из руководства проста: модель, стоимость которой во много раз выше смешанной ставки, заслуживает проверки в первую очередь. Именно так обнаружилась аномалия с preview-моделью, оказавшейся в 25 раз дороже.

2. Какой API-ключ виноват? Добавьте фильтр по точному slug модели и сгруппируйте данные по api_key_id. В результатах ID сопоставляются с понятными человеку названиями — так и выяснилось, что на batch-pipeline пришлось $6,067 из общей проблемы на $6,185. Для группировки используйте именно api_key_id, а не имена ключей, полученные после разрешения. Поле user_email поможет сверить расходы с внутренними учётными данными.

3. На что именно ушли деньги? Разложите дневные расходы на составляющие:

МетрикаЧто означает
usage_upstreamисходная стоимость inference
usage_cacheэкономия на кэшировании или стоимость записи в кэш
usage_dataскидки, обычно отрицательное значение
usage_webнадбавка за веб-поиск
usage_fileнадбавка за обработку файлов

Соотношение prompt- и completion-токенов около 20:1 указывает на чрезмерно большой контекст, а высокая доля reasoning-токенов — на оплату рассуждений, которые могут быть не нужны. В первую очередь ищите возможности для кэширования в трафике с большим объёмом prompt-токенов и низкой долей попаданий в кэш. Если кэш уже работает эффективно, переключайтесь на состав моделей. Большая доля входных данных — это норма, а не исключение: анализ открытых данных OpenRouter по категории программирования показал, что 93.4% этих токенов были входными.

4. Сработало ли исправление? Повторите первый запрос как недельный временной ряд с группировкой по api_key_id. В официальном примере расходы ключа batch-pipeline упали с $1,402.50 за неделю 31 мая до $11.20 за неделю 7 июня. Удачная замена модели выглядит как обрыв на графике, а не как плавный спад.

Недельные расходы ключа batch-pipeline до и после замены модели одной строкой

Если после первого запроса вы решите перейти на более дешёвую модель, следующим местом для принятия такого решения станет собственный маршрутизатор OpenRouter. О различиях между автоматической и фиксированной маршрутизацией рассказываем в нашем руководстве по auto router OpenRouter.

Шесть бета-ограничений, о которых справочник умалчивает

Когда запрос составлен правильно, API работает как описано. Но перечисленные ниже нюансы тоже задокументированы — просто разбросаны по примечаниям в руководстве.

  1. Три измерения возвращают 400. Лимит составляет два; для model × key × day понадобятся несколько запросов или другая временная детализация.
  2. group_limit может незаметно обрезать временные интервалы. Если не указывать параметр, OpenRouter автоматически рассчитает безопасное значение. Слишком маленькое значение приведёт к исчезновению недель из временного ряда. При отсутствии измерений параметр полностью игнорируется.
  3. Метрики количества иногда приходят строками. В справочнике показаны числа, но API может вернуть строки, поэтому обрабатывайте оба варианта.
  4. Названия столбцов временных рядов неоднозначны. Один и тот же интервал может называться date__day или created_at__day — в зависимости от формы запроса.
  5. Неиспользуемые компоненты стоимости возвращаются как null, а не как ноль. В любом скрипте агрегации нужна проверка на null.
  6. metadata.truncated: true означает, что итоговые значения неполные. Увеличьте limit (по умолчанию 1,000) или сузьте период и повторите запрос.

Дашборд, API или собственный конвейер?

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

Вам нужно…Используйте
Быстро посмотреть расходы, токены и долю попаданий в кэшActivity Overview
Понять, что изменилось и где наблюдается всплескTrends
Разово срезать данные и поделиться результатомExplore + экспорт CSV/PDF
Планировать отчёты, настраивать уведомления и внутренние дашбордыAnalytics API
Объединять несколько провайдеров, задавать бюджеты пользователей и искать собственные аномалииСобственный конвейер на логах использования и вебхуках

Путь к собственной системе уже хорошо протоптан. Один из участников r/FinOps написал:

«Собрал собственный трекер расходов на ИИ в Obsidian, потому что цена модели за ночь выросла с центов до 3€».

В этой ветке и в обсуждении на r/openrouter под названием «Ценообразование длинного контекста должно быть прозрачнее» причина одна и та же: локальные оценки расходятся с выставленным счётом из-за маршрутизации, кэширования, reasoning-токенов и стоимости длинного контекста. За эталон стоит брать зафиксированное в дашборде использование. Если строите собственную систему, сверяйте её с этими данными, а не с собственной таблицей цен.

Есть и более простой способ распределять расходы — совет от разработчика, который провёл на платформе шесть месяцев: добавляйте к запросам заголовок X-Title, чтобы каждое приложение или эксперимент отображались в Activity под собственным именем. А если расходы уже распределены между несколькими провайдерами, а не сосредоточены в одном маршрутизаторе, единый API — например, AIReiter — позволяет решить задачу агрегации ещё до её появления.

FAQ

Нужен ли management key для дашборда активности OpenRouter?

Нет. Дашборд открывается в интерфейсе под обычной учётной записью. Management key нужен только для эндпоинтов Analytics API — /api/v1/analytics/meta и /api/v1/analytics/query.

Платный ли Analytics API OpenRouter?

В руководстве аналитический workflow описан как доступный только для чтения и бесплатный: вы запрашиваете собственные данные об использовании, а не платите за каждый вызов. При этом inference, отражённый в этих данных, по-прежнему оплачивается.

За какой период доступны данные активности OpenRouter?

Старый эндпоинт /api/v1/activity охватывает предыдущие 30 завершённых дней по UTC. В документации нового Analytics API срок хранения не указан — в примерах используется период в месяц, — поэтому историю за длительный срок пока стоит считать неподтверждённой. Всё, что нужно сохранить, лучше экспортировать в CSV.

Почему в логах Activity я не вижу prompts и responses?

Содержимое prompt и completion сохраняется только для запросов, при выполнении которых было включено приватное логирование ввода и вывода. В анонсе это сказано прямо: историческое содержимое prompt недоступно, если логирование не было включено заранее. Суммарные показатели записываются, а содержимое — только по желанию.

Что нужно учитывать перед внедрением

Всё описанное уже можно использовать, и одного первого запроса достаточно, чтобы оправдать пятиминутную настройку. Главный риск — изменения со временем: это обозначенная как beta система, поэтому набор поддерживаемых метрик и измерений может меняться. Сам OpenRouter рекомендует перед автоматизацией заново читать /meta, а не полагаться на жёстко заданную схему. Добавьте такую проверку в cron-задачи — и прозрачность дашборда не будет зависеть от того, насколько зрелым окажется API.

Читайте также: руководство по auto router OpenRouter · лучшие бесплатные модели OpenRouter для программирования · руководство по ценам OpenRouter