SSD Nodes Learn 🎉 VPS ab $4.99/Monat
Anleitungen Matt ConnorVon Matt Connor · Aktualisiert 2026-08-07

Input vs. Output Tokens: Claudes Kostenlücke erklärt

Claude-Ausgabetokens kosten fünfmal mehr als Eingabetokens. Erfahren Sie, warum Decoding langsamer ist und wie sich die Asymmetrie auf Ihre Agentenrechnung auswirkt.

Warum Ausgabetokens mehr kosten als Eingabetokens

Ausgabetokens kosten bei jedem Claude-Modell im aktuellen Katalog fünfmal so viel wie Eingabetokens. Der Grund liegt in der Struktur der Berechnung. Das Lesen eines Prompts erfolgt in einem Durchlauf über das Modell. Das Schreiben einer Antwort erfordert einen Durchlauf pro Token, und jeder Durchlauf muss auf den vorherigen warten.

Dieses Verhältnis ist in jeder Zeile der Preisliste gleich. Daher ändert das gewählte Modell nicht, welcher Anteil Ihrer Rechnung auf die Ausgabe entfällt. Entscheidend ist die Struktur Ihrer Arbeitslast. Ein Agentenschritt, der 60,000 Tokens liest und mit 800 Tokens antwortet, verursacht nahezu keine Ausgabekosten. Ein Entwurfsprozess, der 2,000 Tokens liest und 12,000 Tokens schreibt, verursacht nahezu keine Eingabekosten. Beide Fälle werden im Folgenden anhand der von Anthropic veröffentlichten Tarife für August 2026 berechnet.

Prefill wird einmal ausgeführt, Decoding einmal pro Token

Ein Inferenzserver verarbeitet eine Anfrage in zwei Phasen mit sehr unterschiedlichen Kosten. Prefill liest den Prompt ein. Decoding erzeugt die Antwort.

Beim Prefill wird der gesamte Prompt auf einmal verarbeitet. Jedes Prompt-Token durchläuft das Netzwerk im selben Forward-Pass. Dadurch werden die Attention- und Feed-Forward-Berechnungen zu wenigen großen Matrixmultiplikationen, die jeweils Tausende von Tokens abdecken. Ein Auslesen der Modellgewichte aus dem Speicher reicht für den gesamten Prompt. Die Matrixeinheiten des Beschleunigers bleiben ausgelastet. Prefill ist daher Compute-bound: Entscheidend ist, wie schnell der Chip multiplizieren kann.

Decoding kann nicht auf diese Weise arbeiten, weil Token 2 von Token 1 abhängt. Das Token, das das Modell gerade erzeugt hat, wird Teil der Eingabe für den nächsten Schritt. Deshalb können die Schritte nicht gleichzeitig ausgeführt werden. Jedes Ausgabe-Token benötigt einen eigenen Forward-Pass. Jeder dieser Pässe liest den vollständigen Satz der Modellgewichte aus dem High-Bandwidth Memory, um ein einzelnes Token zu erzeugen. Decoding ist dadurch Memory-bound: Entscheidend ist, wie schnell die Gewichte übertragen werden, nicht wie schnell sie multipliziert werden können. Derselbe Gewichtedatenverkehr, der beim Prefill einen vollständigen Prompt verarbeitet, erzeugt beim Decoding ein Token.

Serving-Systeme wirken dem durch Batching entgegen. Viele Anfragen werden gemeinsam decodiert. Dadurch erzeugt ein Auslesen der Gewichte jeweils ein Token für jede Anfrage im Batch. Deshalb ist Decoding überhaupt wirtschaftlich. Die Obergrenze wird erneut durch den Speicher bestimmt. Jede laufende Anfrage belegt einen KV-Cache (Key/Value-Cache, der gespeicherte Attention-Zustand für jedes bisher verarbeitete Token). Dieser Cache wächst mit jedem erzeugten Token. Sobald der Beschleuniger voll ist, kann der Batch nicht weiter wachsen.

Das liefert keine exakte Zahl. 5x sollte nicht als gemessenes Hardwareverhältnis verstanden werden. Es ist ein von Anthropic festgelegter Preis, der diese Asymmetrie berücksichtigt. Sie können die Richtung jedoch selbst überprüfen. Das dauert etwa eine Minute.

