Claude Message Batches
Verwenden Sie Anthropic-kompatible Nachrichtenstapel, während Model Gate jedes Element über seine dauerhafte interne Warteschlange ausführt.
Claude Message Batches
Vorhandene Batch-Lese-/Kontrollvorgänge bleiben bei einem Saldo von Null für ansonsten gültige aktive Anmeldeinformationen verfügbar, aber POST /v1/messages/batches erfordert eine erneute Aufnahme positiver Salden/Ausgaben, bevor Auftrags-/Artikelzeilen gespeichert werden. Ein Null-Saldo-Schlüssel kann daher keinen neuen Claude-Stapel erstellen oder MariaDB-Aufbewahrungsspeicher verbrauchen. Tatsächliche Artikel überprüfen die Zulassung erneut, wenn Mitarbeiter sie anfordern, und warten in der dauerhaften Warteschlange, wenn die Mittel später erschöpft sind. Die Eingabe wird inkrementell Element für Element dekodiert, anstatt als vollständiges 256 MB großes JSON-Dokument im Arbeitsspeicher geladen zu werden, und Kontingente pro Benutzer für aktive Jobs/in der Warteschlange befindliche Elemente begrenzen den Speichermissbrauch unabhängig von der Abrechnung.
Model Gate implementiert eine Anthropic-kompatible Message Batches API https://api.model-gate.com. Es handelt sich um eine Kompatibilitätsschicht: Model Gate speichert den Stapel dauerhaft und führt jedes Element über das normale Model Gate aus /v1/messages Weg. Das tut es nicht Senden Sie einen anbieternativen Anthropic-Batch im Upstream.
Verwenden Sie einen normalen Modell-API-Schlüssel (mg_live_...). Jeder Artikel wird als Einzelanfrage mit abgerechnet request_mode=batch, batch_protocol=claude, die Chargen-ID und ihre custom_id.
Streaming wird innerhalb eines Batches nicht unterstützt. Modellaliase werden aufgelöst, bevor das Element in die Warteschlange gestellt wird.
Erstellen Sie einen Nachrichtenstapel
Anfrage
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."}]
}
}
]
}'
Antwort – 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
}
Rufen Sie einen Stapel ab
Anfrage
curl https://api.model-gate.com/v1/messages/batches/msgbatch_01K... \
-H "x-api-key: mg_live_..."
Antwort – beendet
{
"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"
}
Ergebnisse lesen
Die Ergebnisse werden als JSON-Zeilen zurückgegeben. Gehen Sie nicht davon aus, dass die Anwendungslogik von der ursprünglichen Eingabereihenfolge abhängt. Spielergebnisse von custom_id.
Anfrage
curl https://api.model-gate.com/v1/messages/batches/msgbatch_01K.../results \
-H "x-api-key: mg_live_..."
Antwort – 200
{"custom_id":"summary-1","result":{"type":"succeeded","message":{"id":"msg_...","type":"message","role":"assistant","content":[{"type":"text","text":"..."}]}}}
Chargen auflisten
limit Standardmäßig ist 20 und muss von sein 1 Zu 100. Verwenden after_id oder before_id für Cursor-Paginierung; Senden Sie nicht beides in einer Anfrage.
Anfrage
curl "https://api.model-gate.com/v1/messages/batches?limit=20&after_id=msgbatch_01K..." \
-H "x-api-key: mg_live_..."
Antwort – 200
{
"data": [],
"has_more": false,
"first_id": null,
"last_id": null
}
Brechen Sie einen Stapel ab
Mit „Abbrechen“ wird verhindert, dass Artikel in der Warteschlange beansprucht werden. Ein Artikel, der bereits verarbeitet wird, kann beendet werden.
Anfrage
curl -X POST https://api.model-gate.com/v1/messages/batches/msgbatch_01K.../cancel \
-H "x-api-key: mg_live_..."
Antwort – 200
{
"id": "msgbatch_01K...",
"type": "message_batch",
"processing_status": "canceling",
"request_counts": {
"processing": 1,
"succeeded": 0,
"errored": 0,
"canceled": 0,
"expired": 0
}
}
Löschen Sie einen beendeten Stapel
Das Löschen wird erst akzeptiert, wenn der Stapel einen Endstatus erreicht hat.
Anfrage
curl -X DELETE https://api.model-gate.com/v1/messages/batches/msgbatch_01K... \
-H "x-api-key: mg_live_..."
Antwort – 200
{
"id": "msgbatch_01K...",
"type": "message_batch_deleted"
}
Wiederherstellungssemantik
Batch-Elemente verwenden dieselbe dauerhafte Warteschlange wie native asynchrone Anforderungen. Erholung ist mindestens einmal, nicht genau einmal: Nach einem Worker-Absturz kann ein aufgegebener Lease zurückgefordert werden, und ein Artikel kann erneut in den Upstream gesendet werden, wenn die erste Upstream-Antwort nicht dauerhaft gespeichert wurde. Die Model Gate-Anfrage-ID bleibt bei Wiederholungsversuchen stabil und Abwicklungswächter verhindern eine zweite Kontobelastung für eine bereits abgeschlossene Anfrage.
Jeder Artikel wird sofort zugelassen, bevor ein Arbeiter ihn beansprucht. Ansonsten gültige Artikel bleiben in der Warteschlange, während der aktuelle Kontostand nicht positiv ist oder das rücksetzbare Ausgabenlimit für Schlüssel/Gruppe bereits ausgeschöpft ist; Das Warten auf Gelder verbraucht keinen Versuch und markiert den Artikel nicht als fehlgeschlagen. Bei einer späteren Aufladung, einem Zurücksetzen der Nutzung oder einer Erhöhung des Limits werden berechtigte Artikel in der Warteschlange automatisch wieder aufgenommen. Model Gate reserviert keine Batch-Kosten für den schlimmsten Fall, sodass gleichzeitig zugelassene Artikel möglicherweise mit einem negativen Endsaldo oder einer geringfügigen Überschreitung des Ausgabenlimits enden; Es werden nur nachfolgende neue Artikel zurückgehalten.
Preisgestaltung und Buchhaltung
Jedes Batch-Element verwendet das gleiche Modellrouting, die gleiche Token-Buchhaltung, den gleichen Preis-Snapshot, die gleiche Nutzungsbewertung, die gleichen API-Schlüssel-/Gruppenlimits und die gleiche Abrechnungslogik wie eine normale Model-Gate-Anfrage. Ein Administrator kann a konfigurieren Preiskoeffizient für Chargenanfrage auf der Kontopreisvorlage. Der Standardwert ist 1.
Zum Beispiel mit normalen Model Gate-Kosten 0.02 und Chargenkoeffizient 0.5, beträgt die tatsächliche Kontobelastung 0.01. Der gespeicherte Referenzbetrag des offiziellen Anbieters wird nicht mit diesem Model Gate-Chargenkoeffizienten multipliziert. Native Anfragen mit "async": true sind ebenfalls nicht betroffen.
Wenn der Koeffizient abweicht 1, es wird auf der Seite „Modellpreise“ und in angezeigt /v1/models als batch_pricing plus die effektive batch_cost Tarife.
Fehler
Ungültig oder doppelt vorhanden custom_id, ein unbekanntes Modell, stream:true, verschachtelt async:true, eine übergroße Anfrage oder ein ungültiger Textkörper geben eine normale Fehlerantwort im Anthropic-Stil zurück.
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "summary-1: stream=true is not supported inside a batch"
}
}