Представьте: вам нужно прогнать через нейросеть 10 000 отзывов и у каждого определить тональность. Через обычный API это десять тысяч запросов один за другим, очередь по лимитам и счёт, от которого хочется закрыть ноутбук. А можно собрать всё в один файл, отправить пачкой и забрать готовые ответы в течение суток. Причём за половину цены.
Этот режим называется Batch API. В переводе с английского batch значит «партия», «пачка». Вы не ждёте ответа на каждый запрос по отдельности, а сдаёте их все разом и получаете результат позже. OpenAI берёт за такую обработку на 50 % меньше, чем за обычные запросы.
Разберём по шагам, как Batch API устроен, когда он экономит деньги, а когда не стоит возни, какие у него лимиты и как платить за него из России. Если вы только начинаете работать с API (это адрес, по которому ваша программа обращается к нейросети напрямую, без сайта ChatGPT), сначала загляните в наш разбор что такое ChatGPT и его API простыми словами.
Цены здесь считаются в токенах, и без понимания, что это, дальше будет сложно. Если слово незнакомо, вот короткое объяснение: что такое токен в нейросети.
Статья пригодится не только программистам. Пакетную обработку используют аналитики, маркетологи, контент-менеджеры: все, кому надо обработать большой объём текста и не разориться на этом. А если хочется освоить работу с нейросетями системно, у нас собрана большая подборка курсов по нейросетям и искусственному интеллекту: от коротких интенсивов до годовых программ.
КурсыСравнение 397 курсов по ChatGPTЦены, школы, длительность, рассрочка
Что такое Batch API простыми словами

У OpenAI есть два способа отправлять запросы в нейросеть.
Первый, синхронный: вы шлёте запрос и ждёте ответ прямо сейчас, секунду-другую. Так работает чат и большинство приложений.
Второй, пакетный, тот самый Batch API: вы отправляете сразу много запросов одним файлом и забираете ответы потом, не сидя над программой.
Слово «асинхронный» здесь ключевое. Асинхронно значит, что результат вы получаете позже: нейросеть считает его, когда у неё освобождаются мощности, а вы в это время занимаетесь своими делами. Вы как будто сдаёте бельё в прачечную: оставили мешок, ушли по делам, вечером забрали чистое. Не стоите же вы над каждой футболкой))
OpenAI обещает обработать пачку за 24 часа. На практике обычно быстрее, от часа до шести, но гарантия именно сутки. Внутри этого окна сервис сам решает, когда у него есть свободные мощности, и прогоняет ваши запросы. За терпение и даёт скидку 50 %.
Главное про режим. Batch API нужен там, где ответ не нужен сию секунду. Вы меняете скорость на цену: ждёте до суток, платите вдвое меньше.
Похожий режим есть и у других провайдеров. Например, пакетная обработка работает у Claude от Anthropic с такой же логикой и скидкой. Принцип один: массовые задачи дешевле гонять оптом.
Когда Batch API выгоден, а когда не подходит
Главный вопрос новичка: мне это вообще нужно? Ответ простой. Нужно, если у вас много однотипных запросов и нет требования получить ответ мгновенно. Вот типичные задачи, под которые режим создан.
- Разметка и классификация. Определить тональность у тысяч отзывов, разложить обращения в поддержку по темам, проставить теги товарам в каталоге.
- Эмбеддинги для поиска. Эмбеддинг — это способ превратить текст в набор чисел, чтобы по ним искать похожее. Когда строите поиск по своей базе документов, эмбеддинги нужны для каждого фрагмента, и считать их пачкой логично.
- Массовый перевод и переписывание. Перевести описания всех товаров, переписать тысячу карточек под единый стиль, сделать саммари для архива статей.
- Генерация датасета. Подготовить данные для обучения или для тестов, когда нужны сотни и тысячи примеров.
А вот когда Batch API не подходит. Если пользователь ждёт ответ на экране (чат-бот, помощник внутри приложения, любой живой диалог), пакетный режим не годится. Сутки ожидания для них смерти подобны. Тут только синхронный API.
Простое правило: если задачу можно запустить вечером и спокойно забрать результат утром, берите Batch и экономьте половину. Если ответ нужен, пока человек смотрит на экран, остаётся обычный API.
Batch API против обычного API: в чём разница
Чтобы выбор был нагляднее, собрали оба режима в одну таблицу.
| Параметр | Обычный (синхронный) API | Batch API (пакетный) |
|---|---|---|
| Когда приходит ответ | Сразу, за секунды | В течение 24 часов |
| Цена | Полная | На 50 % дешевле |
| Как отправляются запросы | По одному | Пачкой, одним файлом |
| Сколько запросов за раз | Один | До 50 000 |
| Лимиты по скорости | Общие, можно упереться | Отдельный пул, не мешает обычным |
| Для чего | Чат, живые приложения | Массовая офлайн-обработка |
Обратите внимание на строку про лимиты. У Batch API отдельный пул скорости. Это значит, что большая пачка не съест квоту, которую вы тратите на обычные запросы: два режима не конкурируют друг с другом за пропускную способность.
Как работает Batch API: 5 шагов