Messen Sie Input- und Output-Lücke selbst

Installieren Sie die Werkzeuge auf einem beliebigen Ubuntu-System:

sudo apt update && sudo apt install -y curl jq moreutils

Senden Sie nun einen kurzen Prompt, der eine lange Antwort anfordert, und versehen Sie jede Zeile mit dem Zeitpunkt ihres Eintreffens.

curl -sN https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":1000,"stream":true,
       "messages":[{"role":"user","content":"Count from 1 to 300, one number per line."}]}' \
  | ts -s '%.s'

ts -s stellt jeder Zeile die seit dem Start des Befehls vergangene Zeit in Sekunden voran. Aus dieser Ausgabe sind zwei Werte besonders relevant. Die erste Zeile mit content_block_delta ist Ihre Zeit bis zum ersten Token; das gesamte Prefill erfolgte innerhalb dieser Zeit. Jede folgende Zeile entspricht einem kleinen Decoding-Schritt. Die Zeitstempel steigen weiter, bis message_stop eintrifft.

Drehen Sie das Verhältnis nun um. Fügen Sie ein langes Dokument in den Prompt ein und begrenzen Sie die Antwort auf wenige Tokens.

curl -sN https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d "$(jq -n --rawfile doc ./long-document.txt \
       '{model:"claude-sonnet-5", max_tokens:16, stream:true,
         messages:[{role:"user", content:("Answer in one word. Is this document about networking?\n\n" + $doc)}]}')" \
  | ts -s '%.s'

Die erste Zeitdifferenz ist länger als beim kurzen Prompt, weil beim Prefill deutlich mehr Text gelesen werden muss. Danach ist die Antwort fast sofort beendet, weil nur wenige Tokens decodiert werden müssen. Zehntausende Tokens gingen ein, während sich die Uhr kaum bewegte. Einige Hundert Tokens kamen heraus, und die Uhr lief während der gesamten Zeit weiter.

Jede Antwort ohne Streaming endet mit den Zahlen, nach denen Ihre Abrechnung erfolgt.

{
  "usage": {
    "input_tokens": 41283,
    "output_tokens": 6,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0
  }
}

Pro Anfrage müssen Sie alle vier Felder protokollieren. output_tokens umfasst Extended Thinking. Ein Modell, das vor seiner Antwort nachdenkt, rechnet dieses Denken daher zum Output-Tarif ab. Um die Kosten eines Prompts vor dem Senden zu berechnen, akzeptiert POST /v1/messages/count_tokens denselben Request-Body, gibt {"input_tokens": N} zurück, ohne das Modell auszuführen, und ist kostenlos.

Was Claude im August 2026 pro 1 Million Tokens berechnet

ChartClaude API list rates, US dollars per million tokens, August 2026
The data behind this chart
[
  {
    "label": "Haiku 4.5",
    "input_usd": 1,
    "output_usd": 5,
    "output_multiple": 5
  },
  {
    "label": "Sonnet 5 (to 31 Aug)",
    "input_usd": 2,
    "output_usd": 10,
    "output_multiple": 5
  },
  {
    "label": "Sonnet 5 (from 1 Sep)",
    "input_usd": 3,
    "output_usd": 15,
    "output_multiple": 5
  },
  {
    "label": "Opus 5",
    "input_usd": 5,
    "output_usd": 25,
    "output_multiple": 5
  },
  {
    "label": "Fable 5",
    "input_usd": 10,
    "output_usd": 50,
    "output_multiple": 5
  }
]

Die letzte Spalte teilt die Ausgabe durch die Eingabe. Sie zeigt in jeder Zeile 5. Haiku 4.5 berechnet 1 $ für Eingaben und 5 $ für Ausgaben. Opus 5 berechnet 5 $ und 25 $. Fable 5 ist das teuerste Modell und berechnet 10 $ für Eingaben sowie 50 $ für Ausgaben. Wofür diese Fable-5-Preise stehen sollten Sie lesen, bevor Sie die oberste Zeile abschreiben. Wenn Sie in der Preisspanne nach oben gehen, werden beide Seiten mit demselben Faktor multipliziert. Dadurch ändert sich der Gesamtbetrag, das Verhältnis von Eingaben zu Ausgaben bleibt jedoch genau gleich.

