AIREITER

Цены OpenRouter Batch API: стоит ли ждать ради скидки 50%?

Последнее обновление: 2026-09-23 00:41:52

Скидка 50% на API выглядит убедительно — пока результат не приходит после дедлайна. OpenRouter Batch API хорошо подходит для фоновой обработки текста и эмбеддингов, но не для интерактивных запросов: это асинхронный интерфейс с окном выполнения до 24 часов, а заявленная скидка распространяется не на все составляющие счёта одинаково.

Короткий ответ: когда выбирать Batch API

OpenRouter Batch API стоит использовать для разметки, оценок, эмбеддингов, суммаризации накопившихся данных и других задач, результат которых может подождать. Чаты для пользователей, IDE-агенты, сценарии с веб-поиском и мультимодальные запросы лучше оставлять на синхронном API.

OpenRouter заявляет, что Batch обычно даёт примерно на 50% более низкую цену за токен более чем для 70 моделей. Формальное окно выполнения составляет 24 часа. В анонсе запуска OpenRouter сообщал о медиане в 7 минут и завершении 90% задач в течение часа во время беты; это наблюдаемые показатели, а не SLA (официальный анонс).

На что действительно действует скидка 50%

Скидка в первую очередь относится к стоимости токенов модели. Это не автоматическое уменьшение цены всех компонентов инференса.

Статья расходов или параметрКак работает в Batch API
Входные и выходные токеныОбычно примерно 50% от стандартной цены модели
Вызовы веб-поискаТарифицируются по обычным ставкам, согласно официальному quickstart
Кеширование промптовЗависит от модели; проверяйте страницу модели
BYOK-инференсПровайдер выставляет счёт за инференс напрямую; OpenRouter отдельно указывает свою комиссию BYOK
Точная цена и доступностьПодтверждайте на странице конкретной модели и по использованию завершённого batch-задания

В разборе стоимости батчинга Will Cygan приводит пример с Claude Sonnet 5: 10 миллионов входных и 2 миллиона выходных токенов стоят $40 при синхронном вызове и $20 в batch-режиме. Это расчёт для конкретной модели, а не универсальный тариф.

«В batch-маршруте цена составляет ровно половину от синхронного тарифа». — Will Cygan, Batching (LLM Inference)

Не закладывайте экономию в бюджет, не проверив провайдера и модель. Пользователь @fogelmania сообщил, что одна бета-модель обошлась дороже параллельных синхронных вызовов, потому что её batch-трафик ушёл к другому провайдеру: пост @fogelmania. Это повод анализировать фактическую стоимость завершённых задач, а не доказательство того, что так ведут себя все модели.

Batch — это задача в очереди, а не ускоренный endpoint

В анонсе Batch API и quickstart OpenRouter описывает workflow с отдельной задачей, а не мгновенный ответ. Успешная отправка возвращает HTTP 202 Accepted, ID batch-задачи и статус validating. Обычный жизненный цикл выглядит так:

validating → in_progress → finalizing → completed

Другие финальные статусы — failed, expired и cancelled. Воркеру следует сохранять ID batch-задачи и опрашивать её до финального статуса, а не держать интерактивный запрос открытым.

OpenRouter сообщил о более чем 230 000 batch-задач во время беты: медиана выполнения составила 7 минут, а 90% задач завершались в течение часа. В тесте @luismmolina в один из моментов в день запуска получилось 5–8 минут (пост с тестом); эти наблюдения полезны для контекста, но не отменяют 24-часовую границу при планировании.

Как встроить Batch API без лишней переделки

В текущем quickstart используется встроенный JSON-массив requests, а не загрузка JSONL-файла. У каждой строки должен быть уникальный custom_id: по нему готовый ответ или ошибка сопоставляются с исходной записью.

Минимальная структура запроса:

{
  "endpoint": "/v1/chat/completions",
  "model": "openai/gpt-4o",
  "requests": [
    {
      "custom_id": "ticket-0001",
      "body": {
        "messages": [
          {"role": "user", "content": "Classify this ticket: ..."}
        ]
      }
    }
  ]
}

