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

Через ProxyAPI в пакетном режиме поддерживаются эндпоинты:

ЭндпоинтНазначение
/v1/chat/completionsГенерация текста (Chat Completions)
/v1/responsesГенерация текста (Responses API)
/v1/embeddingsВекторные представления (эмбеддинги)

Путь к API — https://api.proxyapi.ru/openai/v1. Форматы запросов и ответов идентичны оригинальному Batch API, поэтому официальный SDK полностью совместим.

  1. Подготовка файла. Запросы оформляются в файл JSONL — по одному запросу в строке.
  2. Загрузка файла. Файл загружается через POST /v1/files с purpose=batch. В ответ приходит file_id.
  3. Создание пакета. Создаёте batch, ссылаясь на input_file_id.
  4. Опрос статуса. Периодически запрашиваете пакет по id, пока status не станет completed.
  5. Получение результатов. Скачиваете файл результатов по output_file_id.

Каждая строка — отдельный запрос. Поле body совпадает с телом обычного запроса к соответствующему эндпоинту:

{"custom_id": "req-1", "method": "POST", "url": "/v1/responses", "body": {"model": "gpt-5.1", "input": "Привет!", "max_output_tokens": 500}}
{"custom_id": "req-2", "method": "POST", "url": "/v1/responses", "body": {"model": "gpt-5.1", "input": "Как дела?", "max_output_tokens": 500}}
  • custom_id — уникальный идентификатор строки. По нему вы соотносите ответ с запросом: порядок строк в файле результатов не гарантирован.
  • url — допустимы /v1/chat/completions, /v1/responses и /v1/embeddings.
  • Один файл — одна модель. Все запросы в файле должны использовать одну и ту же модель.

# 1. Загрузка файла (поле purpose должно идти перед файлом)
curl "https://api.proxyapi.ru/openai/v1/files" \
    -H "Authorization: Bearer <КЛЮЧ>" \
    -F purpose="batch" \
    -F file="@requests.jsonl"

# 2. Создание пакета (file_id из ответа на загрузку)
curl "https://api.proxyapi.ru/openai/v1/batches" \
    -H "Authorization: Bearer <КЛЮЧ>" \
    -H "Content-Type: application/json" \
    -d '{
        "input_file_id": "file-abc123",
        "endpoint": "/v1/responses",
        "completion_window": "24h"
    }'

# 3. Проверка статуса
curl "https://api.proxyapi.ru/openai/v1/batches/batch_abc123" \
    -H "Authorization: Bearer <КЛЮЧ>"

# 4. Скачивание результатов (output_file_id из ответа на статус)
curl "https://api.proxyapi.ru/openai/v1/files/file-output123/content" \
    -H "Authorization: Bearer <КЛЮЧ>"

При создании пакета можно передать необязательное поле metadata — произвольный объект, который вернётся в объекте пакета. completion_window сейчас принимает только значение 24h.

СтатусЗначение
validatingвходной файл проверяется перед запуском
failedфайл не прошёл проверку
in_progressпакет обрабатывается
finalizingобработка завершена, результаты готовятся
completedпакет завершён, результаты готовы
expiredпакет не уложился в 24 часа
cancellingпакет отменяется (до 10 минут)
cancelledпакет отменён

ОперацияМетод и путь
Загрузка файлаPOST /openai/v1/files (purpose=batch)
Создание пакетаPOST /openai/v1/batches
Статус пакетаGET /openai/v1/batches/{batch_id}
Отмена пакетаPOST /openai/v1/batches/{batch_id}/cancel
Скачивание результатовGET /openai/v1/files/{file_id}/content

  • 50 000 запросов и 200 МБ на один входной файл. Для эмбеддингов действует отдельное ограничение: не более 50 000 входных текстов (input) суммарно по всем запросам пакета. Для бóльших объёмов разбивайте на несколько пакетов.
  • Один входной файл — одна модель.
  • Окно — 24 часа. Если пакет не успел завершиться, он переходит в expired: готовые ответы попадают в файл результатов, а неуспевшие — в файл ошибок (error_file_id) с кодом batch_expired. Платите только за выполненные запросы.
  • Файл результатов хранится 30 дней после завершения пакета.

  • Нет метода «список пакетов». У OpenAI есть отдельный эндпоинт для получения списка всех пакетов, но мы его не проксируем, поэтому любые вызовы листинга (в SDK или напрямую) не сработают — сохраняйте id пакета и output_file_id результатов на своей стороне.
  • Если хотя бы одна строка файла ссылается на неподдерживаемую модель или эндпоинт, весь пакет отклоняется при создании — частично обработанных пакетов не бывает.

Списание происходит по завершении пакета, по фактическому использованию из файла результатов, по batch-ставке (−50%). За запросы, завершившиеся ошибкой или не уложившиеся в окно, плата не взимается. Подробнее — в разделе «Пакетная обработка (Batch API)» в Основах.

ProxyAPI Logo

Доступ к последним разработкам мировых лидеров в области AI для вашего проекта или бизнеса в России. Без VPN и блокировок. Оплата в рублях.

Accepted payment methods