Sonnet 5 erscheint zweimal, weil der Einführungspreis ausläuft. Bis zum 31. August 2026 berechnet das Modell 2 $ für Eingaben und 10 $ für Ausgaben. Ab dem 1. September 2026 gilt der Standardpreis von 3 $ und 15 $. Das sind auf beiden Seiten 50 % mehr. Alle folgenden Rechenbeispiele verwenden den August-Preis.

Preise ändern sich. Auf dieser Seite sollten Sie sie daher nicht prüfen. claude.com/pricing ist die maßgebliche Quelle. Die Methode bleibt auch nach einer Preisänderung gültig.

Ein wichtiger Hinweis ist in der Preisliste nicht enthalten. Laut der Dokumentation von Anthropic verwenden Claude 4.7 und neuere Modelle einen neueren Tokenizer. Dieser erzeugt für denselben Text ungefähr 30 % mehr Tokens als der Tokenizer von Sonnet 4.6 und älteren Modellen. Ein Vergleich zweier Modelle allein anhand des Preises pro 1 Million Tokens begünstigt das neuere Modell, weil dasselbe Dokument dort mehr Tokens umfasst. Vergleichen Sie stattdessen die Kosten pro abgeschlossener Aufgabe. Zählen Sie Ihre tatsächlichen Prompts mit dem Modell, das Sie wirklich einsetzen möchten. Was 1 Million Claude-Tokens in echtem Text bedeuten erläutert, wie dieses Volumen in der Praxis aussieht.

Wann beginnt der Output, den größten Anteil Ihrer Kosten zu verursachen?

Wenn Output mit dem 5-Fachen des Input-Preises berechnet wird, lässt sich der Break-even-Punkt leicht im Kopf bestimmen. Nennen Sie die Anzahl Ihrer Input-Tokens I und die Ihrer Output-Tokens O. Die Input-Kosten betragen I. Die Output-Kosten betragen das 5-Fache von O. Der Output macht mehr als die Hälfte Ihrer Ausgaben aus, sobald 5 mal O größer als I ist. Das entspricht einem Token-Verhältnis von 5 zu 1 zugunsten des Inputs.

Ist Ihr Prompt also mehr als fünfmal länger als Ihre Antwort, ist der Input der größere Kostenposten. Darunter ist es der Output.

ChartShare of spend by input to output token ratio, at 5x output pricing
The data behind this chart
[
  {
    "label": "100:1",
    "input_share_pct": 95.2,
    "output_share_pct": 4.8
  },
  {
    "label": "75:1",
    "input_share_pct": 93.75,
    "output_share_pct": 6.25
  },
  {
    "label": "20:1",
    "input_share_pct": 80,
    "output_share_pct": 20
  },
  {
    "label": "10:1",
    "input_share_pct": 66.7,
    "output_share_pct": 33.3
  },
  {
    "label": "5:1",
    "input_share_pct": 50,
    "output_share_pct": 50
  },
  {
    "label": "1:1",
    "input_share_pct": 16.7,
    "output_share_pct": 83.3
  },
  {
    "label": "1:6",
    "input_share_pct": 3.2,
    "output_share_pct": 96.8
  }
]

Bei einem Verhältnis von 100 zu 1 entfallen 4.8% der Kosten auf den Output. Dann lohnt sich nur noch, den Prompt zu kürzen. Bei 5 zu 1 sind beide Seiten gleich teuer. Bei 1 zu 6 entfallen 96.8% auf den Output, und der Prompt fällt bei der Abrechnung kaum ins Gewicht. Die meisten Menschen schätzen ihr eigenes Verhältnis falsch ein. Ermitteln Sie es daher aus Ihren Logs, bevor Sie etwas optimieren.

Ein Agent-Workload: langer Kontext hinein, kurze Antwort heraus

Führen Sie einen Retrieval-Agent-Schritt aus: 60,000 Eingabetokens aus abgerufenen Dokumenten und dem Gesprächsverlauf sowie eine Antwort mit 800 Tokens. Das entspricht 75 zu 1. Das ist für alles normal, was liest, bevor es schreibt.