Весь процесс укладывается в пять шагов: собрать файл с запросами, загрузить его, создать пачку, дождаться готовности и забрать ответы. Пройдём каждый по порядку. Примеры кода ниже на JavaScript через официальную библиотеку OpenAI, но в Python логика та же самая.
Шаг 1 — собрать JSONL-файл с запросами
Все запросы складываются в один файл формата JSONL. Это обычный текстовый файл, где в каждой строке записан отдельный запрос в формате JSON (способ записи данных в виде пар «ключ: значение»). Одна строка, один запрос к нейросети.
В каждой строке четыре поля: custom_id (ваш собственный ярлык запроса), method (всегда POST), url (какой эндпоинт вызываем) и body (сам запрос с моделью и текстом). Эндпоинт — это адрес внутри API, по которому сервер принимает определённый тип запросов.
{"custom_id": "otzyv-1", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gpt-5.4-mini", "messages": [{"role": "user", "content": "Определи тональность: отличный курс, всё понятно"}]}}
{"custom_id": "otzyv-2", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gpt-5.4-mini", "messages": [{"role": "user", "content": "Определи тональность: зря потратил деньги"}]}}
Зачем нужен custom_id. Это ваш ярлык на каждом запросе. Ответы могут вернуться в другом порядке, и именно по
custom_idвы поймёте, где чей результат. Делайте их уникальными, иначе перепутаете данные.
Важная деталь: в одном файле одна модель. Нельзя половину запросов отправить на gpt-5.4-mini, а половину на gpt-5.5. Нужны разные модели, делайте разные файлы.
Шаг 2 — загрузить файл через Files API
Готовый JSONL-файл сначала загружается на серверы OpenAI. Для этого есть отдельный инструмент, Files API. При загрузке указываем назначение файла: purpose: "batch".
const file = await openai.files.create({
file: fs.createReadStream("batchinput.jsonl"),
purpose: "batch"
});
В ответ придёт идентификатор файла вида file-abc123. Запомните его, он понадобится на следующем шаге.
Шаг 3 — создать батч
Теперь запускаем саму пачку. Передаём три вещи: идентификатор загруженного файла, эндпоинт и окно выполнения.
const batch = await openai.batches.create({
input_file_id: "file-abc123",
endpoint: "/v1/chat/completions",
completion_window: "24h"
});
Поле completion_window сейчас принимает единственное значение, "24h", то есть сутки. Это и есть тот срок, за который OpenAI обязуется всё обработать. Ускорить за доплату нельзя: 24 часа и есть цена скидки.
Шаг 4 — следить за статусом
Пачка не готова мгновенно, поэтому статус нужно периодически проверять. Делается это запросом retrieve по идентификатору батча.
const batch = await openai.batches.retrieve("batch_abc123");
У батча есть несколько состояний. Чтобы не гадать, что означает каждое, держите таблицу.
| Статус | Что значит |
|---|---|
validating |
Файл проверяется перед запуском |
failed |
Проверка не прошла, есть ошибка в файле |
in_progress |
Файл принят, запросы обрабатываются |
finalizing |
Обработка закончена, готовится файл с ответами |
completed |
Готово, результаты можно забирать |
expired |
Не уложились в 24 часа, часть запросов не выполнена |
cancelling |
Идёт отмена (до 10 минут) |
cancelled |
Батч отменён вами вручную |
Большую часть времени вы будете видеть in_progress. Как только статус сменится на completed, переходите к последнему шагу.
Шаг 5 — забрать результаты
У готового батча появляется идентификатор файла с ответами. Скачиваем его содержимое всё через тот же Files API.
const fileResponse = await openai.files.content("file-xyz123");
const results = await fileResponse.text();
Внутри такой же JSONL, строка на каждый запрос. В каждой строке есть custom_id (тот самый ярлык с шага 1) и ответ модели. Сопоставляете ответы с исходными запросами по custom_id, и готово.
Если какие-то запросы не выполнились, они попадают в отдельный файл ошибок, его идентификатор лежит в поле error_file_id. Там же будет код ошибки, по которому понятно, что пошло не так. Кстати, файлы с результатами хранятся 30 дней, потом удаляются автоматически, успевайте скачать.
Сколько стоит Batch API и сколько он экономит

Отдельного прайса у Batch API нет. Вы платите по обычным ценам за модель, которую выбрали, но ровно вполовину дешевле. Никаких скрытых наценок: берёте тариф модели и делите на два.
Посчитаем на примере. Допустим, вам надо обработать 10 000 отзывов на модели gpt-5.4-mini, и каждый запрос на входе обходится в 300 токенов и на выходе в виде результата — 200 токенов.
У gpt-5.4-mini цены такие: 0,75 долларов за 1 миллион токенов на входе и 4,5 доллара за 1 миллион токенов на выходе.
Можно посчитать через умную формулу
0,0075 × (входных токенов) + 0,045 × (выходных токенов)
Вход: 10 000 × 300 = 3 млн токенов → 3 × $0,75 = $2,25
Выход: 10 000 × 200 = 2 млн токенов → 2 × $4,50 = $9,00
Итого: $11,25 за всю работу.
Через обычный API это полная цена. Через Batch та же работа стоит половину суммы — $5,63. На больших объёмах разница превращается в ощутимые деньги, особенно если такие прогоны у вас регулярные.
Где скидка не действует. Запросы, которые не уложились в сутки и получили статус
expired, всё равно тарифицируются за уже выполненную часть. Так что огромные пачки лучше дробить, чтобы наверняка успели обработаться.
Цена считается в токенах, и если вы пока прикидываете бюджет на глаз, освежите тему в разборе про токены и их стоимость. Для эмбеддингов, кстати, действует та же скидка: пакетная обработка на модели text-embedding-3-small обойдётся вдвое дешевле синхронной.
Лимиты Batch API
У пакетного режима есть потолки, которые стоит знать заранее, чтобы не упереться в них на ходу.
- До 50 000 запросов в одной пачке. Больше нельзя, разбивайте на несколько файлов.
- До 200 МБ на файл. Если ваш JSONL тяжелее, его тоже надо делить.
- До 2000 пачек в час. Для большинства задач этого с запасом.
- Отдельный пул лимитов. Batch не расходует квоту обычных запросов, у него своя пропускная способность.
Ещё момент про эндпоинты. Через Batch API работают не только чат-запросы: поддерживаются /v1/chat/completions, /v1/responses, /v1/embeddings, модерация контента, генерация изображений и видео. То есть пакетом можно гонять почти всё, что есть в обычном API.
Частые ошибки новичков и как их избежать
Несколько граблей, на которые наступают почти все, кто запускает первую пачку.
Полагаться на порядок ответов. Строки в файле результатов могут идти не в том порядке, в каком вы их отправляли. Если сопоставлять по номеру строки, данные перемешаются. Всегда сверяйтесь по custom_id, он для того и нужен.
Одинаковые custom_id. Если двум запросам дать один ярлык, вы не разберёте, где чей ответ. Делайте идентификаторы уникальными: otzyv-1, otzyv-2 и так далее.
Слишком большая пачка. Чем больше запросов, тем выше риск, что часть не успеет за сутки и получит статус expired. Такие запросы можно собрать заново и отправить повторно, как раз по их custom_id из файла ошибок.
Включённый стриминг. В пакетном режиме нельзя использовать stream: true (это режим, когда ответ приходит по словам в реальном времени). Для модерации такие запросы вообще отклоняются. Логика очевидна: стриминг про мгновенность, а Batch про ожидание.
Как платить за OpenAI API из России
Болезненный вопрос, которого нет в официальной документации. Прямая оплата картой российского банка на платформе OpenAI не проходит, и Batch API тут не исключение: это часть той же платформы.
Рабочие пути обычно два: зарубежная карта (своя или через знакомых) либо сервисы-посредники, которые принимают рубли и пополняют ваш баланс OpenAI. Мы подробно разобрали актуальные варианты в отдельной статье про нейросети с оплатой из России: там и про доступ, и про способы пополнения.
Запомните одно: как только баланс на платформе пополнен, сам Batch API работает одинаково из любой точки. Скидка 50 % никуда не девается.
Где научиться работать с нейросетями и API
Batch API — это лишь один инструмент из большого набора. Чтобы уверенно собирать такие цепочки обработки, переписывать промпты под массовые задачи и не переплачивать, полезно один раз пройти нормальный курс, а не собирать знания по обрывкам документации.
Мы собрали подборку программ по нейросетям и работе с ними: от вводных курсов для новичков до прикладных по разработке с ИИ. Там можно отфильтровать по уровню, цене и формату.
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Нейросети для изображений и видео Перейти на сайт курса | 69 100 ₽ | 5758 ₽/мес. | 2 месяца | Обзор курса | |
| Нейросети: практический курс Перейти на сайт курса | 25 990 ₽ | 181 667 ₽/мес. | 3 месяца | Обзор курса | |
| Нейросети для рабочих задач Перейти на сайт курса | 29 800 ₽ | 2483 ₽/мес. | 1 месяц | Обзор курса | |
| Нейросети. Практический курс Перейти на сайт курса | 74 900 ₽ | 6242 ₽/мес. | 3 месяца | Обзор курса | |
| Нейросети для каждого: как решать рабочие задачи быстрее Перейти на сайт курса | 37 300 ₽ | 2763 ₽/мес. | 6 недель | Обзор курса | |
| Нейросети на практике Перейти на сайт курса | 54 515 ₽ | 4542 ₽/мес. | 2 месяца | Обзор курса | |
| Нейросети для дизайнера Перейти на сайт курса | 84 272 ₽ | 3831 ₽/мес. | 4 месяца | Обзор курса | |
| Нейросети для анализа данных Перейти на сайт курса | 31 700 ₽ | 2351 ₽/мес. | 8 недель | Обзор курса | |
| Магистратура «Прикладной искусственный интеллект» с УрФУ Перейти на сайт курса | 162 500 ₽ | 244 ₽/мес. | 24 месяца | Обзор курса | |
| Нейросети для дизайна Перейти на сайт курса | 64 000 ₽ | 2612 ₽/мес. | 2 месяца | Обзор курса |
Больше программ — в полном каталоге курсов по нейросетям и искусственному интеллекту
Если интересна именно работа с моделями OpenAI, посмотрите более узкую подборку курсов по ChatGPT. А понять, как нейросети устроены под капотом, помогут наши разборы: что такое RAG и как вообще работают нейросети.


![Статья: Claude или YandexGPT — что лучше и как выбрать в 2026 году Обложка: Claude или YandexGPT — что лучше и как выбрать в [current year] году](https://selcdn.checkroi.ru/wp-content/uploads/og-images/og-cover-76552-1781001170.webp)
![Статья: ChatGPT Codex vs Claude Code — что выбрать в 2026 году Обложка: ChatGPT Codex vs Claude Code — что выбрать в [current year] году](https://selcdn.checkroi.ru/wp-content/uploads/og-images/og-cover-76467-1781000498.webp)
