• Опубликовано
  • 3 просмотра
  • 10 мин. чтения
  • 0 комментариев

Batch API в Claude: как работает пакетная обработка в 2026

Batch API в Claude — это способ прогнать через нейросеть тысячи запросов разом и заплатить вдвое меньше. Разобрали простыми словами: как это работает, сколько стоит, какие лимиты и где новички спотыкаются. Будут примеры на Python и cURL, но статья понятна, даже если вы только начинаете работать с API. После неё запустите свой первый пакет и сэкономите половину бюджета на обработке.
Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер Telegram-каналов, эксперт в выборе онлайн-курсов
Все 396 статей автора
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 1059 экспертных мнений
Обложка: Batch API в Claude: как работает пакетная обработка в 2026

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

Это и есть batch API (пакетная обработка) в Claude. В Anthropic эта штука называется Message Batches API. В статье разберём по шагам: что это такое, как устроено, сколько стоит, какие у него лимиты и где новички спотыкаются. Будут примеры кода, но без них тоже всё понятно.

Если вы только знакомитесь с Claude и пока не уверены, что такое API и чат-бот от Anthropic, начните с обзорной статьи «Что такое Claude от Anthropic»: там разобрали модель, чат и API простыми словами.

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

А если хочется освоить работу с нейросетями системно, загляните в нашу подборку курсов по нейросетям и искусственному интеллекту: там почти 600 программ от коротких интенсивов до годовых.

Курсы по ClaudeКурсыСравнение 23 курсов по ClaudeЦены, школы, длительность, рассрочка

Что такое batch API в Claude простыми словами

Начнём с базы. API (Application Programming Interface) — это способ, которым ваша программа разговаривает с нейросетью без чата и кнопок: отправляет текст запроса, получает текст ответа. Обычно это работает синхронно: вы шлёте один запрос и ждёте, пока Claude ответит, и только потом отправляете следующий.

Рой отправляет пакет запросов в Claude одним списком

Хорошая аналогия — поход в банк. Синхронный запрос похож на живую очередь: подошли к окошку, постояли, получили ответ, ушли. Удобно, когда у вас один вопрос и ответ нужен прямо сейчас. А вот если вопросов тысяча, стоять у окошка с каждым по очереди невыносимо.

Пакетная обработка работает иначе. Вы оставляете весь список запросов разом, как будто берёте талончик с надписью «приходите за результатом позже». Claude разбирает ваш список в фоне, а вы возвращаетесь, когда всё готово. Такой режим называется асинхронным: ответ приходит с задержкой, через какое-то время после отправки.

Message Batches API — это и есть инструмент Anthropic для такого режима. Вы складываете много запросов к Claude в один пакет (по-английски batch, отсюда и название), отправляете его одним обращением и забираете все ответы, когда обработка закончится. Каждый запрос внутри пакета считается отдельно и независимо от соседних.

Коротко. Обычный API — это живая очередь по одному запросу. Batch API — это «оставьте список, заберите всё позже». Второй режим вдвое дешевле и заточен под объём.

Зачем нужна пакетная обработка

Две причины, по которым люди вообще связываются с batch API: цена и объём.

Цена. Любой запрос через пакетную обработку стоит на 50 % дешевле обычного. Скидка действует и на входные токены (ваш текст запроса), и на выходные (ответ модели). Если не помните, что такое токен и почему за него платят, у нас есть отдельный разбор: «Что такое токен в нейросети». Когда задач тысячи, эти 50 % превращаются в ощутимые деньги.

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

Где это применяют:

  • Массовые тесты и оценки: прогнать тысячи тестовых примеров и проверить, как модель справляется с задачей.
  • Модерация контента: проверить большой поток пользовательских сообщений или комментариев на нарушения.
  • Аналитика данных: сделать выжимки, краткие итоги или разметку для большого набора документов.
  • Массовая генерация текста: описания товаров, аннотации статей, варианты заголовков пачкой.