ChartOne agent step, 60,000 input and 800 output tokens, US dollars per call
The data behind this chart
[
  {
    "label": "Haiku 4.5",
    "input_cost": 0.06,
    "output_cost": 0.004,
    "total_cost": 0.064
  },
  {
    "label": "Sonnet 5 (Aug)",
    "input_cost": 0.12,
    "output_cost": 0.008,
    "total_cost": 0.128
  },
  {
    "label": "Opus 5",
    "input_cost": 0.3,
    "output_cost": 0.02,
    "total_cost": 0.32
  },
  {
    "label": "Fable 5",
    "input_cost": 0.6,
    "output_cost": 0.04,
    "total_cost": 0.64
  }
]

Die Ausgabe macht bei jedem Modell 6.25% dieses Aufrufs aus, weil das Verhältnis über die gesamte Preisliste hinweg feststeht. Der Aufruf kostet bei Opus 5 $0.32, bei Sonnet 5 zum August-Tarif $0.128 und bei Haiku 4.5 $0.064. Zweihundert solcher Schritte pro Tag auf Opus 5 kosten $64 pro Tag.

Sobald Sie diese Aufteilung sehen, ist der wichtigste Hebel offensichtlich. Wenn Sie die Antwort von 800 auf 400 Tokens kürzen, sparen Sie etwa 3% der Kosten des Aufrufs. Wenn Sie 20,000 Tokens veralteten Kontext aus dem Prompt entfernen, sparen Sie etwa ein Drittel. Die Ausgabelänge eines leseintensiven Agents zu begrenzen, ist nahezu vergeblicher Aufwand. wo die Tokens eines Coding-Agents tatsächlich verwendet werden zeigt, wodurch dieser Prompt überhaupt gefüllt wird.

Ein Generierungs-Workload: kurze Vorgabe, langer Entwurf

Ändern Sie nun das Verhältnis. Eine Vorgabe mit 2,000 Tokens und ein Entwurf mit 12,000 Tokens ergeben ein Verhältnis von 1 zu 6.

ChartOne draft, 2,000 input and 12,000 output tokens, US dollars per draft
The data behind this chart
[
  {
    "label": "Haiku 4.5",
    "input_cost": 0.002,
    "output_cost": 0.06,
    "total_cost": 0.062,
    "batch_total_cost": 0.031
  },
  {
    "label": "Sonnet 5 (Aug)",
    "input_cost": 0.004,
    "output_cost": 0.12,
    "total_cost": 0.124,
    "batch_total_cost": 0.062
  },
  {
    "label": "Opus 5",
    "input_cost": 0.01,
    "output_cost": 0.3,
    "total_cost": 0.31,
    "batch_total_cost": 0.155
  },
  {
    "label": "Fable 5",
    "input_cost": 0.02,
    "output_cost": 0.6,
    "total_cost": 0.62,
    "batch_total_cost": 0.31
  }
]

Der Output macht 96.8% dieser Rechnung aus. Opus 5 kostet pro Entwurf $0.31, gegenüber $0.062 mit Haiku 4.5. Dieser fünffache Kostenunterschied entsteht fast vollständig auf der Output-Seite. Genau dort spart ein günstigeres Modell am meisten.

Die letzte Spalte zeigt denselben Auftrag über die Batch API. Dabei werden die Kosten für Input und Output um 50% reduziert. Opus 5 kostet dann $0.155 pro Entwurf. Batch liefert die Ergebnisse innerhalb von 24 Stunden statt sofort. Das eignet sich für die nächtliche Berichtserstellung und die Verarbeitung großer Klassifizierungsmengen. Für Aufgaben, bei denen eine Person auf das Ergebnis wartet, ist es nicht geeignet.

Modell-Routing lohnt sich hier, anders als beim Agent-Schritt. Wenn der ausführliche Teil der Aufgabe mechanisch ist, etwa das Neuformatieren von Text oder das Erweitern einer bereits freigegebenen Gliederung, erzeugt das günstige Modell diese Tokens zum Fünftel des Preises. Auswahl zwischen Opus, Sonnet und Haiku erklärt, wo die Qualitätsgrenze tatsächlich liegt.

Caching vergünstigt Eingaben, und nur Eingaben

