Claude Message Batches
Используйте пакеты сообщений, совместимые с Anthropic, в то время как Model Gate выполняет каждый элемент через свою устойчивую внутреннюю очередь.
Claude Message Batches
Существующие операции пакетного чтения/управления остаются доступными при нулевом балансе для действительных в противном случае активных учетных данных, но POST /v1/messages/batches требует нового положительного баланса/расходов перед сохранением каких-либо строк заданий/элементов. Таким образом, ключ с нулевым балансом не может создать новый пакет Claude или использовать хранилище MariaDB. Фактические предметы повторно проверяют прием, когда работники требуют их, и ждут в постоянной очереди, если средства позже исчерпаны. Входящие данные декодируются постепенно поэлементно, а не загружаются как полный документ JSON размером 256 МБ в памяти, а квоты на активное задание/элемент в очереди для каждого пользователя ограничивают злоупотребление хранилищем независимо от выставления счетов.
Model Gate реализует Anthropic-совместимый API пакетов сообщений на https://api.model-gate.com. Это уровень совместимости: Model Gate надежно хранит пакет и выполняет каждый элемент через обычный Model Gate. /v1/messages путь. Это делает нет отправьте исходную партию Anthropic, исходную от поставщика.
Используйте обычный ключ 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. Не думайте, что логика приложения зависит от исходного порядка ввода; результаты матча по 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 не резервирует стоимость партии на случай наихудшего случая, поэтому одновременно принимаемые товары могут закончиться с отрицательным окончательным балансом или небольшим превышением лимита расходов; сохраняются только последующие новые позиции.
Ценообразование и учет
Каждый элемент пакета использует ту же модель маршрутизации, учет токенов, моментальный снимок цен, оценку использования, ограничения API-ключа/группы и логику расчетов, что и обычный запрос Model Gate. Администратор может настроить Ценовой коэффициент пакетного запроса в шаблоне цен на учетную запись. Значение по умолчанию: 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"
}
}