Главное условие: ответы не нужны сию секунду. Если вы строите чат, где пользователь ждёт реакцию на экране, batch API не подходит, там нужен синхронный режим. А для фоновой обработки «на ночь» это самый удобный вариант.

Как работает batch API — по шагам

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

Как устроена пакетная обработка: четыре шага от запроса до ответа

Шаг 1. Вы собираете пакет. Складываете список запросов и отправляете его на специальный адрес внутри API (его называют эндпоинтом): /v1/messages/batches. В ответ сразу приходит идентификатор пакета вида msgbatch_… и его статус.

Шаг 2. Claude обрабатывает пакет в фоне. Сервер берёт ваши запросы и считает их асинхронно, каждый сам по себе. Сразу после создания у пакета статус in_progressв работе»).

Шаг 3. Вы проверяете статус. Время от времени спрашиваете у API: «пакет готов?». Этот периодический опрос статуса по-английски называют polling. Когда все запросы досчитаны, статус меняется на endedзавершён»).

Шаг 4. Вы забираете результаты. Как только статус стал ended, скачиваете файл с ответами и раскладываете их по своим задачам.

Внутри статуса пакет показывает счётчик request_counts: сколько запросов ещё в работе, сколько успешно посчитано, сколько с ошибкой, сколько отменено и сколько истекло по времени. По нему удобно следить за прогрессом большого пакета.

Важный нюанс. Падение одного запроса не роняет весь пакет. Если из 10 тысяч запросов 12 оказались битыми, остальные 9988 спокойно досчитаются и вернутся к вам.

Как отправить первый батч

Пакет состоит из списка запросов. У каждого запроса всего два обязательных поля:

  • custom_id — ваша собственная метка для запроса, чтобы потом узнать его в ответах. От 1 до 64 символов, только латиница, цифры, дефис и подчёркивание. Например, otzyv-001.
  • params — сам запрос с обычными параметрами Messages API: какая модель, сколько токенов в ответе (max_tokens), текст сообщения.

Вот как создать пакет из двух запросов через cURL (это утилита командной строки для отправки запросов на сервер):

curl https://api.anthropic.com/v1/messages/batches \
  --header "x-api-key: $ANTHROPIC_API_KEY" \
  --header "anthropic-version: 2023-06-01" \
  --header "content-type: application/json" \
  --data '{
    "requests": [
      {
        "custom_id": "otzyv-001",
        "params": {
          "model": "claude-opus-4-8",
          "max_tokens": 1024,
          "messages": [
            {"role": "user", "content": "Определи тональность отзыва: «Доставка быстрая, всё понравилось»"}
          ]
        }
      },
      {
        "custom_id": "otzyv-002",
        "params": {
          "model": "claude-opus-4-8",
          "max_tokens": 1024,
          "messages": [
            {"role": "user", "content": "Определи тональность отзыва: «Ждал две недели, товар бракованный»"}
          ]
        }
      }
    ]
  }'

То же самое на Python через официальную библиотеку Anthropic (SDK — это готовый набор кода, который избавляет от ручной возни с запросами):

import anthropic
from anthropic.types.message_create_params import MessageCreateParamsNonStreaming
from anthropic.types.messages.batch_create_params import Request

client = anthropic.Anthropic()

message_batch = client.messages.batches.create(
    requests=[
        Request(
            custom_id="otzyv-001",
            params=MessageCreateParamsNonStreaming(
                model="claude-opus-4-8",
                max_tokens=1024,
                messages=[{"role": "user", "content": "Определи тональность отзыва: ..."}],
            ),
        ),
        Request(
            custom_id="otzyv-002",
            params=MessageCreateParamsNonStreaming(
                model="claude-opus-4-8",
                max_tokens=1024,
                messages=[{"role": "user", "content": "Определи тональность отзыва: ..."}],
            ),
        ),
    ]
)

print(message_batch)

Кроме Python, у Anthropic есть готовые библиотеки для TypeScript, Go, Java, C#, PHP и Ruby, так что подойдёт почти любой популярный язык.