Prompt-Caching speichert ein Präfix Ihres Prompts auf dem Server und berechnet für das erneute Lesen einen Bruchteil des Eingabepreises. Im August 2026 betragen die Multiplikatoren das 1,25-Fache des Basiseingabepreises für das Schreiben eines 5-Minuten-Caches, das 2-Fache für das Schreiben eines 1-Stunden-Caches und das 0,1-Fache für das Lesen bei einem Cache-Treffer.

Die Ausgabe ist davon nicht betroffen. Es gibt keine zwischengespeicherte Ausgabe. Jedes vom Modell erzeugte Token wird jedes Mal zum vollständigen Ausgabepreis abgerechnet, unabhängig davon, wie viele Prompt-Token aus dem Cache gelesen wurden.

Nehmen Sie denselben Agentenschritt mit Opus 5 und 55.000 von 60.000 Eingabetoken, die aus einem warmen Cache bereitgestellt werden.

ChartThe same Opus 5 agent step, with and without a warm 55,000 token cache, US dollars
The data behind this chart
[
  {
    "label": "No cache",
    "input_cost": 0.3,
    "output_cost": 0.02,
    "total_cost": 0.32
  },
  {
    "label": "55k prefix cache read",
    "input_cost": 0.0525,
    "output_cost": 0.02,
    "total_cost": 0.0725
  }
]

Der Aufruf sinkt von $0.32 auf $0.0725. Die Ausgabezeile bleibt unverändert: vorher $0.02, danach $0.02. Caching senkt die Rechnung und verändert ihre Zusammensetzung. Die Ausgabe machte bei diesem Aufruf 6.25% aus. Jetzt beträgt ihr Anteil mehr als ein Viertel. Dadurch ändert sich, an welchem Stellhebel sich als Nächstes ansetzen lässt.

Der erste Aufruf bezahlt das Schreiben in den Cache. Das Schreiben eines 5-Minuten-Caches kostet das 1,25-Fache des Basiseingabepreises und amortisiert sich daher nach einem einzigen Treffer. Das Schreiben eines 1-Stunden-Caches kostet das 2-Fache und benötigt daher zwei Treffer. Die Multiplikatoren für Schreiben und Lesen und ab wann sich Caching nicht mehr lohnt führt diese Berechnung vollständig durch.

Vier Stellschrauben, die Sie kontrollieren

  1. Setzen Sie max_tokens auf Ihre p95-Ausgabelänge, nicht auf das Modellmaximum.
  2. Leiten Sie ausführliche Schritte an ein günstigeres Modell weiter.
  3. Bündeln Sie alles, worauf niemand wartet.
  4. Löschen Sie Anweisungen, die Antworten unnötig verlängern.

max_tokens ist eine harte Obergrenze. Ihre Einstellung auf einen hohen Wert kostet allein nichts, weil Ihnen nur die erzeugten Tokens und nie die Obergrenze berechnet werden. Ein großzügiges Limit bewirkt, dass eine fehlgeleitete Antwort nicht vorzeitig begrenzt wird. Ermitteln Sie die output_tokens-Verteilung aus Ihren Logs, setzen Sie die Obergrenze knapp über das 95. Perzentil und behandeln Sie stop_reason: "max_tokens" im Code, indem Sie die Antwort fortsetzen oder den Vorgang wiederholen. Eine erkannte Kürzung kostet weniger als ein 4.000-Token-langer Monolog, für den Sie bezahlen und den Sie anschließend verwerfen. Extended Thinking wird ebenfalls in output_tokens einbezogen. Legen Sie dieses Budget daher anhand derselben Daten fest.

Routing funktioniert, wenn der teure Teil eines Schritts eher im Umfang als in der Beurteilung liegt. Lassen Sie das leistungsfähige Modell die Entscheidung treffen und übertragen Sie die Texterzeugung an ein günstigeres Modell. Messen Sie die geroutete Variante zuerst mit Ihrem eigenen Evaluierungsdatensatz. Ein günstiges Modell, das zwei Versuche benötigt, kostet mehr als ein einziger Versuch mit dem teuren Modell.

Batching ist die einzige Stellschraube, die den Preis für die Ausgabe reduziert. 50 % Rabatt auf beide Seiten, Ergebnisse innerhalb von 24 Stunden: Alles, was nach einem Zeitplan verarbeitet werden kann, ist dafür geeignet.

