B2BB2B LLM

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"
  }
}