Сначала проверьте один запрос на обычном API

Маленький совет. Правильность каждого запроса в пакете проверяется только в процессе обработки, и ошибки вы увидите ближе к концу. Поэтому сначала отправьте один такой же запрос через обычный синхронный Messages API: убедитесь, что структура верная, и только потом запускайте пакет на тысячи строк. Эта пробная отправка по-английски называется dry run.

Как отследить статус и забрать результаты

После создания пакета у вас на руках его идентификатор. Дальше идёт опрос статуса в цикле: спросили, получили in_progress, подождали минуту, спросили снова. Когда придёт ended, пакет готов.

import anthropic
import time

client = anthropic.Anthropic()
batch_id = "msgbatch_01HkcTjaV5uDC8jWR4ZsDV8d"

while True:
    batch = client.messages.batches.retrieve(batch_id)
    if batch.processing_status == "ended":
        break
    print("Пакет ещё обрабатывается...")
    time.sleep(60)

Когда обработка закончилась, у каждого запроса появляется результат одного из четырёх типов:

Тип результата Что значит Берут ли деньги
succeeded Запрос успешно обработан, внутри — ответ модели Да
errored Ошибка: неверный запрос или сбой на сервере, ответа нет Нет
canceled Вы отменили пакет до того, как запрос дошёл до модели Нет
expired Пакет не успел досчитаться за 24 часа Нет

Приятная деталь: за неуспешные запросы (errored, canceled, expired) денег не берут. Платите только за то, что посчиталось.

Сами ответы приходят файлом в формате JSONL. Это обычный текстовый файл, где каждая строка — отдельный кусочек данных в формате JSON (способ записи структурированной информации, который понимают почти все языки программирования). Одна строка файла — один ответ на один ваш запрос.

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

Если пакет вдруг стал не нужен, его можно отменить специальным запросом. Сразу после отмены статус станет canceling, а затем перейдёт в ended: то, что успело посчитаться до отмены, к вам всё равно вернётся.

Лимиты, сроки и цены

Прежде чем запускать что-то большое, держите в голове рамки пакетной обработки.

Параметр Значение
Запросов в одном пакете до 100 000
Размер пакета до 256 МБ
Время обработки обычно меньше часа, максимум 24 часа
Что после 24 часов недосчитанные запросы получают статус expired
Хранение результатов 29 дней с момента создания пакета
Доступ к пакету в пределах одного воркспейса (рабочего пространства аккаунта)
Поддержка моделей все активные модели Claude

Лимит срабатывает по первому достигнутому порогу: 100 000 запросов или 256 МБ, что наступит раньше. Если данных больше, разбейте их на несколько пакетов, так и управлять проще.

Теперь про деньги. Скидка 50 % хорошо видна, если поставить рядом обычную и пакетную цену. Вот стоимость за 1 миллион токенов для актуальных моделей на 2026 год:

Модель Обычный API (вход / выход) Batch API (вход / выход)
Claude Opus 4.8 $5 / $25 $2,50 / $12,50
Claude Sonnet 4.6 $3 / $15 $1,50 / $7,50
Claude Haiku 4.5 $1 / $5 $0,50 / $2,50

Если непонятно, какую модель брать: для массовой рутины вроде разметки или коротких выжимок обычно хватает Claude Haiku 4.5, она самая дешёвая и быстрая. Когда задача сложнее и важно качество рассуждений, берите Claude Sonnet 4.6. Для самых тяжёлых случаев подойдёт Claude Opus 4.8.

Что можно и нельзя класть в батч

Почти всё, что вы умеете делать с обычным Messages API, работает и в пакете. Поскольку запросы считаются независимо, в одном пакете можно смешивать совсем разные задачи.

Можно положить в пакет Нельзя
Картинки на вход (vision) Потоковую выдачу ответа по словам (stream)
Инструменты и веб-поиск (tool use) Ускоренный режим (speed)
Системные сообщения Сохранение диалога на сервере (store)
Многоходовые диалоги Запрос с max_tokens: 0
Расширенное размышление (extended thinking) Часть служебных подсказок планировщику