Die letzte Stellschraube wird am häufigsten übersprungen. Formulierungen wie „Seien Sie gründlich“ und „Erklären Sie Ihre Überlegungen“ verlängern Ihre Ausgabe bei jedem zukünftigen Aufruf. Ersetzen Sie sie durch die gewünschte Form: „Antworten Sie in höchstens drei Sätzen“ oder „Geben Sie nur das JSON-Objekt ohne Vorbemerkung zurück“. Ein System-Prompt, der jede Antwort um 300 Tokens verlängert, kostet fünfmal so viel wie dieselben 300 Tokens im Prompt. Die Kosten eines laufenden Agenten unter Kontrolle halten behandelt die Überwachung. Außerdem sollten Sie klären, ob die API oder ein Flatrate-Abonnement für Ihr Nutzungsmuster günstiger ist, bevor Sie eine Woche lang die Kosten pro Token optimieren, die ein Abonnement bereits abgedeckt hätte.

FAQ

Warum kosten Ausgabetoken mehr als Eingabetoken?

Ihre Erzeugung beansprucht pro Token deutlich mehr Beschleunigerzeit. Eine Eingabe wird in einem einzigen Vorwärtsdurchlauf vollständig verarbeitet. Dabei deckt ein einzelnes Lesen der Modellgewichte Tausende von Token ab, und die Hardware ist durch den Durchsatz der Multiplikationen begrenzt. Eine Antwort wird dagegen jeweils mit einem Token erzeugt. Jeder Token erfordert einen eigenen Vorwärtsdurchlauf, bei dem die vollständigen Modellgewichte erneut gelesen werden. Daher ist die Hardware stattdessen durch die Speicherbandbreite begrenzt. Anthropic berechnet für die Ausgabe im gesamten aktuellen Katalog das Fünffache des Eingabepreises, von Haiku 4.5 bis Fable 5.

Werden Ausgabetoken durch Prompt-Caching günstiger?

Nein. Prompt-Caching gilt nur für Eingaben. Im August 2026 kostet ein Cache-Lesevorgang das 0.1-Fache des regulären Eingabepreises. Cache-Schreibvorgänge kosten für die Dauer von 5 Minuten das 1.25-Fache und für die Dauer von 1 Stunde das 2-Fache. Die Ausgabe wird bei jedem Aufruf zum vollständigen Preis abgerechnet, unabhängig davon, was der Cache bewirkt hat. Deshalb verändert Caching sowohl die Struktur als auch die Höhe Ihrer Rechnung: Sobald die Eingabekosten sinken, ist die Ausgabe der Kostenanteil, bei dem sich eine Optimierung lohnt.

Entstehen mir bei einem hohen max_tokens Kosten, wenn die Antwort kurz ausfällt?

Nein. Ihnen werden die Token berechnet, die das Modell tatsächlich erzeugt. max_tokens ist daher eine Obergrenze und keine Reservierung. Der Wert ist dennoch wichtig, weil er die einzige feste Begrenzung für eine außer Kontrolle geratende Antwort ist. Setzen Sie ihn etwas oberhalb des 95. Perzentils Ihres beobachteten output_tokens und behandeln Sie stop_reason: "max_tokens" im Code, anstatt eine stillschweigend abgeschnittene Antwort auszuliefern.

Wie ermittle ich mein eigenes Verhältnis von Eingabe- zu Ausgabetoken?

Protokollieren Sie input_tokens, output_tokens, cache_read_input_tokens und cache_creation_input_tokens aus dem usage-Objekt jeder Antwort und teilen Sie anschließend die Summen über eine Woche. Bei mehr als 5 Eingabe- zu 1 Ausgabetoken liegen Ihre Kosten hauptsächlich in der Eingabe. Cachen Sie dann den stabilen Teil und kürzen Sie den Rest. Bei einem niedrigeren Verhältnis liegen Ihre Kosten hauptsächlich in der Antwort. Begrenzen Sie dann ihre Länge und verlagern Sie die Schritte, die den größten Teil der Antwort erzeugen, auf ein günstigeres Modell oder auf die Batch API.