В quickstart указан запрос POST https://openrouter.ai/api/beta/batches. Endpoint верхнего уровня и модель задаются для всего batch-задания, поэтому для разных API-форматов или моделей нужны отдельные batch-задачи. Поддерживаются Chat Completions, Responses, Anthropic Messages и Embeddings.

После отправки опрашивайте GET https://openrouter.ai/api/beta/batches/:id. Завершённая batch-задача возвращает результаты inline. В каждой строке есть либо response, либо error, а request_counts отдельно показывает общее число, количество завершённых и неудачных строк. Повторяйте только неудачные строки, используя их custom_id; не перезапускайте автоматически весь batch.

Если поведение провайдера важно для политики работы с данными, BYOK или URL-ресурсов, закрепляйте провайдера через документированные provider controls, а не полагайтесь на маршрутизацию к самому дешёвому провайдеру. Перед запуском убедитесь, что выбранные модель и провайдер поддерживают подходящий batch-маршрут.

Где Batch API ломает сценарий

Согласно ограничениям quickstart, Batch — прежде всего текстовый workflow. Он отклоняет части запроса с изображениями, аудио, видео и файлами. Ресурсы в Base64 и URI вида data: не принимаются; доступность ресурсов по URL зависит от провайдера. Собственный плагин веб-поиска OpenRouter в Batch недоступен.

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

Пример расчёта: когда экономия настоящая

Представим 10 000 обращений в поддержку. На каждое приходится 1 000 входных и 200 выходных токенов. Итого — 10 миллионов входных и 2 миллиона выходных токенов.

РежимВходные токеныВыходные токеныИтого
Синхронный пример10M × $2 = $202M × $10 = $20$40
Пример для Batch10M × $1 = $102M × $5 = $10$20

Номинальная экономия составит $20 за запуск, или $1 040 в год при еженедельном выполнении этого примера. Фактическая выгода будет ниже, если восстановление, мониторинг или экстренный синхронный fallback обходятся дороже номинальной разницы.

Учтите этот резерв при принятии решения. Если дедлайн жёсткий, сопоставьте 24-часовое окно с оставшимся временем на повторный запуск в сокращённом объёме или синхронный fallback. Batch, который дешевле за токен, но бесполезен после дедлайна, не будет дешевле для бизнес-процесса.

FAQ

OpenRouter Batch API всегда стоит вдвое дешевле?

Нет. OpenRouter описывает скидку как типичную и зависящую от модели. Веб-поиск оплачивается по стандартным ставкам, кеширование зависит от модели, а при BYOK стоимость инференса у провайдера отделена от комиссии OpenRouter.

Сколько выполняется batch-задача OpenRouter?

Поддерживаемое окно выполнения — 24 часа. Данные о времени работы в бете полезны для ориентира, но не являются гарантированным уровнем сервиса.

Можно загрузить JSONL или смешать модели?

Quickstart принимает встроенный JSON-массив requests. Модель и API-формат действуют на всё batch-задание, поэтому для разных моделей или форматов endpoint нужны отдельные batch-задачи.

Можно повторить только строки с ошибками?

Да. Если завершённая batch-задача вернула ошибки на уровне строк, используйте custom_id каждой строки, чтобы собрать меньший batch для повтора. Ошибку всего batch-задания, истечение срока или отмену нужно обрабатывать отдельно, поскольку результаты могут быть недоступны.

Что выбрать: Batch или синхронный API?

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

Практический вывод: Batch нужен не для всех задач

Перед переносом нагрузки проверьте пять вещей:

  1. На странице модели указан подходящий batch-маршрут и ожидаемый провайдер.
  2. Бизнес-процесс выдерживает полное 24-часовое окно.
  3. У каждой строки есть стабильный custom_id и план повторной обработки.
  4. Приложение фиксирует фактическое использование и стоимость завершённых задач.
  5. Для входных данных и результатов определены владелец и политика очистки.

В quickstart OpenRouter указано, что входные данные и результаты batch-задач хранятся 30 дней, если не удалить их раньше. Удаляйте завершённые batch-задачи, когда их артефакты больше не нужны.

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