Логика запретов простая: всё, что завязано на мгновенный синхронный ответ (поток по словам, ускорение), в асинхронном пакете теряет смысл. У каждого запроса max_tokens должен быть хотя бы 1: ноль не поддерживается.

Теперь про кэширование промптов (prompt caching). Это механизм, который запоминает повторяющуюся часть запроса, чтобы не пересчитывать её каждый раз. Скидка за кэш складывается со скидкой за пакет, так что вместе они экономят ещё сильнее. Правда, в асинхронном режиме попадание в кэш не гарантировано: оно работает по возможности.

Для тех, кому нужны длинные ответы, есть бета-режим расширенного вывода: специальный заголовок поднимает потолок max_tokens до 300 000 токенов для моделей Opus 4.8, Opus 4.7, Opus 4.6 и Sonnet 4.6. Бета-заголовок — это просто пометка в запросе, что вы хотите включить экспериментальную возможность. Пригодится для книг, объёмной документации и больших выгрузок данных.

7 частых ошибок новичков

На этих граблях спотыкаются почти все, кто запускает пакетную обработку впервые.

Рой разбирает перепутанные результаты батча по custom_id

Ошибка 1 — ждать ответы в том же порядке

Результаты приходят вперемешку. Если раскладывать их по номеру строки, перепутаете данные. Всегда сопоставляйте по custom_id.

Ошибка 2 — делать одинаковые custom_id

Метка у каждого запроса должна быть уникальной. Два одинаковых custom_id, и вы не поймёте, где чей ответ.

Ошибка 3 — превысить размер пакета

Если суммарный объём перевалит за 256 МБ, сервер вернёт ошибку 413 (request_too_large). Большие массивы заранее режьте на части.

Ошибка 4 — запускать тысячи строк без проверки

Один битый шаблон, и весь пакет вернётся с ошибками валидации, а время потеряно. Сначала прогоните один запрос через обычный API.

Ошибка 5 — путать пакетную обработку с чатом

Batch API не для интерфейсов, где человек ждёт ответ на экране. Ответ может прийти и через час. Для живого общения нужен синхронный режим.

Ошибка 6 — забыть про окно 24 часа

Если пакет не досчитался за сутки, остаток помечается как expired. Планируйте объём так, чтобы уложиться, особенно если включаете длинные ответы.

Ошибка 7 — потерять результаты после 29 дней

Ответы хранятся 29 дней с момента создания пакета. Не забирайте их месяцами — скачивайте и складывайте к себе сразу.

Batch API в Claude, OpenAI и Gemini — чем похожи

Пакетная обработка есть не только у Anthropic. Похожие инструменты предлагают OpenAI и Google. Подход у всех трёх один и тот же, и если вы освоили один, остальные дадутся легко.

Параметр Claude (Anthropic) OpenAI Gemini (Google)
Скидка к цене 50 % 50 % 50 %
Режим асинхронный асинхронный асинхронный
Окно обработки 24 часа 24 часа 24 часа
Формат результатов JSONL JSONL JSONL
Метка запроса custom_id custom_id ключ запроса

Различия в основном в деталях: как именно загружать запросы и какие у провайдера лимиты. Сама идея «собери список, отправь пачкой, забери позже за полцены» везде одинаковая.

Где научиться работать с нейросетями и API

Batch API — это уже прикладной навык поверх базы: понимания, как устроены нейросети, токены, промпты и работа с API. Если хочется выстроить эту базу по порядку, а не собирать по кускам из документации, удобнее один раз пройти нормальный курс.

