Claude Message Batches
Совместимый с Anthropic Message Batches API; Model Gate выполняет каждый элемент через собственную сохраняемую очередь.
Чтение и управление существующим Batch остаются доступными при нулевом балансе для действующего активного ключа. Создание пакета через POST /v1/messages/batches требует положительного баланса и доступного лимита расходов. При запуске каждого элемента снова проверяются текущие лимиты; при нехватке средств он может остаться в очереди. Квоты активных заданий и элементов очереди независимы и не подтверждают списание с аккаунта.
Model Gate реализует совместимый с Anthropic Message Batches API на https://api.model-gate.com. Это слой совместимости: Model Gate сохраняет пакет и выполняет каждый элемент обычным путём /v1/messages Model Gate. Пакет не отправляется в собственный пакетный API Anthropic.
Используйте обычный ключ Model API (mg_live_...). Каждый элемент учитывается отдельным запросом с request_mode=batch, batch_protocol=claude, идентификатором пакета и его custom_id.
Потоковый режим внутри пакета не поддерживается. Алиасы моделей разрешаются до постановки элемента в очередь.
Создать пакет сообщений
Запрос
curl https://api.model-gate.com/v1/messages/batches \
-H "x-api-key: mg_live_..." \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"requests": [
{
"custom_id": "summary-1",
"params": {
"model": "ch-47",
"max_tokens": 256,
"messages": [{"role":"user","content":"Summarize this text."}]
}
}
]
}'
Ответ — 200
{
"id": "msgbatch_01K...",
"type": "message_batch",
"processing_status": "in_progress",
"request_counts": {
"processing": 1,
"succeeded": 0,
"errored": 0,
"canceled": 0,
"expired": 0
},
"ended_at": null,
"created_at": "2026-08-13T08:30:00Z",
"expires_at": "2026-08-14T08:30:00Z",
"cancel_initiated_at": null,
"results_url": null
}
Получить пакет
Запрос
curl https://api.model-gate.com/v1/messages/batches/msgbatch_01K... \
-H "x-api-key: mg_live_..."
Ответ — обработка завершена
{
"id": "msgbatch_01K...",
"type": "message_batch",
"processing_status": "ended",
"request_counts": {
"processing": 0,
"succeeded": 1,
"errored": 0,
"canceled": 0,
"expired": 0
},
"ended_at": "2026-08-13T08:30:04Z",
"results_url": "https://api.model-gate.com/v1/messages/batches/msgbatch_01K.../results"
}
Прочитать результаты
Результат возвращается в формате JSON Lines. Не полагайтесь на исходный порядок элементов; сопоставляйте результаты по custom_id.
Запрос
curl https://api.model-gate.com/v1/messages/batches/msgbatch_01K.../results \
-H "x-api-key: mg_live_..."
Ответ — 200
{"custom_id":"summary-1","result":{"type":"succeeded","message":{"id":"msg_...","type":"message","role":"assistant","content":[{"type":"text","text":"..."}]}}}
Получить список пакетов
limit по умолчанию равен 20, допустимый диапазон — от 1 до 100. Для курсорной навигации используйте after_id или before_id; не передавайте оба в одном запросе.
Запрос
curl "https://api.model-gate.com/v1/messages/batches?limit=20&after_id=msgbatch_01K..." \
-H "x-api-key: mg_live_..."
Ответ — 200
{
"data": [],
"has_more": false,
"first_id": null,
"last_id": null
}
Отменить пакет
Отмена запрещает захват ещё не начатых элементов. Уже выполняемый элемент может завершиться.
Запрос
curl -X POST https://api.model-gate.com/v1/messages/batches/msgbatch_01K.../cancel \
-H "x-api-key: mg_live_..."
Ответ — 200
{
"id": "msgbatch_01K...",
"type": "message_batch",
"processing_status": "canceling",
"request_counts": {
"processing": 1,
"succeeded": 0,
"errored": 0,
"canceled": 0,
"expired": 0
}
}
Удалить завершённый пакет
Удаление принимается только после перехода пакета в конечное состояние.
Запрос
curl -X DELETE https://api.model-gate.com/v1/messages/batches/msgbatch_01K... \
-H "x-api-key: mg_live_..."
Ответ — 200
{
"id": "msgbatch_01K...",
"type": "message_batch_deleted"
}
Поведение при восстановлении
Пакет выполняется как минимум один раз, а не строго один раз. После прерывания возможна новая попытка, даже если поставщик принял первую. Идентификатор запроса Model Gate сохраняется, а для уже завершённых запросов действует защита от повторного списания. Для внешних действий инструментов нужна идемпотентность на уровне приложения.
Перед началом элемента баланс и лимиты ключа/группы должны разрешать выполнение. В остальном корректные элементы остаются в очереди при исчерпании средств или лимита, не расходуя попытку. Пополнение, сброс счётчика или увеличение лимита могут снова разрешить выполнение. Резервирования максимальной стоимости нет: параллельно принятые элементы могут завершиться с превышением оставшегося баланса или лимита; удерживаются только последующие элементы.
Тарифы и учёт
Для каждого элемента пакета используются те же маршрутизация модели, учёт токенов, снимок тарифа, расчёт суммы для лимита, ограничения ключа/группы и финансовый расчёт, что для обычного запроса Model Gate. Тариф аккаунта может включать ценовой коэффициент Batch-запроса. Значение по умолчанию — 1; проверьте применимый тариф до отправки.
Например, при обычной стоимости Model Gate 0.02 и пакетном коэффициенте 0.5 фактическое списание составит 0.01. Сохранённая официальная справочная сумма поставщика на этот коэффициент Model Gate не умножается. Собственные запросы с "async": true также не затрагиваются.
Коэффициент, отличный от 1, показывается на странице цен моделей. Минимальный ответ /v1/models больше не включает batch_pricing и batch_cost; фактический коэффициент тарификации и сохранённый учёт запросов не меняются.
Ошибки
Недействительный или повторный custom_id, неизвестная модель, stream:true, вложенный async:true, слишком большой запрос или неверное тело возвращают обычную ошибку в стиле Anthropic.
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "summary-1: stream=true is not supported inside a batch"
}
}