{
  "aboutHtml": "<p>Ministral 3 8B Instruct 2512 ist das mittelgroße, auf Anweisungen abgestimmte Modell der Ministral-3-Familie von Mistral AI. Der veröffentlichte Checkpoint ist für Chat- und Anweisungsaufgaben in FP8-Präzision nachtrainiert. Er verbindet eine Sprachkomponente mit einem Bildencoder, verarbeitet Text und Bilder und gibt Text statt eines Bild- oder Audioartefakts zurück.</p><p>Architektur und zentrale Funktionen</p><p>Der Hersteller nennt ein Sprachmodell mit 8,4 Milliarden Parametern und einen Bildencoder mit 0,4 Milliarden Parametern. Sein Kontextfenster wird mit 256k beschrieben, und die veröffentlichten Nutzungshinweise verwenden eine standardmäßig konfigurierte Länge von 262.144. Diese Angaben beschreiben diese Ausgabe in der Größe 8B; die kleineren 3B- und größeren 14B-Familienmitglieder behalten ihre eigenen Komponentengrößen und Konfigurationen.</p><p>Visuelle Fähigkeiten erweitern die Eingabe des Modells über einen schriftlichen Dialog hinaus. Ein Dokumentbild kann mit einer Frage zu einem ausgewählten Feld, Absatz oder sichtbaren Zusammenhang kombiniert werden. Ein Screenshot kann mit dem Ziel des Nutzers und der Aufforderung verbunden werden, das relevante Bedienelement zu identifizieren. Fordere die Beobachtung an, die jede Schlussfolgerung stützt, wenn die Antwort von einem visuellen Detail abhängt, und bewahre Überschriften, Beschriftungen und Einheiten, die zur Interpretation eines Ausschnitts benötigt werden.</p><p>Die Modellkarte beschreibt mehrsprachige Arbeit in Dutzenden Sprachen, darunter Englisch, Französisch, Spanisch, Deutsch, Italienisch, Portugiesisch, Niederländisch, Chinesisch, Japanisch, Koreanisch und Arabisch. Sie nennt außerdem die Befolgung von Systemanweisungen, native Funktionsaufrufe und JSON-Ausgabe. Definiere die endgültige Sprache, Rolle und Ausgabeanforderungen ausdrücklich, statt das Modell das beabsichtigte Artefakt aus einer großen Eingabe erschließen zu lassen.</p><p>Dokument-, Dialog- und Agentenaufgaben</p><p>Die Anwendungsfälle des Herstellers umfassen Chatschnittstellen, Alltagsassistenten, Bild- und Dokumentbeschreibungen, Übersetzung, Inhaltsgenerierung und spezialisierte Agenten. Stelle für einen Dokumentassistenten die Seite bereit und gib die zurückzugebenden Informationen vor. Eine Extraktionsanfrage kann Feldbezeichnungen, erwartete Typen und den Umgang mit fehlenden Werten benennen. Eine nützliche Antwort kann die Dokumentkennung, den extrahierten Wert und eine kurze Erklärung mit Bezug zur sichtbaren Quelle enthalten.</p><p>Bewahre für einen fortlaufenden Dialog die relevante frühere Antwort und stelle eine gezielte Anschlussfrage. Ein Nutzer kann zunächst eine Dokumentzusammenfassung anfordern und danach fragen, welche Aussage eine Schlussfolgerung stützt. Dadurch ändert sich die erforderliche Ausgabe von einem allgemeinen Überblick zu einer quellengestützten Erklärung, während das ursprüngliche Material und der Zweck des Dialogs erhalten bleiben.</p><p>Stelle für mehrsprachige Bearbeitung die Originalpassage, die vorgesehenen Leser und eine Terminologieliste bereit. Fordere eine überarbeitete Fassung an, die Namen, Bedingungen und Einheiten bewahrt, gefolgt von einer kurzen Erklärung der Änderungen, sofern nützlich. Gib für Inhaltsgenerierung die Zielgruppe und die einzubeziehenden Fakten vor, bevor du einen kurzen Entwurf oder alternative Formulierungen anforderst.</p><p>Bei einer Agentenaufgabe stellt die Anwendung die Werkzeuge und ihre Parameter bereit. Das Modell kann eine Funktion auswählen und Argumente vorbereiten, während die Anwendung sie ausführt und das Ergebnis zurückgibt. Das Funktionsbeispiel in der Modellkarte verbindet eine Bildfrage mit einem Berechnungswerkzeug. Halte das Werkzeugergebnis vom vorgeschlagenen Aufruf getrennt, damit die anschließende schriftliche Antwort die Informationen verwendet, die die Operation tatsächlich zurückgegeben hat.</p><p>Empfohlene Vorbereitung und Einstellungen</p><p>Der Hersteller empfiehlt eine Systemanweisung, die Umgebung, Anwendungsfall und die Verwendung von Werkzeugen beschreibt. Halte die Werkzeugauswahl klar definiert und auf das für die Aufgabe notwendige Minimum begrenzt. Ein kleiner Abfrageablauf kann die für die aktuelle Frage relevanten Funktionen mit klar benannten Pflichtargumenten anbieten, statt eine große Sammlung unzusammenhängender Operationen zu präsentieren.</p><p>Für alltägliche und produktionsnahe Nutzung empfiehlt die Modellkarte eine Temperatur unter 0,1; höhere Temperaturen stehen für kreative Erkundung zur Verfügung. Behandle dies als Empfehlung für den Anweisungsablauf und nicht als separate Steuerung eines Reasoning-Modus. Die Familie besitzt eigenständige Checkpoints für Base, Instruct und Reasoning; dieser Eintrag ist die Ausgabe Instruct 2512 und nicht die separate Reasoning-Veröffentlichung derselben Größe.</p><p>Für Bilder empfiehlt der Hersteller Seitenverhältnisse nahe 1:1 und rät von sehr schmalen oder sehr breiten Eingaben ab. Schneide bei Bedarf zu und bewahre dabei die Beschriftungen und den Kontext, die die Frage benötigt. Enthält eine Seite mehrere unzusammenhängende Bereiche, benenne den zu prüfenden Teil und das zurückzugebende Ergebnis. Ein lesbares, fokussiertes Bild ist nützlicher, als das Modell raten zu lassen, welches kleine Detail auf einer umfassenden Seite wichtig ist.</p><p>Grenzen von Kontext und Ausgabe</p><p>Plane Text, Bilder, Dialog und gewünschte Antwort um den konfigurierten Kontext herum. Die Nutzungshinweise erlauben ausdrücklich eine Verringerung der konfigurierten Modelllänge, wenn weniger Kontext benötigt wird; das vollständige Fenster ist daher keine Anweisung, jede Anfrage mit allem verfügbaren Material zu füllen. Das Generierungsbeispiel mit 512 Tokens in der Modellkarte ist nur eine Beispieleinstellung, und die gelesenen Quellen belegen keine separate harte maximale Antwortlänge.</p><p>Der FP8-Instruct-Checkpoint, die vortrainierte Base-Veröffentlichung und die Reasoning-Veröffentlichung sind eigenständige Ausgaben. Der Hersteller beschreibt außerdem Spezialisierung und Fine-Tuning als Anwendungsfälle. Bewahre bei der Dialogvorbereitung den benannten Checkpoint und seinen Tokenizer und halte Texterzeugung getrennt von Repository-Zugriff, Funktionsausführung oder anderen Handlungen, die die umgebende Anwendung bereitstellt.</p>",
  "aboutText": "Ministral 3 8B Instruct 2512 ist das mittelgroße, auf Anweisungen abgestimmte Modell der Ministral-3-Familie von Mistral AI. Der veröffentlichte Checkpoint ist für Chat- und Anweisungsaufgaben in FP8-Präzision nachtrainiert. Er verbindet eine Sprachkomponente mit einem Bildencoder, verarbeitet Text und Bilder und gibt Text statt eines Bild- oder Audioartefakts zurück.\n\nArchitektur und zentrale Funktionen\n\nDer Hersteller nennt ein Sprachmodell mit 8,4 Milliarden Parametern und einen Bildencoder mit 0,4 Milliarden Parametern. Sein Kontextfenster wird mit 256k beschrieben, und die veröffentlichten Nutzungshinweise verwenden eine standardmäßig konfigurierte Länge von 262.144. Diese Angaben beschreiben diese Ausgabe in der Größe 8B; die kleineren 3B- und größeren 14B-Familienmitglieder behalten ihre eigenen Komponentengrößen und Konfigurationen.\n\nVisuelle Fähigkeiten erweitern die Eingabe des Modells über einen schriftlichen Dialog hinaus. Ein Dokumentbild kann mit einer Frage zu einem ausgewählten Feld, Absatz oder sichtbaren Zusammenhang kombiniert werden. Ein Screenshot kann mit dem Ziel des Nutzers und der Aufforderung verbunden werden, das relevante Bedienelement zu identifizieren. Fordere die Beobachtung an, die jede Schlussfolgerung stützt, wenn die Antwort von einem visuellen Detail abhängt, und bewahre Überschriften, Beschriftungen und Einheiten, die zur Interpretation eines Ausschnitts benötigt werden.\n\nDie Modellkarte beschreibt mehrsprachige Arbeit in Dutzenden Sprachen, darunter Englisch, Französisch, Spanisch, Deutsch, Italienisch, Portugiesisch, Niederländisch, Chinesisch, Japanisch, Koreanisch und Arabisch. Sie nennt außerdem die Befolgung von Systemanweisungen, native Funktionsaufrufe und JSON-Ausgabe. Definiere die endgültige Sprache, Rolle und Ausgabeanforderungen ausdrücklich, statt das Modell das beabsichtigte Artefakt aus einer großen Eingabe erschließen zu lassen.\n\nDokument-, Dialog- und Agentenaufgaben\n\nDie Anwendungsfälle des Herstellers umfassen Chatschnittstellen, Alltagsassistenten, Bild- und Dokumentbeschreibungen, Übersetzung, Inhaltsgenerierung und spezialisierte Agenten. Stelle für einen Dokumentassistenten die Seite bereit und gib die zurückzugebenden Informationen vor. Eine Extraktionsanfrage kann Feldbezeichnungen, erwartete Typen und den Umgang mit fehlenden Werten benennen. Eine nützliche Antwort kann die Dokumentkennung, den extrahierten Wert und eine kurze Erklärung mit Bezug zur sichtbaren Quelle enthalten.\n\nBewahre für einen fortlaufenden Dialog die relevante frühere Antwort und stelle eine gezielte Anschlussfrage. Ein Nutzer kann zunächst eine Dokumentzusammenfassung anfordern und danach fragen, welche Aussage eine Schlussfolgerung stützt. Dadurch ändert sich die erforderliche Ausgabe von einem allgemeinen Überblick zu einer quellengestützten Erklärung, während das ursprüngliche Material und der Zweck des Dialogs erhalten bleiben.\n\nStelle für mehrsprachige Bearbeitung die Originalpassage, die vorgesehenen Leser und eine Terminologieliste bereit. Fordere eine überarbeitete Fassung an, die Namen, Bedingungen und Einheiten bewahrt, gefolgt von einer kurzen Erklärung der Änderungen, sofern nützlich. Gib für Inhaltsgenerierung die Zielgruppe und die einzubeziehenden Fakten vor, bevor du einen kurzen Entwurf oder alternative Formulierungen anforderst.\n\nBei einer Agentenaufgabe stellt die Anwendung die Werkzeuge und ihre Parameter bereit. Das Modell kann eine Funktion auswählen und Argumente vorbereiten, während die Anwendung sie ausführt und das Ergebnis zurückgibt. Das Funktionsbeispiel in der Modellkarte verbindet eine Bildfrage mit einem Berechnungswerkzeug. Halte das Werkzeugergebnis vom vorgeschlagenen Aufruf getrennt, damit die anschließende schriftliche Antwort die Informationen verwendet, die die Operation tatsächlich zurückgegeben hat.\n\nEmpfohlene Vorbereitung und Einstellungen\n\nDer Hersteller empfiehlt eine Systemanweisung, die Umgebung, Anwendungsfall und die Verwendung von Werkzeugen beschreibt. Halte die Werkzeugauswahl klar definiert und auf das für die Aufgabe notwendige Minimum begrenzt. Ein kleiner Abfrageablauf kann die für die aktuelle Frage relevanten Funktionen mit klar benannten Pflichtargumenten anbieten, statt eine große Sammlung unzusammenhängender Operationen zu präsentieren.\n\nFür alltägliche und produktionsnahe Nutzung empfiehlt die Modellkarte eine Temperatur unter 0,1; höhere Temperaturen stehen für kreative Erkundung zur Verfügung. Behandle dies als Empfehlung für den Anweisungsablauf und nicht als separate Steuerung eines Reasoning-Modus. Die Familie besitzt eigenständige Checkpoints für Base, Instruct und Reasoning; dieser Eintrag ist die Ausgabe Instruct 2512 und nicht die separate Reasoning-Veröffentlichung derselben Größe.\n\nFür Bilder empfiehlt der Hersteller Seitenverhältnisse nahe 1:1 und rät von sehr schmalen oder sehr breiten Eingaben ab. Schneide bei Bedarf zu und bewahre dabei die Beschriftungen und den Kontext, die die Frage benötigt. Enthält eine Seite mehrere unzusammenhängende Bereiche, benenne den zu prüfenden Teil und das zurückzugebende Ergebnis. Ein lesbares, fokussiertes Bild ist nützlicher, als das Modell raten zu lassen, welches kleine Detail auf einer umfassenden Seite wichtig ist.\n\nGrenzen von Kontext und Ausgabe\n\nPlane Text, Bilder, Dialog und gewünschte Antwort um den konfigurierten Kontext herum. Die Nutzungshinweise erlauben ausdrücklich eine Verringerung der konfigurierten Modelllänge, wenn weniger Kontext benötigt wird; das vollständige Fenster ist daher keine Anweisung, jede Anfrage mit allem verfügbaren Material zu füllen. Das Generierungsbeispiel mit 512 Tokens in der Modellkarte ist nur eine Beispieleinstellung, und die gelesenen Quellen belegen keine separate harte maximale Antwortlänge.\n\nDer FP8-Instruct-Checkpoint, die vortrainierte Base-Veröffentlichung und die Reasoning-Veröffentlichung sind eigenständige Ausgaben. Der Hersteller beschreibt außerdem Spezialisierung und Fine-Tuning als Anwendungsfälle. Bewahre bei der Dialogvorbereitung den benannten Checkpoint und seinen Tokenizer und halte Texterzeugung getrennt von Repository-Zugriff, Funktionsausführung oder anderen Handlungen, die die umgebende Anwendung bereitstellt.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "e543fb659c4a0eac20fb238e097437069736ff199ebb8cc6a6de4e688141d0cf",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "de",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Mistral: Ministral 3 8B 2512 (batch)</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Schließen\">×</button></div><div class=\"idline\"><span>Mistral /</span><code>mistralai/ministral-8b-2512:batch</code><button type=\"button\" id=\"copy-id\">ID kopieren</button></div><nav class=\"card-jump-nav\" aria-label=\"Bereiche der Modellkarte\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Eingaben und Methoden</button><button type=\"button\" data-card-jump=\"pricing\">Tarife</button><button type=\"button\" data-card-jump=\"examples\">Beispiele</button><button type=\"button\" data-card-jump=\"results\">Ergebnisse</button><button type=\"button\" data-card-jump=\"aliases\">Aliasnamen</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-Methoden\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|batches|/v1/batches|mistralai%2Fministral-8b-2512%3Abatch\">Stapelverarbeitung</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Start</h3><p class=\"mdesc-full\">Ministral 3 8B Instruct 2512 ist ein mehrsprachiges Text- und Bildmodell für Anweisungsaufgaben mit einer Sprachkomponente von 8,4 Milliarden Parametern und einem Bildencoder von 0,4 Milliarden Parametern. Es unterstützt einen vom Hersteller angegebenen Kontext von 256k, Systemanweisungen, JSON und native Funktionsaufrufe für Assistenten und Dokumentabläufe.</p><dl class=\"card-io\" data-card-io><div><dt>Zulässige Eingaben</dt><dd>Text</dd></div><div><dt>Ergebnisse</dt><dd>Text</dd></div></dl><details class=\"card-about\"><summary>Über das Modell</summary><p class=\"note-s\" data-model-method-boundary>Diese Beschreibung erläutert die Fähigkeiten des Modells. Die über Ailoot verfügbaren Eingaben, Ausgaben und Optionen sind unten für die ausgewählte Methode aufgeführt.</p><div class=\"mabout\" id=\"m-about\"><p>Ministral 3 8B Instruct 2512 ist das mittelgroße, auf Anweisungen abgestimmte Modell der Ministral-3-Familie von Mistral AI. Der veröffentlichte Checkpoint ist für Chat- und Anweisungsaufgaben in FP8-Präzision nachtrainiert. Er verbindet eine Sprachkomponente mit einem Bildencoder, verarbeitet Text und Bilder und gibt Text statt eines Bild- oder Audioartefakts zurück.</p><p>Architektur und zentrale Funktionen</p><p>Der Hersteller nennt ein Sprachmodell mit 8,4 Milliarden Parametern und einen Bildencoder mit 0,4 Milliarden Parametern. Sein Kontextfenster wird mit 256k beschrieben, und die veröffentlichten Nutzungshinweise verwenden eine standardmäßig konfigurierte Länge von 262.144. Diese Angaben beschreiben diese Ausgabe in der Größe 8B; die kleineren 3B- und größeren 14B-Familienmitglieder behalten ihre eigenen Komponentengrößen und Konfigurationen.</p><p>Visuelle Fähigkeiten erweitern die Eingabe des Modells über einen schriftlichen Dialog hinaus. Ein Dokumentbild kann mit einer Frage zu einem ausgewählten Feld, Absatz oder sichtbaren Zusammenhang kombiniert werden. Ein Screenshot kann mit dem Ziel des Nutzers und der Aufforderung verbunden werden, das relevante Bedienelement zu identifizieren. Fordere die Beobachtung an, die jede Schlussfolgerung stützt, wenn die Antwort von einem visuellen Detail abhängt, und bewahre Überschriften, Beschriftungen und Einheiten, die zur Interpretation eines Ausschnitts benötigt werden.</p><p>Die Modellkarte beschreibt mehrsprachige Arbeit in Dutzenden Sprachen, darunter Englisch, Französisch, Spanisch, Deutsch, Italienisch, Portugiesisch, Niederländisch, Chinesisch, Japanisch, Koreanisch und Arabisch. Sie nennt außerdem die Befolgung von Systemanweisungen, native Funktionsaufrufe und JSON-Ausgabe. Definiere die endgültige Sprache, Rolle und Ausgabeanforderungen ausdrücklich, statt das Modell das beabsichtigte Artefakt aus einer großen Eingabe erschließen zu lassen.</p><p>Dokument-, Dialog- und Agentenaufgaben</p><p>Die Anwendungsfälle des Herstellers umfassen Chatschnittstellen, Alltagsassistenten, Bild- und Dokumentbeschreibungen, Übersetzung, Inhaltsgenerierung und spezialisierte Agenten. Stelle für einen Dokumentassistenten die Seite bereit und gib die zurückzugebenden Informationen vor. Eine Extraktionsanfrage kann Feldbezeichnungen, erwartete Typen und den Umgang mit fehlenden Werten benennen. Eine nützliche Antwort kann die Dokumentkennung, den extrahierten Wert und eine kurze Erklärung mit Bezug zur sichtbaren Quelle enthalten.</p><p>Bewahre für einen fortlaufenden Dialog die relevante frühere Antwort und stelle eine gezielte Anschlussfrage. Ein Nutzer kann zunächst eine Dokumentzusammenfassung anfordern und danach fragen, welche Aussage eine Schlussfolgerung stützt. Dadurch ändert sich die erforderliche Ausgabe von einem allgemeinen Überblick zu einer quellengestützten Erklärung, während das ursprüngliche Material und der Zweck des Dialogs erhalten bleiben.</p><p>Stelle für mehrsprachige Bearbeitung die Originalpassage, die vorgesehenen Leser und eine Terminologieliste bereit. Fordere eine überarbeitete Fassung an, die Namen, Bedingungen und Einheiten bewahrt, gefolgt von einer kurzen Erklärung der Änderungen, sofern nützlich. Gib für Inhaltsgenerierung die Zielgruppe und die einzubeziehenden Fakten vor, bevor du einen kurzen Entwurf oder alternative Formulierungen anforderst.</p><p>Bei einer Agentenaufgabe stellt die Anwendung die Werkzeuge und ihre Parameter bereit. Das Modell kann eine Funktion auswählen und Argumente vorbereiten, während die Anwendung sie ausführt und das Ergebnis zurückgibt. Das Funktionsbeispiel in der Modellkarte verbindet eine Bildfrage mit einem Berechnungswerkzeug. Halte das Werkzeugergebnis vom vorgeschlagenen Aufruf getrennt, damit die anschließende schriftliche Antwort die Informationen verwendet, die die Operation tatsächlich zurückgegeben hat.</p><p>Empfohlene Vorbereitung und Einstellungen</p><p>Der Hersteller empfiehlt eine Systemanweisung, die Umgebung, Anwendungsfall und die Verwendung von Werkzeugen beschreibt. Halte die Werkzeugauswahl klar definiert und auf das für die Aufgabe notwendige Minimum begrenzt. Ein kleiner Abfrageablauf kann die für die aktuelle Frage relevanten Funktionen mit klar benannten Pflichtargumenten anbieten, statt eine große Sammlung unzusammenhängender Operationen zu präsentieren.</p><p>Für alltägliche und produktionsnahe Nutzung empfiehlt die Modellkarte eine Temperatur unter 0,1; höhere Temperaturen stehen für kreative Erkundung zur Verfügung. Behandle dies als Empfehlung für den Anweisungsablauf und nicht als separate Steuerung eines Reasoning-Modus. Die Familie besitzt eigenständige Checkpoints für Base, Instruct und Reasoning; dieser Eintrag ist die Ausgabe Instruct 2512 und nicht die separate Reasoning-Veröffentlichung derselben Größe.</p><p>Für Bilder empfiehlt der Hersteller Seitenverhältnisse nahe 1:1 und rät von sehr schmalen oder sehr breiten Eingaben ab. Schneide bei Bedarf zu und bewahre dabei die Beschriftungen und den Kontext, die die Frage benötigt. Enthält eine Seite mehrere unzusammenhängende Bereiche, benenne den zu prüfenden Teil und das zurückzugebende Ergebnis. Ein lesbares, fokussiertes Bild ist nützlicher, als das Modell raten zu lassen, welches kleine Detail auf einer umfassenden Seite wichtig ist.</p><p>Grenzen von Kontext und Ausgabe</p><p>Plane Text, Bilder, Dialog und gewünschte Antwort um den konfigurierten Kontext herum. Die Nutzungshinweise erlauben ausdrücklich eine Verringerung der konfigurierten Modelllänge, wenn weniger Kontext benötigt wird; das vollständige Fenster ist daher keine Anweisung, jede Anfrage mit allem verfügbaren Material zu füllen. Das Generierungsbeispiel mit 512 Tokens in der Modellkarte ist nur eine Beispieleinstellung, und die gelesenen Quellen belegen keine separate harte maximale Antwortlänge.</p><p>Der FP8-Instruct-Checkpoint, die vortrainierte Base-Veröffentlichung und die Reasoning-Veröffentlichung sind eigenständige Ausgaben. Der Hersteller beschreibt außerdem Spezialisierung und Fine-Tuning als Anwendungsfälle. Bewahre bei der Dialogvorbereitung den benannten Checkpoint und seinen Tokenizer und halte Texterzeugung getrennt von Repository-Zugriff, Funktionsausführung oder anderen Handlungen, die die umgebende Anwendung bereitstellt.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">In Ailoot verfügbar · Eingaben und Methoden</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Stapelverarbeitung</b> <code>POST /v1/batches</code></summary><dl class=\"method-capabilities\"><div><dt>Eingabetypen</dt><dd><code>text</code></dd></div><div><dt>Ausgabetypen</dt><dd><code>text</code></dd></div><div><dt>Ausgabeformat</dt><dd>eingebettetes JSON unter results[].response.body</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Feld</th><th>Typ</th><th>Anforderung</th><th>Werte und Limits</th><th>Standard</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">endpoint</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>/v1/chat/completions</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>mistralai/ministral-8b-2512:batch</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">requests</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>batch_item[]</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>Mindestanzahl Elemente: 1</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">requests[].custom_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">requests[].body.messages</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>message[]</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">completion_window</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>24h</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>object|null</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">requests[].body.model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>mistralai/ministral-8b-2512:batch, mistralai/ministral-8b-2512</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">provider.only</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string[]</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>mistral</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">provider.allow_fallbacks</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>boolean|null</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>false, null</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Methodenparameter und Lebenszyklus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Vertrag</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>endpoint, model, requests</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>text</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>representation</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>eingebettete requests[]; jedes Element enthält custom_id und body</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>request_endpoint_profile</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>/v1/chat/completions</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>file_material</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>Der Aufrufer kann tatsächliches UTF-8-JSONL lokal in requests[] einlesen. Es werden weder ein Upload-Zweck noch input_file_id oder eine Dateireferenz verwendet. Fehlendes oder leeres Kundenmaterial stoppt die Vorbereitung vor POST.</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>serialization_order</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>endpoint, model, provider (falls angegeben), completion_window (falls angegeben), requests als letztes Feld</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>provider.only, provider.allow_fallbacks, completion_window</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>schema_scope</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>Anfragekörper für Text Chat Completions in der dokumentierten Inline-Batch-Struktur.</td></tr></tbody></table></div><p>Lebenszyklus: <code>asynchronous</code></p><p class=\"note-s\"><code>GET /v1/batches/{operation_id}</code> · die tatsächliche response.id der ursprünglichen Erstellungsantwort; derselbe Nutzer/Schlüssel/dieselbe Gruppe</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarife</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifangaben erweitern die Anfrageoptionen nicht. Unterstützte Parameter stehen bei der ausgewählten Methode.</p><dl data-price-conditions><dt>Schnellmodus</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn der Schnellmodus ausgewählt ist</span></dd><dt>Flex-Modus</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn der Modus flex ausgewählt ist</span></dd><dt>Maximaler Denkaufwand</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn beim maximalen Denkaufwand die Standardanpassung (default) verwendet wird</span></dd><dt>Preise für explizites Caching</dt><dd>Nicht aktiviert <span class=\"note-s\">Wenn explizites Caching angefordert wird</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-Tarife</h4><h4>Preise nach Konfiguration</h4><p class=\"note-s\">Ordnen Sie jede Gebühr den angezeigten Bedingungen zu. Verwenden Sie für jede Gruppe alternativer Konfigurationen einen Tarif.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Tarifstaffel</th><th>Kontexttoken, mehr als</th><th>Kontexttoken, bis einschließlich</th><th>Gebühr</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Basistarife für Token</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>Grundtarif</td><td data-cell-label=\"Kontexttoken, mehr als\"><span class=\"card-cell-label\">Kontexttoken, mehr als</span>—</td><td data-cell-label=\"Kontexttoken, bis einschließlich\"><span class=\"card-cell-label\">Kontexttoken, bis einschließlich</span>Keine Obergrenze</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Eingabe · Eingabetoken</span> <b>$0.00015</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Ausgabe · Ausgabetoken</span> <b>$0.00015</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Eingabe · Cache-Lesen</span> <b>$0.000015</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Eingabe · Cache-Schreiben</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Eingabe · Cache-Schreiben, 1 Stunde</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Anfragelängenstufe 1</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>—</td><td data-cell-label=\"Kontexttoken, mehr als\"><span class=\"card-cell-label\">Kontexttoken, mehr als</span>0</td><td data-cell-label=\"Kontexttoken, bis einschließlich\"><span class=\"card-cell-label\">Kontexttoken, bis einschließlich</span>Keine Obergrenze</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Eingabe · Eingabetoken</span> <b>$0.00015</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Ausgabe · Ausgabetoken</span> <b>$0.00015</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Eingabe · Cache-Lesen</span> <b>$0.000015</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Eingabe · Cache-Schreiben</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Eingabe · Cache-Schreiben, 1 Stunde</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschließenden Verbrauchsdatensatzes. <a href=\"/docs/de/billing/reserve/\">So funktionieren Reservierung und Abrechnung →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Beispielanfragen</h3><h4>Ailoot Ultra · Stapelverarbeitung</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1901-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1901-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · gespeicherte Beispieldaten</button><button class=\"cg-tab\" id=\"model-code-1901-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1901-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python HTTP · tatsächliche JSONL-Daten des Kunden</button><button class=\"cg-tab\" id=\"model-code-1901-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1901-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Python · jedes fertiggestellte Ergebnis speichern</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopieren\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1901-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1901-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json\nfrom pathlib import Path\nbody=json.loads(&#39;{&quot;endpoint&quot;:&quot;/v1/chat/completions&quot;,&quot;model&quot;:&quot;mistralai/ministral-8b-2512:batch&quot;,&quot;requests&quot;:[{&quot;custom_id&quot;:&quot;req-0001&quot;,&quot;body&quot;:{&quot;messages&quot;:[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Hello!&quot;}],&quot;max_tokens&quot;:16}}]}&#39;)\nPath(&quot;batch-request.json&quot;).write_text(json.dumps(body,ensure_ascii=False),encoding=&quot;utf-8&quot;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1901-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1901-tab-1\" hidden><pre data-lang=\"python\"><code>import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(&quot;Customer JSONL file is missing&quot;)\n    items = [json.loads(line) for line in path.read_text(encoding=&quot;utf-8&quot;).splitlines() if line.strip()]\n    if not items: raise ValueError(&quot;Customer JSONL contains no requests&quot;)\n    ids = set()\n    for item in items:\n        if set(item) != {&quot;custom_id&quot;, &quot;body&quot;}: raise ValueError(&quot;Each item needs custom_id and body&quot;)\n        cid = item[&quot;custom_id&quot;]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(&quot;custom_id must be nonempty and unique&quot;)\n        ids.add(cid)\n        if not isinstance(item[&quot;body&quot;], dict) or not item[&quot;body&quot;].get(&quot;messages&quot;): raise ValueError(&quot;Supply actual text messages&quot;)\n        supplied_model = item[&quot;body&quot;].get(&quot;model&quot;)\n        if supplied_model is not None and supplied_model not in [&#39;mistralai/ministral-8b-2512:batch&#39;, &#39;mistralai/ministral-8b-2512&#39;]: raise ValueError(&quot;body.model must be an exact documented caller or wire ID&quot;)\n    return {&quot;endpoint&quot;:&quot;/v1/chat/completions&quot;, &quot;model&quot;:&quot;mistralai/ministral-8b-2512:batch&quot;, &quot;requests&quot;:items}\n\nif __name__ == &quot;__main__&quot;:\n    material = os.environ.get(&quot;AILOOT_BATCH_REQUESTS_JSONL&quot;, &quot;&quot;)\n    if not material: raise SystemExit(&quot;Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file&quot;)\n    body = prepare_requests(material)\n    key = os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;)\n    if not key: raise SystemExit(&quot;Set AILOOT_API_KEY&quot;)\n    request = Request(&quot;https://api.ailoot.ai/v1/batches&quot;, data=json.dumps(body, ensure_ascii=False).encode(&quot;utf-8&quot;), headers={&quot;Authorization&quot;:&quot;Bearer &quot; + key, &quot;Content-Type&quot;:&quot;application/json&quot;}, method=&quot;POST&quot;)\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(&quot;batch-create-response.json&quot;).write_bytes(raw)\n        print(raw.decode(&quot;utf-8&quot;))\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1901-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1901-tab-2\" hidden><pre data-lang=\"python\"><code>import json\nfrom pathlib import Path\nraw = Path(&quot;batch-status-response.json&quot;).read_bytes()\nresponse = json.loads(raw)\nif response.get(&quot;status&quot;) != &quot;completed&quot;:\n    raise SystemExit(&quot;Keep the original operation; read its status without resubmitting&quot;)\nresults = response.get(&quot;results&quot;)\nif not isinstance(results, list) or not results:\n    raise SystemExit(&quot;Preserve the original response; completed results are missing&quot;)\nPath(&quot;batch-results.jsonl&quot;).write_text(&quot;&quot;.join(json.dumps(item, ensure_ascii=False) + &quot;\\n&quot; for item in results), encoding=&quot;utf-8&quot;)\n# Preserve batch-status-response.json with aggregate usage and every result/error.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Ergebnisse abrufen und speichern</h3><h4>Ailoot Ultra · Stapelverarbeitung</h4><p class=\"note-s\">eingebettetes JSON unter results[].response.body</p><ul class=\"card-result-paths\"><li><code>GET /v1/batches/{operation_id}</code></li></ul><h5>Auftragsstatus prüfen</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1902-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1902-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · Status des ursprünglichen Vorgangs</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopieren\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1902-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1902-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nBATCH_OPERATION_ID=&quot;$(python3 - &lt;&lt;&#39;PY_ID&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(&quot;batch-create-response.json&quot;).read_text(encoding=&quot;utf-8&quot;))\noperation = response.get(&quot;id&quot;)\nif not isinstance(operation, str) or not operation: raise SystemExit(&quot;No actual original operation ID; preserve the response and do not resubmit&quot;)\nprint(quote(operation, safe=&quot;&quot;))\nPY_ID\n)&quot;\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o batch-status-response.json\n</code></pre></div></div></div><div class=\"card-result-process\" data-all-results><h5>Alle fertiggestellten Ergebnisse aufbewahren</h5><p class=\"note-s\">Bewahren Sie jede vollständig zurückgegebene Antwort, Datei und jeden Inhaltsteil auf.</p><p class=\"note-s\">Das vollständige ursprüngliche Status-JSON, jedes Ergebnis/jede custom_id und den vollständigen Antwort- oder Fehlerkörper aufbewahren. Abgeschlossene results[] ohne Filterung als JSONL speichern.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Wenn die ursprüngliche Antwort geprüft werden muss</h5><p class=\"note-s\">Die ursprüngliche Vorgangs-ID beibehalten. Bei 503 result_pending_check gilt X-Should-Retry:false; einen ursprünglichen Batch mit unbekanntem Ausgang niemals erneut einreichen.</p></div><details class=\"card-about\" data-output-fields><summary>Antwortfelder</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Feld</th><th>Typ</th></tr></thead><tbody><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">results[].custom_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">results[].response.body.choices[].message.content</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string|null</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">results[].error</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>object|null</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>object|null</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">endpoint</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">request_counts</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>object</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">results[].id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">results[].response.status_code</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">results[].response.request_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Fehler und nächste Schritte</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Antwort</th><th>Bedingung</th><th>Nächster Schritt</th></tr></thead><tbody><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Ungültige Struktur der dokumentierten Inline-Einbettung, doppelte Schlüssel, ungültige Identitätsangaben zu einem Element oder ein Konflikt mit den konfigurierten Modellfähigkeiten.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Die angegebenen Felder vor jeder neuen Einreichung korrigieren.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Ungültiger API-Schlüssel.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Den autorisierten Ailoot-Schlüssel verwenden.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>403 · <code>permission_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Gruppe für Stapelverarbeitung nicht verfügbar.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Die Berechtigung des Schlüssels bzw. der Gruppe prüfen.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Stapelverarbeitung wird über das Guthaben abgerechnet; die Erstellung über ein Abonnement wird abgelehnt.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Die autorisierte Gruppe mit Guthabenabrechnung verwenden.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Für die Batch-Eingabe kann kein Preisangebot erstellt werden.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Antwort aufbewahren; die dokumentierte Eingabe der API-Familie verwenden.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>402 · <code>billing_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Reservierung für Stapelverarbeitung nicht verfügbar.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Die Zulassung klären, bevor eine neue Anfrage gestellt wird.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>503 · <code>price_unavailable</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Methodenpreis bzw. native Tarife für Stapelverarbeitung nicht verfügbar.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Antwort aufbewahren; keine anderen Preise einsetzen.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>503 · <code>api_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Die genaue Anbieterroute ist nicht verfügbar.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Antwort zur Reparatur der Route aufbewahren.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Das ursprüngliche Ergebnis muss geprüft werden; X-Should-Retry:false.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Die ursprüngliche operation_id/id beibehalten und ihren Status lesen; den ursprünglichen POST niemals wiederholen.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>404 · <code>not_found</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Der Batch-Vorgang, dessen Status abgefragt wird, ist nicht vorhanden oder gehört einer anderen Identität.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Die genaue ursprüngliche id und denselben Nutzer/Schlüssel/dieselbe Gruppe verwenden.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasnamen</h3><h4>Modellaliasnamen</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=mistralai%2Fministral-8b-2512%3Abatch&amp;route=Ultra&amp;caller=mistralai%2Fministral-8b-2512%3Abatch&amp;fmt=batches\"><code>mistralai/ministral-8b-2512:batch</code></a></span></p><h4>Aliasnamen für Methodenpfade</h4><p class=\"note-s\">Verwenden Sie die oben angezeigten Methodenpfade.</p><h4>Zugehörige Aufrufer-IDs</h4><p class=\"note-s\"><a href=\"#m=mistralai%2Fministral-8b-2512%3Abatch&amp;route=Ultra&amp;caller=mistralai%2Fministral-8b-2512%3Abatch&amp;fmt=batches\"><code>mistralai/ministral-8b-2512:batch</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "mistralai/ministral-8b-2512:batch",
        "fmt": "batches",
        "http": "POST",
        "path": "/v1/batches",
        "request_model_id": "mistralai/ministral-8b-2512:batch",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|batches|/v1/batches|mistralai%2Fministral-8b-2512%3Abatch",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": 0.015,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Preserve full JSON and every result; provider real IDs are only read from actual returned responses.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Ungültige Struktur der dokumentierten Inline-Einbettung, doppelte Schlüssel, ungültige Identitätsangaben zu einem Element oder ein Konflikt mit den konfigurierten Modellfähigkeiten.",
                "http_status": 400,
                "recovery": "Die angegebenen Felder vor jeder neuen Einreichung korrigieren.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Ungültiger API-Schlüssel.",
                "http_status": 401,
                "recovery": "Den autorisierten Ailoot-Schlüssel verwenden.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Gruppe für Stapelverarbeitung nicht verfügbar.",
                "http_status": 403,
                "recovery": "Die Berechtigung des Schlüssels bzw. der Gruppe prüfen.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Stapelverarbeitung wird über das Guthaben abgerechnet; die Erstellung über ein Abonnement wird abgelehnt.",
                "http_status": 422,
                "recovery": "Die autorisierte Gruppe mit Guthabenabrechnung verwenden.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Für die Batch-Eingabe kann kein Preisangebot erstellt werden.",
                "http_status": 422,
                "recovery": "Antwort aufbewahren; die dokumentierte Eingabe der API-Familie verwenden.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Reservierung für Stapelverarbeitung nicht verfügbar.",
                "http_status": 402,
                "recovery": "Die Zulassung klären, bevor eine neue Anfrage gestellt wird.",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "Methodenpreis bzw. native Tarife für Stapelverarbeitung nicht verfügbar.",
                "http_status": 503,
                "recovery": "Antwort aufbewahren; keine anderen Preise einsetzen.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Die genaue Anbieterroute ist nicht verfügbar.",
                "http_status": 503,
                "recovery": "Antwort zur Reparatur der Route aufbewahren.",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Das ursprüngliche Ergebnis muss geprüft werden; X-Should-Retry:false.",
                "http_status": 503,
                "recovery": "Die ursprüngliche operation_id/id beibehalten und ihren Status lesen; den ursprünglichen POST niemals wiederholen.",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "Der Batch-Vorgang, dessen Status abgefragt wird, ist nicht vorhanden oder gehört einer anderen Identität.",
                "http_status": 404,
                "recovery": "Die genaue ursprüngliche id und denselben Nutzer/Schlüssel/dieselbe Gruppe verwenden.",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "mistralai/ministral-8b-2512:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "input_constraints": [
              "Use the exact shown :batch model ID.",
              "Each custom_id must be nonempty and unique within the batch.",
              "Keep requests last in the serialized body; duplicate JSON keys are rejected.",
              "Each body.model is omitted or equals the exact batch caller or its documented base ID.",
              "Per-item provider, service_tier and input_type are outside this batch profile.",
              "stream is omitted or false.",
              "Supply text messages for this Chat batch profile; image/audio/file/video objects, hosted tools and cache-control fields are outside this profile.",
              "If body.model is present, use only the exact caller or wire ID listed here; no suffix conversion is needed.",
              "For google/ wire IDs, all items use an identical response_format."
            ],
            "outputs": {
              "all_results": "Das vollständige ursprüngliche Status-JSON, jedes Ergebnis/jede custom_id und den vollständigen Antwort- oder Fehlerkörper aufbewahren. Abgeschlossene results[] ohne Filterung als JSONL speichern.",
              "enclosing_family": "batch",
              "family": "text",
              "fields": [
                {
                  "name": "results[].custom_id",
                  "type": "string"
                },
                {
                  "name": "results[].response.body.choices[].message.content",
                  "type": "string|null"
                },
                {
                  "name": "results[].error",
                  "type": "object|null"
                },
                {
                  "name": "usage",
                  "type": "object|null"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "endpoint",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "request_counts",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "results[].id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "results[].response.status_code",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "results[].response.request_id",
                  "type": "string"
                }
              ],
              "format": "eingebettetes JSON unter results[].response.body"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "/v1/chat/completions"
                ],
                "enum_known": true,
                "name": "endpoint",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mistralai/ministral-8b-2512:batch"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "requests",
                "required": true,
                "type": "batch_item[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].custom_id",
                "required": true,
                "type": "string",
                "unique_within_batch": true
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].body.messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "24h"
                ],
                "enum_known": true,
                "name": "completion_window",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mistralai/ministral-8b-2512:batch",
                  "mistralai/ministral-8b-2512"
                ],
                "enum_known": true,
                "name": "requests[].body.model",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  [
                    "mistral"
                  ]
                ],
                "enum_known": true,
                "name": "provider.only",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  null
                ],
                "enum_known": true,
                "name": "provider.allow_fallbacks",
                "required": false,
                "type": "boolean|null"
              }
            ],
            "provider_policy": {
              "allow_fallbacks": false,
              "configured_only": [
                "mistral"
              ],
              "per_item_override": false,
              "when_omitted": "Current Source injects the exact persisted declaration before fresh submission."
            },
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "completion_window": {
                  "enum": [
                    "24h"
                  ],
                  "type": "string"
                },
                "endpoint": {
                  "enum": [
                    "/v1/chat/completions"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "mistralai/ministral-8b-2512:batch"
                  ],
                  "type": "string"
                },
                "provider": {
                  "additionalProperties": false,
                  "properties": {
                    "allow_fallbacks": {
                      "enum": [
                        false,
                        null
                      ],
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "only": {
                      "enum": [
                        [
                          "mistral"
                        ]
                      ],
                      "items": {
                        "enum": [
                          "mistral"
                        ],
                        "type": "string"
                      },
                      "maxItems": 1,
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "requests": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "body": {
                        "additionalProperties": true,
                        "properties": {
                          "max_tokens": {
                            "minimum": 1,
                            "type": "integer"
                          },
                          "messages": {
                            "items": {
                              "properties": {
                                "content": {
                                  "type": "string"
                                },
                                "role": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "role",
                                "content"
                              ],
                              "type": "object"
                            },
                            "minItems": 1,
                            "type": "array"
                          },
                          "model": {
                            "enum": [
                              "mistralai/ministral-8b-2512:batch",
                              "mistralai/ministral-8b-2512"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "messages"
                        ],
                        "type": "object"
                      },
                      "custom_id": {
                        "minLength": 1,
                        "type": "string"
                      }
                    },
                    "required": [
                      "custom_id",
                      "body"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "endpoint",
                "model",
                "requests"
              ],
              "type": "object"
            },
            "schema_template": {
              "endpoint": "/v1/chat/completions",
              "model": "mistralai/ministral-8b-2512:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "unsupported": [
              "Files/input_file_id batch upload workflow",
              "active cancel route",
              "public batch list/delete/result-download route",
              "model-name-derived capability or weights equivalence"
            ]
          },
          "input": {
            "content_type": "application/json",
            "file_material": "Der Aufrufer kann tatsächliches UTF-8-JSONL lokal in requests[] einlesen. Es werden weder ein Upload-Zweck noch input_file_id oder eine Dateireferenz verwendet. Fehlendes oder leeres Kundenmaterial stoppt die Vorbereitung vor POST.",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "eingebettete requests[]; jedes Element enthält custom_id und body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "Anfragekörper für Text Chat Completions in der dokumentierten Inline-Batch-Struktur.",
            "serialization_order": [
              "endpoint",
              "model",
              "provider (falls angegeben)",
              "completion_window (falls angegeben)",
              "requests als letztes Feld"
            ]
          },
          "lifecycle": {
            "cancel": null,
            "create": {
              "accepted_status": 202,
              "http": "POST",
              "path": "/v1/batches"
            },
            "delete": null,
            "file_upload": null,
            "mode": "asynchronous",
            "observed_status_values": [
              "validating",
              "in_progress",
              "finalizing",
              "completed",
              "failed",
              "expired",
              "cancelling",
              "cancelled"
            ],
            "owned_results": {
              "behavior": "Completed results are saved as owned JSONL, read back byte-for-byte and registered in the existing media library before publication after settlement. Status returns inline results; no separate Batch download route is added.",
              "format": "application/x-ndjson",
              "public_url_field_in_status": null
            },
            "status": {
              "http": "GET",
              "id_source": "die tatsächliche response.id der ursprünglichen Erstellungsantwort; derselbe Nutzer/Schlüssel/dieselbe Gruppe",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "Die ursprüngliche Vorgangs-ID beibehalten. Bei 503 result_pending_check gilt X-Should-Retry:false; einen ursprünglichen Batch mit unbekanntem Ausgang niemals erneut einreichen."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/batches"
          },
          "output": {
            "all_results": "Preserve the full original status JSON, every result/custom_id and complete response or error body. Save completed results[] as JSONL without filtering.",
            "family": "batch",
            "format": "JSON; completed results[] are returned inline and can be saved as JSONL."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Basistarife für Token",
            "units": [
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.000015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000015",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Anfragelängenstufe 1",
            "units": [
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.000015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000015",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json\nfrom pathlib import Path\nbody=json.loads('{\"endpoint\":\"/v1/chat/completions\",\"model\":\"mistralai/ministral-8b-2512:batch\",\"requests\":[{\"custom_id\":\"req-0001\",\"body\":{\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}],\"max_tokens\":16}}]}')\nPath(\"batch-request.json\").write_text(json.dumps(body,ensure_ascii=False),encoding=\"utf-8\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n",
            "label": "curl · retained fixture",
            "language": "bash"
          },
          {
            "code": "import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(\"Customer JSONL file is missing\")\n    items = [json.loads(line) for line in path.read_text(encoding=\"utf-8\").splitlines() if line.strip()]\n    if not items: raise ValueError(\"Customer JSONL contains no requests\")\n    ids = set()\n    for item in items:\n        if set(item) != {\"custom_id\", \"body\"}: raise ValueError(\"Each item needs custom_id and body\")\n        cid = item[\"custom_id\"]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(\"custom_id must be nonempty and unique\")\n        ids.add(cid)\n        if not isinstance(item[\"body\"], dict) or not item[\"body\"].get(\"messages\"): raise ValueError(\"Supply actual text messages\")\n        supplied_model = item[\"body\"].get(\"model\")\n        if supplied_model is not None and supplied_model not in ['mistralai/ministral-8b-2512:batch', 'mistralai/ministral-8b-2512']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"mistralai/ministral-8b-2512:batch\", \"requests\":items}\n\nif __name__ == \"__main__\":\n    material = os.environ.get(\"AILOOT_BATCH_REQUESTS_JSONL\", \"\")\n    if not material: raise SystemExit(\"Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file\")\n    body = prepare_requests(material)\n    key = os.environ.get(\"AILOOT_API_KEY\", \"\")\n    if not key: raise SystemExit(\"Set AILOOT_API_KEY\")\n    request = Request(\"https://api.ailoot.ai/v1/batches\", data=json.dumps(body, ensure_ascii=False).encode(\"utf-8\"), headers={\"Authorization\":\"Bearer \" + key, \"Content-Type\":\"application/json\"}, method=\"POST\")\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(\"batch-create-response.json\").write_bytes(raw)\n        print(raw.decode(\"utf-8\"))\n",
            "label": "Python HTTP · actual customer JSONL",
            "language": "python"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nBATCH_OPERATION_ID=\"$(python3 - <<'PY_ID'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(\"batch-create-response.json\").read_text(encoding=\"utf-8\"))\noperation = response.get(\"id\")\nif not isinstance(operation, str) or not operation: raise SystemExit(\"No actual original operation ID; preserve the response and do not resubmit\")\nprint(quote(operation, safe=\"\"))\nPY_ID\n)\"\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o batch-status-response.json\n",
            "label": "curl · original operation status",
            "language": "bash"
          },
          {
            "code": "import json\nfrom pathlib import Path\nraw = Path(\"batch-status-response.json\").read_bytes()\nresponse = json.loads(raw)\nif response.get(\"status\") != \"completed\":\n    raise SystemExit(\"Keep the original operation; read its status without resubmitting\")\nresults = response.get(\"results\")\nif not isinstance(results, list) or not results:\n    raise SystemExit(\"Preserve the original response; completed results are missing\")\nPath(\"batch-results.jsonl\").write_text(\"\".join(json.dumps(item, ensure_ascii=False) + \"\\n\" for item in results), encoding=\"utf-8\")\n# Preserve batch-status-response.json with aggregate usage and every result/error.\n",
            "label": "Python · save every completed result",
            "language": "python"
          }
        ],
        "family": "batch",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "batches",
        "hints": [
          "Read your actual request items before submission; inline requests are required.",
          "Keep the returned operation ID and every result. Never replay an unknown submission."
        ],
        "http": "POST",
        "in": 0.15,
        "input": [
          "text"
        ],
        "label": "Stapelverarbeitung",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0.15,
        "output": [
          "text"
        ],
        "path": "/v1/batches",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          },
          {
            "label": "Explicit cache pricing",
            "value": "Not enabled",
            "when": "When explicit cache is requested"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.000015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000015",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.000015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000015",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "mistralai/ministral-8b-2512:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.015,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.15,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 0.15,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.00015000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000015",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00015000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000015",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": "0.000015000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": "0.000000015",
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    }
  ],
  "model_id": "mistralai/ministral-8b-2512:batch",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "1f665bacb2a2b1a650768ca67ceb0973d2c5501adf1168dbb41aa4c7384e246a",
    "input_html_sha256": "0ac43a39aa9940d721824af00865f510a12329c864e21478e01a1b24a07d14bd",
    "private_audit_sha256": "95bdd7c4d34b248e49f5750d4582ef9caf35bbc3d8321ead01978bcab13218d0",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/de/mistralai-ministral-8b-2512-u003a-batch/",
    "description": "Ministral 3 8B Instruct 2512 ist ein mehrsprachiges Text- und Bildmodell für Anweisungsaufgaben mit einer Sprachkomponente von 8,4 Milliarden Parametern und einem Bildencoder von 0,4 Milliarden Parametern. Es unterstützt einen vom Hersteller angegebenen Kontext von 256k, Systemanweisungen, JSON und native Funktionsaufrufe für Assistenten und Dokumentabläufe.",
    "locale": "de",
    "md_url": "https://ailoot.ai/models/de/mistralai-ministral-8b-2512-u003a-batch/index.md",
    "title": "Mistral: Ministral 3 8B 2512 (batch) — Ailoot",
    "url": "https://ailoot.ai/models/de/mistralai-ministral-8b-2512-u003a-batch/"
  },
  "rawModel": {
    "about": "Ministral 3 8B Instruct 2512 ist das mittelgroße, auf Anweisungen abgestimmte Modell der Ministral-3-Familie von Mistral AI. Der veröffentlichte Checkpoint ist für Chat- und Anweisungsaufgaben in FP8-Präzision nachtrainiert. Er verbindet eine Sprachkomponente mit einem Bildencoder, verarbeitet Text und Bilder und gibt Text statt eines Bild- oder Audioartefakts zurück.\n\nArchitektur und zentrale Funktionen\n\nDer Hersteller nennt ein Sprachmodell mit 8,4 Milliarden Parametern und einen Bildencoder mit 0,4 Milliarden Parametern. Sein Kontextfenster wird mit 256k beschrieben, und die veröffentlichten Nutzungshinweise verwenden eine standardmäßig konfigurierte Länge von 262.144. Diese Angaben beschreiben diese Ausgabe in der Größe 8B; die kleineren 3B- und größeren 14B-Familienmitglieder behalten ihre eigenen Komponentengrößen und Konfigurationen.\n\nVisuelle Fähigkeiten erweitern die Eingabe des Modells über einen schriftlichen Dialog hinaus. Ein Dokumentbild kann mit einer Frage zu einem ausgewählten Feld, Absatz oder sichtbaren Zusammenhang kombiniert werden. Ein Screenshot kann mit dem Ziel des Nutzers und der Aufforderung verbunden werden, das relevante Bedienelement zu identifizieren. Fordere die Beobachtung an, die jede Schlussfolgerung stützt, wenn die Antwort von einem visuellen Detail abhängt, und bewahre Überschriften, Beschriftungen und Einheiten, die zur Interpretation eines Ausschnitts benötigt werden.\n\nDie Modellkarte beschreibt mehrsprachige Arbeit in Dutzenden Sprachen, darunter Englisch, Französisch, Spanisch, Deutsch, Italienisch, Portugiesisch, Niederländisch, Chinesisch, Japanisch, Koreanisch und Arabisch. Sie nennt außerdem die Befolgung von Systemanweisungen, native Funktionsaufrufe und JSON-Ausgabe. Definiere die endgültige Sprache, Rolle und Ausgabeanforderungen ausdrücklich, statt das Modell das beabsichtigte Artefakt aus einer großen Eingabe erschließen zu lassen.\n\nDokument-, Dialog- und Agentenaufgaben\n\nDie Anwendungsfälle des Herstellers umfassen Chatschnittstellen, Alltagsassistenten, Bild- und Dokumentbeschreibungen, Übersetzung, Inhaltsgenerierung und spezialisierte Agenten. Stelle für einen Dokumentassistenten die Seite bereit und gib die zurückzugebenden Informationen vor. Eine Extraktionsanfrage kann Feldbezeichnungen, erwartete Typen und den Umgang mit fehlenden Werten benennen. Eine nützliche Antwort kann die Dokumentkennung, den extrahierten Wert und eine kurze Erklärung mit Bezug zur sichtbaren Quelle enthalten.\n\nBewahre für einen fortlaufenden Dialog die relevante frühere Antwort und stelle eine gezielte Anschlussfrage. Ein Nutzer kann zunächst eine Dokumentzusammenfassung anfordern und danach fragen, welche Aussage eine Schlussfolgerung stützt. Dadurch ändert sich die erforderliche Ausgabe von einem allgemeinen Überblick zu einer quellengestützten Erklärung, während das ursprüngliche Material und der Zweck des Dialogs erhalten bleiben.\n\nStelle für mehrsprachige Bearbeitung die Originalpassage, die vorgesehenen Leser und eine Terminologieliste bereit. Fordere eine überarbeitete Fassung an, die Namen, Bedingungen und Einheiten bewahrt, gefolgt von einer kurzen Erklärung der Änderungen, sofern nützlich. Gib für Inhaltsgenerierung die Zielgruppe und die einzubeziehenden Fakten vor, bevor du einen kurzen Entwurf oder alternative Formulierungen anforderst.\n\nBei einer Agentenaufgabe stellt die Anwendung die Werkzeuge und ihre Parameter bereit. Das Modell kann eine Funktion auswählen und Argumente vorbereiten, während die Anwendung sie ausführt und das Ergebnis zurückgibt. Das Funktionsbeispiel in der Modellkarte verbindet eine Bildfrage mit einem Berechnungswerkzeug. Halte das Werkzeugergebnis vom vorgeschlagenen Aufruf getrennt, damit die anschließende schriftliche Antwort die Informationen verwendet, die die Operation tatsächlich zurückgegeben hat.\n\nEmpfohlene Vorbereitung und Einstellungen\n\nDer Hersteller empfiehlt eine Systemanweisung, die Umgebung, Anwendungsfall und die Verwendung von Werkzeugen beschreibt. Halte die Werkzeugauswahl klar definiert und auf das für die Aufgabe notwendige Minimum begrenzt. Ein kleiner Abfrageablauf kann die für die aktuelle Frage relevanten Funktionen mit klar benannten Pflichtargumenten anbieten, statt eine große Sammlung unzusammenhängender Operationen zu präsentieren.\n\nFür alltägliche und produktionsnahe Nutzung empfiehlt die Modellkarte eine Temperatur unter 0,1; höhere Temperaturen stehen für kreative Erkundung zur Verfügung. Behandle dies als Empfehlung für den Anweisungsablauf und nicht als separate Steuerung eines Reasoning-Modus. Die Familie besitzt eigenständige Checkpoints für Base, Instruct und Reasoning; dieser Eintrag ist die Ausgabe Instruct 2512 und nicht die separate Reasoning-Veröffentlichung derselben Größe.\n\nFür Bilder empfiehlt der Hersteller Seitenverhältnisse nahe 1:1 und rät von sehr schmalen oder sehr breiten Eingaben ab. Schneide bei Bedarf zu und bewahre dabei die Beschriftungen und den Kontext, die die Frage benötigt. Enthält eine Seite mehrere unzusammenhängende Bereiche, benenne den zu prüfenden Teil und das zurückzugebende Ergebnis. Ein lesbares, fokussiertes Bild ist nützlicher, als das Modell raten zu lassen, welches kleine Detail auf einer umfassenden Seite wichtig ist.\n\nGrenzen von Kontext und Ausgabe\n\nPlane Text, Bilder, Dialog und gewünschte Antwort um den konfigurierten Kontext herum. Die Nutzungshinweise erlauben ausdrücklich eine Verringerung der konfigurierten Modelllänge, wenn weniger Kontext benötigt wird; das vollständige Fenster ist daher keine Anweisung, jede Anfrage mit allem verfügbaren Material zu füllen. Das Generierungsbeispiel mit 512 Tokens in der Modellkarte ist nur eine Beispieleinstellung, und die gelesenen Quellen belegen keine separate harte maximale Antwortlänge.\n\nDer FP8-Instruct-Checkpoint, die vortrainierte Base-Veröffentlichung und die Reasoning-Veröffentlichung sind eigenständige Ausgaben. Der Hersteller beschreibt außerdem Spezialisierung und Fine-Tuning als Anwendungsfälle. Bewahre bei der Dialogvorbereitung den benannten Checkpoint und seinen Tokenizer und halte Texterzeugung getrennt von Repository-Zugriff, Funktionsausführung oder anderen Handlungen, die die umgebende Anwendung bereitstellt.",
    "alias_of": null,
    "aliases": [],
    "author": "Mistral",
    "capabilities": {
      "context_length": 262144,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "text"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00015000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000015",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00015000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000015",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ],
        "summary": "Die vollständigen Preisangaben zur Konfiguration finden Sie in den Details."
      }
    ],
    "ctx": null,
    "formats": [
      "batches"
    ],
    "id": "mistralai/ministral-8b-2512:batch",
    "input": [
      "text"
    ],
    "kind": "text",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": 0.015,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Preserve full JSON and every result; provider real IDs are only read from actual returned responses.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Ungültige Struktur der dokumentierten Inline-Einbettung, doppelte Schlüssel, ungültige Identitätsangaben zu einem Element oder ein Konflikt mit den konfigurierten Modellfähigkeiten.",
                "http_status": 400,
                "recovery": "Die angegebenen Felder vor jeder neuen Einreichung korrigieren.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Ungültiger API-Schlüssel.",
                "http_status": 401,
                "recovery": "Den autorisierten Ailoot-Schlüssel verwenden.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Gruppe für Stapelverarbeitung nicht verfügbar.",
                "http_status": 403,
                "recovery": "Die Berechtigung des Schlüssels bzw. der Gruppe prüfen.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Stapelverarbeitung wird über das Guthaben abgerechnet; die Erstellung über ein Abonnement wird abgelehnt.",
                "http_status": 422,
                "recovery": "Die autorisierte Gruppe mit Guthabenabrechnung verwenden.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Für die Batch-Eingabe kann kein Preisangebot erstellt werden.",
                "http_status": 422,
                "recovery": "Antwort aufbewahren; die dokumentierte Eingabe der API-Familie verwenden.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Reservierung für Stapelverarbeitung nicht verfügbar.",
                "http_status": 402,
                "recovery": "Die Zulassung klären, bevor eine neue Anfrage gestellt wird.",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "Methodenpreis bzw. native Tarife für Stapelverarbeitung nicht verfügbar.",
                "http_status": 503,
                "recovery": "Antwort aufbewahren; keine anderen Preise einsetzen.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Die genaue Anbieterroute ist nicht verfügbar.",
                "http_status": 503,
                "recovery": "Antwort zur Reparatur der Route aufbewahren.",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Das ursprüngliche Ergebnis muss geprüft werden; X-Should-Retry:false.",
                "http_status": 503,
                "recovery": "Die ursprüngliche operation_id/id beibehalten und ihren Status lesen; den ursprünglichen POST niemals wiederholen.",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "Der Batch-Vorgang, dessen Status abgefragt wird, ist nicht vorhanden oder gehört einer anderen Identität.",
                "http_status": 404,
                "recovery": "Die genaue ursprüngliche id und denselben Nutzer/Schlüssel/dieselbe Gruppe verwenden.",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "mistralai/ministral-8b-2512:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "input_constraints": [
              "Use the exact shown :batch model ID.",
              "Each custom_id must be nonempty and unique within the batch.",
              "Keep requests last in the serialized body; duplicate JSON keys are rejected.",
              "Each body.model is omitted or equals the exact batch caller or its documented base ID.",
              "Per-item provider, service_tier and input_type are outside this batch profile.",
              "stream is omitted or false.",
              "Supply text messages for this Chat batch profile; image/audio/file/video objects, hosted tools and cache-control fields are outside this profile.",
              "If body.model is present, use only the exact caller or wire ID listed here; no suffix conversion is needed.",
              "For google/ wire IDs, all items use an identical response_format."
            ],
            "outputs": {
              "all_results": "Das vollständige ursprüngliche Status-JSON, jedes Ergebnis/jede custom_id und den vollständigen Antwort- oder Fehlerkörper aufbewahren. Abgeschlossene results[] ohne Filterung als JSONL speichern.",
              "enclosing_family": "batch",
              "family": "text",
              "fields": [
                {
                  "name": "results[].custom_id",
                  "type": "string"
                },
                {
                  "name": "results[].response.body.choices[].message.content",
                  "type": "string|null"
                },
                {
                  "name": "results[].error",
                  "type": "object|null"
                },
                {
                  "name": "usage",
                  "type": "object|null"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "endpoint",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "request_counts",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "results[].id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "results[].response.status_code",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "results[].response.request_id",
                  "type": "string"
                }
              ],
              "format": "eingebettetes JSON unter results[].response.body"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "/v1/chat/completions"
                ],
                "enum_known": true,
                "name": "endpoint",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mistralai/ministral-8b-2512:batch"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "requests",
                "required": true,
                "type": "batch_item[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].custom_id",
                "required": true,
                "type": "string",
                "unique_within_batch": true
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].body.messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "24h"
                ],
                "enum_known": true,
                "name": "completion_window",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mistralai/ministral-8b-2512:batch",
                  "mistralai/ministral-8b-2512"
                ],
                "enum_known": true,
                "name": "requests[].body.model",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  [
                    "mistral"
                  ]
                ],
                "enum_known": true,
                "name": "provider.only",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  null
                ],
                "enum_known": true,
                "name": "provider.allow_fallbacks",
                "required": false,
                "type": "boolean|null"
              }
            ],
            "provider_policy": {
              "allow_fallbacks": false,
              "configured_only": [
                "mistral"
              ],
              "per_item_override": false,
              "when_omitted": "Current Source injects the exact persisted declaration before fresh submission."
            },
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "completion_window": {
                  "enum": [
                    "24h"
                  ],
                  "type": "string"
                },
                "endpoint": {
                  "enum": [
                    "/v1/chat/completions"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "mistralai/ministral-8b-2512:batch"
                  ],
                  "type": "string"
                },
                "provider": {
                  "additionalProperties": false,
                  "properties": {
                    "allow_fallbacks": {
                      "enum": [
                        false,
                        null
                      ],
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "only": {
                      "enum": [
                        [
                          "mistral"
                        ]
                      ],
                      "items": {
                        "enum": [
                          "mistral"
                        ],
                        "type": "string"
                      },
                      "maxItems": 1,
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "requests": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "body": {
                        "additionalProperties": true,
                        "properties": {
                          "max_tokens": {
                            "minimum": 1,
                            "type": "integer"
                          },
                          "messages": {
                            "items": {
                              "properties": {
                                "content": {
                                  "type": "string"
                                },
                                "role": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "role",
                                "content"
                              ],
                              "type": "object"
                            },
                            "minItems": 1,
                            "type": "array"
                          },
                          "model": {
                            "enum": [
                              "mistralai/ministral-8b-2512:batch",
                              "mistralai/ministral-8b-2512"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "messages"
                        ],
                        "type": "object"
                      },
                      "custom_id": {
                        "minLength": 1,
                        "type": "string"
                      }
                    },
                    "required": [
                      "custom_id",
                      "body"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "endpoint",
                "model",
                "requests"
              ],
              "type": "object"
            },
            "schema_template": {
              "endpoint": "/v1/chat/completions",
              "model": "mistralai/ministral-8b-2512:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "unsupported": [
              "Files/input_file_id batch upload workflow",
              "active cancel route",
              "public batch list/delete/result-download route",
              "model-name-derived capability or weights equivalence"
            ]
          },
          "input": {
            "content_type": "application/json",
            "file_material": "Der Aufrufer kann tatsächliches UTF-8-JSONL lokal in requests[] einlesen. Es werden weder ein Upload-Zweck noch input_file_id oder eine Dateireferenz verwendet. Fehlendes oder leeres Kundenmaterial stoppt die Vorbereitung vor POST.",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "eingebettete requests[]; jedes Element enthält custom_id und body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "Anfragekörper für Text Chat Completions in der dokumentierten Inline-Batch-Struktur.",
            "serialization_order": [
              "endpoint",
              "model",
              "provider (falls angegeben)",
              "completion_window (falls angegeben)",
              "requests als letztes Feld"
            ]
          },
          "lifecycle": {
            "cancel": null,
            "create": {
              "accepted_status": 202,
              "http": "POST",
              "path": "/v1/batches"
            },
            "delete": null,
            "file_upload": null,
            "mode": "asynchronous",
            "observed_status_values": [
              "validating",
              "in_progress",
              "finalizing",
              "completed",
              "failed",
              "expired",
              "cancelling",
              "cancelled"
            ],
            "owned_results": {
              "behavior": "Completed results are saved as owned JSONL, read back byte-for-byte and registered in the existing media library before publication after settlement. Status returns inline results; no separate Batch download route is added.",
              "format": "application/x-ndjson",
              "public_url_field_in_status": null
            },
            "status": {
              "http": "GET",
              "id_source": "die tatsächliche response.id der ursprünglichen Erstellungsantwort; derselbe Nutzer/Schlüssel/dieselbe Gruppe",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "Die ursprüngliche Vorgangs-ID beibehalten. Bei 503 result_pending_check gilt X-Should-Retry:false; einen ursprünglichen Batch mit unbekanntem Ausgang niemals erneut einreichen."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/batches"
          },
          "output": {
            "all_results": "Preserve the full original status JSON, every result/custom_id and complete response or error body. Save completed results[] as JSONL without filtering.",
            "family": "batch",
            "format": "JSON; completed results[] are returned inline and can be saved as JSONL."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Basistarife für Token",
            "units": [
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.000015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000015",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Anfragelängenstufe 1",
            "units": [
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.000015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000015",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json\nfrom pathlib import Path\nbody=json.loads('{\"endpoint\":\"/v1/chat/completions\",\"model\":\"mistralai/ministral-8b-2512:batch\",\"requests\":[{\"custom_id\":\"req-0001\",\"body\":{\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}],\"max_tokens\":16}}]}')\nPath(\"batch-request.json\").write_text(json.dumps(body,ensure_ascii=False),encoding=\"utf-8\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n",
            "label": "curl · retained fixture",
            "language": "bash"
          },
          {
            "code": "import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(\"Customer JSONL file is missing\")\n    items = [json.loads(line) for line in path.read_text(encoding=\"utf-8\").splitlines() if line.strip()]\n    if not items: raise ValueError(\"Customer JSONL contains no requests\")\n    ids = set()\n    for item in items:\n        if set(item) != {\"custom_id\", \"body\"}: raise ValueError(\"Each item needs custom_id and body\")\n        cid = item[\"custom_id\"]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(\"custom_id must be nonempty and unique\")\n        ids.add(cid)\n        if not isinstance(item[\"body\"], dict) or not item[\"body\"].get(\"messages\"): raise ValueError(\"Supply actual text messages\")\n        supplied_model = item[\"body\"].get(\"model\")\n        if supplied_model is not None and supplied_model not in ['mistralai/ministral-8b-2512:batch', 'mistralai/ministral-8b-2512']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"mistralai/ministral-8b-2512:batch\", \"requests\":items}\n\nif __name__ == \"__main__\":\n    material = os.environ.get(\"AILOOT_BATCH_REQUESTS_JSONL\", \"\")\n    if not material: raise SystemExit(\"Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file\")\n    body = prepare_requests(material)\n    key = os.environ.get(\"AILOOT_API_KEY\", \"\")\n    if not key: raise SystemExit(\"Set AILOOT_API_KEY\")\n    request = Request(\"https://api.ailoot.ai/v1/batches\", data=json.dumps(body, ensure_ascii=False).encode(\"utf-8\"), headers={\"Authorization\":\"Bearer \" + key, \"Content-Type\":\"application/json\"}, method=\"POST\")\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(\"batch-create-response.json\").write_bytes(raw)\n        print(raw.decode(\"utf-8\"))\n",
            "label": "Python HTTP · actual customer JSONL",
            "language": "python"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nBATCH_OPERATION_ID=\"$(python3 - <<'PY_ID'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(\"batch-create-response.json\").read_text(encoding=\"utf-8\"))\noperation = response.get(\"id\")\nif not isinstance(operation, str) or not operation: raise SystemExit(\"No actual original operation ID; preserve the response and do not resubmit\")\nprint(quote(operation, safe=\"\"))\nPY_ID\n)\"\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o batch-status-response.json\n",
            "label": "curl · original operation status",
            "language": "bash"
          },
          {
            "code": "import json\nfrom pathlib import Path\nraw = Path(\"batch-status-response.json\").read_bytes()\nresponse = json.loads(raw)\nif response.get(\"status\") != \"completed\":\n    raise SystemExit(\"Keep the original operation; read its status without resubmitting\")\nresults = response.get(\"results\")\nif not isinstance(results, list) or not results:\n    raise SystemExit(\"Preserve the original response; completed results are missing\")\nPath(\"batch-results.jsonl\").write_text(\"\".join(json.dumps(item, ensure_ascii=False) + \"\\n\" for item in results), encoding=\"utf-8\")\n# Preserve batch-status-response.json with aggregate usage and every result/error.\n",
            "label": "Python · save every completed result",
            "language": "python"
          }
        ],
        "family": "batch",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "batches",
        "hints": [
          "Read your actual request items before submission; inline requests are required.",
          "Keep the returned operation ID and every result. Never replay an unknown submission."
        ],
        "http": "POST",
        "in": 0.15,
        "input": [
          "text"
        ],
        "label": "Stapelverarbeitung",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0.15,
        "output": [
          "text"
        ],
        "path": "/v1/batches",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          },
          {
            "label": "Explicit cache pricing",
            "value": "Not enabled",
            "when": "When explicit cache is requested"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.000015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000015",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000015",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.000015000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.000000015",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "mistralai/ministral-8b-2512:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.015,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.15,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 0.15,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.00015000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000015",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00015000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000015",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": "0.000015000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": "0.000000015",
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "mistralai/ministral-8b-2512:batch",
        "request_model_id": "mistralai/ministral-8b-2512:batch",
        "route_label": "Ultra"
      }
    ],
    "name": "Mistral: Ministral 3 8B 2512 (batch)",
    "price": {
      "in": 0.15,
      "in_label": null,
      "out": 0.15,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.15,
      "sort_out": 0.15,
      "varies": true
    },
    "short": "Ministral 3 8B Instruct 2512 ist ein mehrsprachiges Text- und Bildmodell für Anweisungsaufgaben mit einer Sprachkomponente von 8,4 Milliarden Parametern und einem Bildencoder von 0,4 Milliarden Parametern. Es unterstützt einen vom Hersteller angegebenen Kontext von 256k, Systemanweisungen, JSON und native Funktionsaufrufe für Assistenten und Dokumentabläufe."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Ministral 3 8B Instruct 2512 ist ein mehrsprachiges Text- und Bildmodell für Anweisungsaufgaben mit einer Sprachkomponente von 8,4 Milliarden Parametern und einem Bildencoder von 0,4 Milliarden Parametern. Es unterstützt einen vom Hersteller angegebenen Kontext von 256k, Systemanweisungen, JSON und native Funktionsaufrufe für Assistenten und Dokumentabläufe.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "81f4228573fce4de536084903c5e059200c08a396081f911f581de38ffd01f5d",
    "renderer_sha256": "8bd3076b303b7b3aa4d961032854071403a471ec26a4f50c64e3a32556ea2925"
  },
  "sourceRevision": "04490d1ba3891006ad91c5f0cb55b70017b808c19964a53ed6b1a081d7569bb5"
}