Мы собрали подборку программ по нейросетям и искусственному интеллекту: от коротких курсов «с нуля» до глубокого обучения разработке с AI.

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от Checkroi
Нейросети для изображений и видео
Перейти на сайт курса
Академия ЭдюсонЭдюсон69 100 ₽5758 ₽/мес.2 месяцаОбзор курса
Нейросети: практический курс
Перейти на сайт курса
SkyproSkypro25 990 ₽181 667 ₽/мес.3 месяцаОбзор курса
Нейросети для рабочих задач
Перейти на сайт курса
SkillboxSkillbox29 800 ₽2483 ₽/мес.1 месяцОбзор курса
Нейросети. Практический курс
Перейти на сайт курса
SkillboxSkillbox74 900 ₽6242 ₽/мес.3 месяцаОбзор курса
Нейросети для каждого: как решать рабочие задачи быстрее
Перейти на сайт курса
НетологияНетология37 300 ₽2763 ₽/мес.6 недельОбзор курса
Нейросети на практике
Перейти на сайт курса
Академия ЭдюсонЭдюсон54 515 ₽4542 ₽/мес.2 месяцаОбзор курса
Нейросети для дизайнера
Перейти на сайт курса
SkillboxSkillbox84 272 ₽3831 ₽/мес.4 месяцаОбзор курса
Нейросети для анализа данных
Перейти на сайт курса
НетологияНетология31 700 ₽2351 ₽/мес.8 недельОбзор курса
Магистратура «Прикладной искусственный интеллект» с УрФУ
Перейти на сайт курса
НетологияНетология162 500 ₽244 ₽/мес.24 месяцаОбзор курса
Нейросети для дизайна
Перейти на сайт курса
Яндекс ПрактикумПрактикум64 000 ₽2612 ₽/мес.2 месяцаОбзор курса

Больше программ — в полном каталоге курсов по нейросетям и искусственному интеллекту

Дальше по теме почитайте, как устроены размышления нейросетей простыми словами, и загляните в подборку промптов для программистов в Claude Code и Cursor: вместе с пакетной обработкой это хороший набор для повседневной работы с Claude.

Часто задаваемые вопросы

Сколько времени обрабатывается батч в Claude?

Большинство пакетов завершаются меньше чем за час, но максимальное окно обработки — 24 часа. Если за это время пакет не досчитался, оставшиеся запросы получают статус expired, и денег за них не берут. Реальная скорость зависит от размера пакета, текущей нагрузки и вашего объёма запросов.

На сколько batch API дешевле обычного?

На 50 %. Скидка действует и на входные токены (ваш запрос), и на выходные (ответ модели). Например, Claude Opus 4.8 в обычном API стоит $5 за миллион входных токенов, а через batch API — $2,50.

Что будет, если один запрос в пакете упадёт с ошибкой?

Ничего страшного. Каждый запрос обрабатывается независимо, поэтому ошибка в одном не затрагивает остальные. Битые запросы просто получат статус errored, а все корректные досчитаются и вернутся к вам. За неуспешные запросы плата не списывается.

Как сопоставить ответы с запросами?

Только по полю custom_id — вашей уникальной метке для каждого запроса. Ответы в итоговом файле могут идти не в том порядке, в каком вы отправляли запросы, поэтому ориентироваться на номер строки нельзя.

Сколько запросов можно положить в один пакет?

До 100 000 запросов или до 256 МБ объёма — что наступит раньше. Если данных больше, разбейте их на несколько пакетов. При превышении размера сервер вернёт ошибку 413 (request_too_large).

Какие модели Claude поддерживают batch API?

Все активные модели Claude, включая Opus 4.8, Sonnet 4.6 и Haiku 4.5. Для массовой рутины обычно хватает самой дешёвой Haiku 4.5, для сложных задач берут Sonnet 4.6 или Opus 4.8.

Можно ли отменить уже запущенный пакет?

Да. После запроса на отмену статус пакета станет canceling, а затем перейдёт в ended. То, что успело посчитаться до отмены, всё равно вернётся к вам в виде частичных результатов.

Сколько хранятся результаты батча?

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

Оставить комментарий
0 комментариев
Форма комментария

Оставьте комментарий

Напишите, что думаете. Нам важно ваше мнение!