{
  "aboutHtml": "<p>Mistral Medium 3.1 ist eine multimodale Ausgabe von Mistral AI für Text- und Bildverständnis. Der Hersteller beschreibt diese Revision als Verbesserung von Ton und Leistung innerhalb der Medium-3-Linie. Sie verarbeitet Text und Bilder und erzeugt Text: eine Erklärung, Dokumentantwort, einen strukturierten Datensatz oder vorgeschlagenen Funktionsaufruf. Die feste Herstellerkennung dieser Ausgabe lautet mistral-medium-2508.</p><p>Kontext und konkrete Ausgabe</p><p>Die Modellseite dokumentiert ein Kontextfenster von 128k. Nutze es, um zusammengehörige Quellpassagen, Bildbelege, Dialog und Nutzeraufgabe gemeinsam zu bewahren. Benenne die Dokumentrollen und die zu beantwortende Frage, bevor du eine große Sammlung bereitstellst. Ein langer Kontext kann einen gezielten Vergleich unterstützen, während das endgültige Artefakt eine kurze Tabelle oder ein überarbeiteter Abschnitt bleibt.</p><p>Medium 3.1 behält seine eigene Spezifikation. Der Kontext von 256k, die dichte Architektur mit 128 Milliarden Parametern und die konfigurierbaren hybriden Reasoning-Modi von Medium 3.5 sollten diesem Eintrag nicht zugeschrieben werden. Die Seite zu 3.1 gibt weder eine Parameterzahl noch eine separate maximale Antwortlänge an, die bedenkenlos aus dem späteren Modell übernommen werden könnte.</p><p>Strukturierte Ausgaben und Funktionen</p><p>Der Hersteller nennt strukturierte Ausgaben, Funktionsaufrufe und vorhergesagte Ausgaben als Funktionen dieser Ausgabe. Definiere für eine strukturierte Extraktionsaufgabe die Pflichtfelder, erwarteten Typen und den Umgang mit Informationen, die in der Quelle fehlen. Ein Datensatz kann die Dokumentkennung, die extrahierte Aussage, ihre Quellstelle und die verbleibende Frage enthalten. Fordere nur den Datensatz an, wenn ein Programm ihn einlesen wird, oder halte eine Prosaerklärung getrennt, wenn jemand die Interpretation prüfen muss.</p><p>Mistrals gemeinsame Dokumentation zu strukturierten Ausgaben unterscheidet den JSON-Modus von einem benutzerdefinierten Schema. Der JSON-Modus verlangt eine ausdrückliche Anweisung zum gewünschten JSON-Format, während der benutzerdefinierte Weg eine konkretere Struktur festlegt. Dies ist die Formatierung des Textergebnisses und keine neue Inhaltsmodalität oder externe Handlung.</p><p>Für Funktionen definiert die Anwendung die verfügbare Operation und Argumente, das Modell wählt einen passenden Aufruf und bereitet Werte vor, und die Anwendung führt ihn aus. Sein Ergebnis liefert anschließend Informationen für die nächste Antwort. Ein Dokumentassistent kann eine Abfrage nutzen, um fehlende Referenzdaten zu erhalten, aber nur, wenn die umgebende Anwendung diese Abfrage bereitstellt und ihr tatsächliches Ergebnis zurückgibt. Halte den vorgeschlagenen Aufruf und die zurückgegebenen Daten einander zugeordnet.</p><p>Vorhergesagte Änderungen und Antwortpräfixe</p><p>Vorhergesagte Ausgaben sind nützlich, wenn der größte Teil des gewünschten Ergebnisses bereits bekannt ist, etwa bei einem Dokument oder einer Codedatei mit begrenztem Änderungsbedarf. Stelle den vorhandenen Inhalt bereit und beschreibe die Änderung präzise, einschließlich dessen, was unverändert bleiben muss. Eine Anfrage kann die Terminologie eines Abschnitts aktualisieren oder ein Implementierungsdetail ersetzen und dabei das übrige Dokument bewahren. Die Vorhersage enthält erwarteten Ausgabeinhalt und keine bereits auf eine Datei angewendete Änderung.</p><p>Die Modellseite nennt außerdem die Fortsetzung von Antwortpräfixen. In der Chatdokumentation des Herstellers liefert ein Präfix einen bekannten Anfang der Assistentenantwort, nach dem die Generierung fortgesetzt wird. Ein bekannter Anfang und ein vorhergesagter Hauptinhalt lösen unterschiedliche Vorbereitungsprobleme. Stapelverarbeitung und Agenten-/Dialogschnittstellen sind ebenfalls Ablauffunktionen und keine separaten Bild-, Audio- oder Reasoning-Ausgaben von Medium 3.1.</p><p>Fragen zu Dokumenten und Bildern</p><p>Der genannte Dokument-QnA-Ablauf verbindet mittels OCR vorbereiteten Text, Struktur und Formatierung mit der Sprachmodellanalyse. Frage nach der konkreten Bedingung, Passage oder Beziehung, die die Aufgabe benötigt. Ein Vergleich kann die Quelldokumente benennen und gemeinsame Aussagen, Konflikte und ungeklärte Details anfordern, mit der Quellstelle neben jedem Befund.</p><p>Die Anleitung des Herstellers zu visuellen Fähigkeiten umfasst Medium 3.1 ausdrücklich. Eine direkte visuelle Frage kann ein lesbares Diagramm, Dokumentbild oder einen Screenshot bereitstellen und fragen, welche sichtbaren Belege eine Schlussfolgerung stützen. Bewahre Achsen, Einheiten, Beschriftungen und den Kontext um ein zugeschnittenes Feld. Benenne bei mehreren Bildern deren Reihenfolge und Rolle, statt das Modell erschließen zu lassen, welches Original, Überarbeitung oder Referenz ist.</p><p>Kombiniere beispielsweise eine schriftliche Prozessanforderung mit einem Screenshot und fordere eine Tabelle mit sichtbaren Übereinstimmungen, Abweichungen und Fragen an, die mehr Informationen benötigen. Eine andere Aufgabe kann zwei Dokumentversionen bereitstellen und eine überarbeitete Passage verlangen, die ihre gemeinsamen Bedingungen bewahrt und dabei einen benannten Widerspruch auflöst. Dies sind vorgeschlagene Anwendungen der dokumentierten visuellen, Dokument- und Bearbeitungsfähigkeiten mit vorab definiertem erforderlichem Ergebnis.</p><p>Das endgültige Artefakt vorbereiten</p><p>Gib dem Assistenten eine klare Rolle, das zu verwendende Quellenmaterial und die Antwortform vor. Halte dauerhafte Antwortregeln vom untersuchten Dokument getrennt und nenne Zielsprache und Terminologie. Eine nützliche Antwort kann einen extrahierten Fakt, seine Quelle und eine Interpretation trennen und ist damit leichter zu prüfen als eine einzige zusammengeführte Zusammenfassung.</p><p>Das dokumentierte Ergebnis bleibt Text. Externe Werkzeuge, Dateiänderungen und weitere Dokumentverarbeitung gehören zur Anwendung, die mit dem Dialog verbunden ist. Bewahre die benannte Ausgabe Medium 3.1 und ihren Kontext von 128k und fordere die Erklärung, den strukturierten Datensatz oder die gezielte Überarbeitung an, die der nächste Schritt tatsächlich benötigt.</p>",
  "aboutText": "Mistral Medium 3.1 ist eine multimodale Ausgabe von Mistral AI für Text- und Bildverständnis. Der Hersteller beschreibt diese Revision als Verbesserung von Ton und Leistung innerhalb der Medium-3-Linie. Sie verarbeitet Text und Bilder und erzeugt Text: eine Erklärung, Dokumentantwort, einen strukturierten Datensatz oder vorgeschlagenen Funktionsaufruf. Die feste Herstellerkennung dieser Ausgabe lautet mistral-medium-2508.\n\nKontext und konkrete Ausgabe\n\nDie Modellseite dokumentiert ein Kontextfenster von 128k. Nutze es, um zusammengehörige Quellpassagen, Bildbelege, Dialog und Nutzeraufgabe gemeinsam zu bewahren. Benenne die Dokumentrollen und die zu beantwortende Frage, bevor du eine große Sammlung bereitstellst. Ein langer Kontext kann einen gezielten Vergleich unterstützen, während das endgültige Artefakt eine kurze Tabelle oder ein überarbeiteter Abschnitt bleibt.\n\nMedium 3.1 behält seine eigene Spezifikation. Der Kontext von 256k, die dichte Architektur mit 128 Milliarden Parametern und die konfigurierbaren hybriden Reasoning-Modi von Medium 3.5 sollten diesem Eintrag nicht zugeschrieben werden. Die Seite zu 3.1 gibt weder eine Parameterzahl noch eine separate maximale Antwortlänge an, die bedenkenlos aus dem späteren Modell übernommen werden könnte.\n\nStrukturierte Ausgaben und Funktionen\n\nDer Hersteller nennt strukturierte Ausgaben, Funktionsaufrufe und vorhergesagte Ausgaben als Funktionen dieser Ausgabe. Definiere für eine strukturierte Extraktionsaufgabe die Pflichtfelder, erwarteten Typen und den Umgang mit Informationen, die in der Quelle fehlen. Ein Datensatz kann die Dokumentkennung, die extrahierte Aussage, ihre Quellstelle und die verbleibende Frage enthalten. Fordere nur den Datensatz an, wenn ein Programm ihn einlesen wird, oder halte eine Prosaerklärung getrennt, wenn jemand die Interpretation prüfen muss.\n\nMistrals gemeinsame Dokumentation zu strukturierten Ausgaben unterscheidet den JSON-Modus von einem benutzerdefinierten Schema. Der JSON-Modus verlangt eine ausdrückliche Anweisung zum gewünschten JSON-Format, während der benutzerdefinierte Weg eine konkretere Struktur festlegt. Dies ist die Formatierung des Textergebnisses und keine neue Inhaltsmodalität oder externe Handlung.\n\nFür Funktionen definiert die Anwendung die verfügbare Operation und Argumente, das Modell wählt einen passenden Aufruf und bereitet Werte vor, und die Anwendung führt ihn aus. Sein Ergebnis liefert anschließend Informationen für die nächste Antwort. Ein Dokumentassistent kann eine Abfrage nutzen, um fehlende Referenzdaten zu erhalten, aber nur, wenn die umgebende Anwendung diese Abfrage bereitstellt und ihr tatsächliches Ergebnis zurückgibt. Halte den vorgeschlagenen Aufruf und die zurückgegebenen Daten einander zugeordnet.\n\nVorhergesagte Änderungen und Antwortpräfixe\n\nVorhergesagte Ausgaben sind nützlich, wenn der größte Teil des gewünschten Ergebnisses bereits bekannt ist, etwa bei einem Dokument oder einer Codedatei mit begrenztem Änderungsbedarf. Stelle den vorhandenen Inhalt bereit und beschreibe die Änderung präzise, einschließlich dessen, was unverändert bleiben muss. Eine Anfrage kann die Terminologie eines Abschnitts aktualisieren oder ein Implementierungsdetail ersetzen und dabei das übrige Dokument bewahren. Die Vorhersage enthält erwarteten Ausgabeinhalt und keine bereits auf eine Datei angewendete Änderung.\n\nDie Modellseite nennt außerdem die Fortsetzung von Antwortpräfixen. In der Chatdokumentation des Herstellers liefert ein Präfix einen bekannten Anfang der Assistentenantwort, nach dem die Generierung fortgesetzt wird. Ein bekannter Anfang und ein vorhergesagter Hauptinhalt lösen unterschiedliche Vorbereitungsprobleme. Stapelverarbeitung und Agenten-/Dialogschnittstellen sind ebenfalls Ablauffunktionen und keine separaten Bild-, Audio- oder Reasoning-Ausgaben von Medium 3.1.\n\nFragen zu Dokumenten und Bildern\n\nDer genannte Dokument-QnA-Ablauf verbindet mittels OCR vorbereiteten Text, Struktur und Formatierung mit der Sprachmodellanalyse. Frage nach der konkreten Bedingung, Passage oder Beziehung, die die Aufgabe benötigt. Ein Vergleich kann die Quelldokumente benennen und gemeinsame Aussagen, Konflikte und ungeklärte Details anfordern, mit der Quellstelle neben jedem Befund.\n\nDie Anleitung des Herstellers zu visuellen Fähigkeiten umfasst Medium 3.1 ausdrücklich. Eine direkte visuelle Frage kann ein lesbares Diagramm, Dokumentbild oder einen Screenshot bereitstellen und fragen, welche sichtbaren Belege eine Schlussfolgerung stützen. Bewahre Achsen, Einheiten, Beschriftungen und den Kontext um ein zugeschnittenes Feld. Benenne bei mehreren Bildern deren Reihenfolge und Rolle, statt das Modell erschließen zu lassen, welches Original, Überarbeitung oder Referenz ist.\n\nKombiniere beispielsweise eine schriftliche Prozessanforderung mit einem Screenshot und fordere eine Tabelle mit sichtbaren Übereinstimmungen, Abweichungen und Fragen an, die mehr Informationen benötigen. Eine andere Aufgabe kann zwei Dokumentversionen bereitstellen und eine überarbeitete Passage verlangen, die ihre gemeinsamen Bedingungen bewahrt und dabei einen benannten Widerspruch auflöst. Dies sind vorgeschlagene Anwendungen der dokumentierten visuellen, Dokument- und Bearbeitungsfähigkeiten mit vorab definiertem erforderlichem Ergebnis.\n\nDas endgültige Artefakt vorbereiten\n\nGib dem Assistenten eine klare Rolle, das zu verwendende Quellenmaterial und die Antwortform vor. Halte dauerhafte Antwortregeln vom untersuchten Dokument getrennt und nenne Zielsprache und Terminologie. Eine nützliche Antwort kann einen extrahierten Fakt, seine Quelle und eine Interpretation trennen und ist damit leichter zu prüfen als eine einzige zusammengeführte Zusammenfassung.\n\nDas dokumentierte Ergebnis bleibt Text. Externe Werkzeuge, Dateiänderungen und weitere Dokumentverarbeitung gehören zur Anwendung, die mit dem Dialog verbunden ist. Bewahre die benannte Ausgabe Medium 3.1 und ihren Kontext von 128k und fordere die Erklärung, den strukturierten Datensatz oder die gezielte Überarbeitung an, die der nächste Schritt tatsächlich benötigt.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "d21e740be4638936a82a7d52ce01d25816ebb0e8ac5955499b81e75a1f2c6936",
    "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: Mistral Medium 3.1 (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/mistral-medium-3.1: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%2Fmistral-medium-3.1%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\">Mistral Medium 3.1 ist ein Text- und Bildmodell für Dialogantworten, Fragen zu Dokumenten und strukturierte Extraktion. Sein vom Hersteller angegebener Kontext von 128k und die aufgeführten Funktionen für Funktionsaufrufe, vorhergesagte Ausgaben und Präfixe unterstützen quellengestützte Erklärungen und gezielte Bearbeitungsablä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>Mistral Medium 3.1 ist eine multimodale Ausgabe von Mistral AI für Text- und Bildverständnis. Der Hersteller beschreibt diese Revision als Verbesserung von Ton und Leistung innerhalb der Medium-3-Linie. Sie verarbeitet Text und Bilder und erzeugt Text: eine Erklärung, Dokumentantwort, einen strukturierten Datensatz oder vorgeschlagenen Funktionsaufruf. Die feste Herstellerkennung dieser Ausgabe lautet mistral-medium-2508.</p><p>Kontext und konkrete Ausgabe</p><p>Die Modellseite dokumentiert ein Kontextfenster von 128k. Nutze es, um zusammengehörige Quellpassagen, Bildbelege, Dialog und Nutzeraufgabe gemeinsam zu bewahren. Benenne die Dokumentrollen und die zu beantwortende Frage, bevor du eine große Sammlung bereitstellst. Ein langer Kontext kann einen gezielten Vergleich unterstützen, während das endgültige Artefakt eine kurze Tabelle oder ein überarbeiteter Abschnitt bleibt.</p><p>Medium 3.1 behält seine eigene Spezifikation. Der Kontext von 256k, die dichte Architektur mit 128 Milliarden Parametern und die konfigurierbaren hybriden Reasoning-Modi von Medium 3.5 sollten diesem Eintrag nicht zugeschrieben werden. Die Seite zu 3.1 gibt weder eine Parameterzahl noch eine separate maximale Antwortlänge an, die bedenkenlos aus dem späteren Modell übernommen werden könnte.</p><p>Strukturierte Ausgaben und Funktionen</p><p>Der Hersteller nennt strukturierte Ausgaben, Funktionsaufrufe und vorhergesagte Ausgaben als Funktionen dieser Ausgabe. Definiere für eine strukturierte Extraktionsaufgabe die Pflichtfelder, erwarteten Typen und den Umgang mit Informationen, die in der Quelle fehlen. Ein Datensatz kann die Dokumentkennung, die extrahierte Aussage, ihre Quellstelle und die verbleibende Frage enthalten. Fordere nur den Datensatz an, wenn ein Programm ihn einlesen wird, oder halte eine Prosaerklärung getrennt, wenn jemand die Interpretation prüfen muss.</p><p>Mistrals gemeinsame Dokumentation zu strukturierten Ausgaben unterscheidet den JSON-Modus von einem benutzerdefinierten Schema. Der JSON-Modus verlangt eine ausdrückliche Anweisung zum gewünschten JSON-Format, während der benutzerdefinierte Weg eine konkretere Struktur festlegt. Dies ist die Formatierung des Textergebnisses und keine neue Inhaltsmodalität oder externe Handlung.</p><p>Für Funktionen definiert die Anwendung die verfügbare Operation und Argumente, das Modell wählt einen passenden Aufruf und bereitet Werte vor, und die Anwendung führt ihn aus. Sein Ergebnis liefert anschließend Informationen für die nächste Antwort. Ein Dokumentassistent kann eine Abfrage nutzen, um fehlende Referenzdaten zu erhalten, aber nur, wenn die umgebende Anwendung diese Abfrage bereitstellt und ihr tatsächliches Ergebnis zurückgibt. Halte den vorgeschlagenen Aufruf und die zurückgegebenen Daten einander zugeordnet.</p><p>Vorhergesagte Änderungen und Antwortpräfixe</p><p>Vorhergesagte Ausgaben sind nützlich, wenn der größte Teil des gewünschten Ergebnisses bereits bekannt ist, etwa bei einem Dokument oder einer Codedatei mit begrenztem Änderungsbedarf. Stelle den vorhandenen Inhalt bereit und beschreibe die Änderung präzise, einschließlich dessen, was unverändert bleiben muss. Eine Anfrage kann die Terminologie eines Abschnitts aktualisieren oder ein Implementierungsdetail ersetzen und dabei das übrige Dokument bewahren. Die Vorhersage enthält erwarteten Ausgabeinhalt und keine bereits auf eine Datei angewendete Änderung.</p><p>Die Modellseite nennt außerdem die Fortsetzung von Antwortpräfixen. In der Chatdokumentation des Herstellers liefert ein Präfix einen bekannten Anfang der Assistentenantwort, nach dem die Generierung fortgesetzt wird. Ein bekannter Anfang und ein vorhergesagter Hauptinhalt lösen unterschiedliche Vorbereitungsprobleme. Stapelverarbeitung und Agenten-/Dialogschnittstellen sind ebenfalls Ablauffunktionen und keine separaten Bild-, Audio- oder Reasoning-Ausgaben von Medium 3.1.</p><p>Fragen zu Dokumenten und Bildern</p><p>Der genannte Dokument-QnA-Ablauf verbindet mittels OCR vorbereiteten Text, Struktur und Formatierung mit der Sprachmodellanalyse. Frage nach der konkreten Bedingung, Passage oder Beziehung, die die Aufgabe benötigt. Ein Vergleich kann die Quelldokumente benennen und gemeinsame Aussagen, Konflikte und ungeklärte Details anfordern, mit der Quellstelle neben jedem Befund.</p><p>Die Anleitung des Herstellers zu visuellen Fähigkeiten umfasst Medium 3.1 ausdrücklich. Eine direkte visuelle Frage kann ein lesbares Diagramm, Dokumentbild oder einen Screenshot bereitstellen und fragen, welche sichtbaren Belege eine Schlussfolgerung stützen. Bewahre Achsen, Einheiten, Beschriftungen und den Kontext um ein zugeschnittenes Feld. Benenne bei mehreren Bildern deren Reihenfolge und Rolle, statt das Modell erschließen zu lassen, welches Original, Überarbeitung oder Referenz ist.</p><p>Kombiniere beispielsweise eine schriftliche Prozessanforderung mit einem Screenshot und fordere eine Tabelle mit sichtbaren Übereinstimmungen, Abweichungen und Fragen an, die mehr Informationen benötigen. Eine andere Aufgabe kann zwei Dokumentversionen bereitstellen und eine überarbeitete Passage verlangen, die ihre gemeinsamen Bedingungen bewahrt und dabei einen benannten Widerspruch auflöst. Dies sind vorgeschlagene Anwendungen der dokumentierten visuellen, Dokument- und Bearbeitungsfähigkeiten mit vorab definiertem erforderlichem Ergebnis.</p><p>Das endgültige Artefakt vorbereiten</p><p>Gib dem Assistenten eine klare Rolle, das zu verwendende Quellenmaterial und die Antwortform vor. Halte dauerhafte Antwortregeln vom untersuchten Dokument getrennt und nenne Zielsprache und Terminologie. Eine nützliche Antwort kann einen extrahierten Fakt, seine Quelle und eine Interpretation trennen und ist damit leichter zu prüfen als eine einzige zusammengeführte Zusammenfassung.</p><p>Das dokumentierte Ergebnis bleibt Text. Externe Werkzeuge, Dateiänderungen und weitere Dokumentverarbeitung gehören zur Anwendung, die mit dem Dialog verbunden ist. Bewahre die benannte Ausgabe Medium 3.1 und ihren Kontext von 128k und fordere die Erklärung, den strukturierten Datensatz oder die gezielte Überarbeitung an, die der nächste Schritt tatsächlich benötigt.</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/mistral-medium-3.1: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/mistral-medium-3.1:batch, mistralai/mistral-medium-3.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\">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.0004</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Ausgabe · Ausgabetoken</span> <b>$0.002</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Eingabe · Cache-Lesen</span> <b>$0.00004</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.0004</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Ausgabe · Ausgabetoken</span> <b>$0.002</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Eingabe · Cache-Lesen</span> <b>$0.00004</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-1922-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1922-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · gespeicherte Beispieldaten</button><button class=\"cg-tab\" id=\"model-code-1922-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1922-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python HTTP · tatsächliche JSONL-Daten des Kunden</button><button class=\"cg-tab\" id=\"model-code-1922-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1922-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-1922-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1922-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/mistral-medium-3.1: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-1922-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1922-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/mistral-medium-3.1:batch&#39;, &#39;mistralai/mistral-medium-3.1&#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/mistral-medium-3.1: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-1922-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1922-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-1923-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1923-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-1923-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1923-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%2Fmistral-medium-3.1%3Abatch&amp;route=Ultra&amp;caller=mistralai%2Fmistral-medium-3.1%3Abatch&amp;fmt=batches\"><code>mistralai/mistral-medium-3.1: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%2Fmistral-medium-3.1%3Abatch&amp;route=Ultra&amp;caller=mistralai%2Fmistral-medium-3.1%3Abatch&amp;fmt=batches\"><code>mistralai/mistral-medium-3.1:batch</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "mistralai/mistral-medium-3.1:batch",
        "fmt": "batches",
        "http": "POST",
        "path": "/v1/batches",
        "request_model_id": "mistralai/mistral-medium-3.1:batch",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|batches|/v1/batches|mistralai%2Fmistral-medium-3.1%3Abatch",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": 0.04,
        "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/mistral-medium-3.1: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/mistral-medium-3.1: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/mistral-medium-3.1:batch",
                  "mistralai/mistral-medium-3.1"
                ],
                "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/mistral-medium-3.1: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/mistral-medium-3.1:batch",
                              "mistralai/mistral-medium-3.1"
                            ],
                            "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/mistral-medium-3.1: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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000002",
                "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.00004000",
                "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.00000004",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000002",
                "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.00004000",
                "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.00000004",
                "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/mistral-medium-3.1: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/mistral-medium-3.1:batch', 'mistralai/mistral-medium-3.1']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"mistralai/mistral-medium-3.1: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.4,
        "input": [
          "text"
        ],
        "label": "Stapelverarbeitung",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 2,
        "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000002",
                "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.00004000",
                "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.00000004",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000002",
                "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.00004000",
                "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.00000004",
                "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/mistral-medium-3.1:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.04,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.4,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 2,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.000002",
            "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.00004000",
            "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.00000004",
            "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/mistral-medium-3.1:batch",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "013c663101197926b424f94ec99b138ed9cfbc92d15cba3536ed66f01ec596cd",
    "input_html_sha256": "de30a9ee41ae2e4fdd94188e4fdaea569197d96cce62500d9363b7a30f6da584",
    "private_audit_sha256": "4099424bd23dc363fdaade925edbaa2c680cbe3dd6fdd1b3e8ddebe3610a9abb",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/de/mistralai-mistral-medium-3-1-u003a-batch/",
    "description": "Mistral Medium 3.1 ist ein Text- und Bildmodell für Dialogantworten, Fragen zu Dokumenten und strukturierte Extraktion. Sein vom Hersteller angegebener Kontext von 128k und die aufgeführten Funktionen für Funktionsaufrufe, vorhergesagte Ausgaben und Präfixe unterstützen quellengestützte Erklärungen und gezielte Bearbeitungsabläufe.",
    "locale": "de",
    "md_url": "https://ailoot.ai/models/de/mistralai-mistral-medium-3-1-u003a-batch/index.md",
    "title": "Mistral: Mistral Medium 3.1 (batch) — Ailoot",
    "url": "https://ailoot.ai/models/de/mistralai-mistral-medium-3-1-u003a-batch/"
  },
  "rawModel": {
    "about": "Mistral Medium 3.1 ist eine multimodale Ausgabe von Mistral AI für Text- und Bildverständnis. Der Hersteller beschreibt diese Revision als Verbesserung von Ton und Leistung innerhalb der Medium-3-Linie. Sie verarbeitet Text und Bilder und erzeugt Text: eine Erklärung, Dokumentantwort, einen strukturierten Datensatz oder vorgeschlagenen Funktionsaufruf. Die feste Herstellerkennung dieser Ausgabe lautet mistral-medium-2508.\n\nKontext und konkrete Ausgabe\n\nDie Modellseite dokumentiert ein Kontextfenster von 128k. Nutze es, um zusammengehörige Quellpassagen, Bildbelege, Dialog und Nutzeraufgabe gemeinsam zu bewahren. Benenne die Dokumentrollen und die zu beantwortende Frage, bevor du eine große Sammlung bereitstellst. Ein langer Kontext kann einen gezielten Vergleich unterstützen, während das endgültige Artefakt eine kurze Tabelle oder ein überarbeiteter Abschnitt bleibt.\n\nMedium 3.1 behält seine eigene Spezifikation. Der Kontext von 256k, die dichte Architektur mit 128 Milliarden Parametern und die konfigurierbaren hybriden Reasoning-Modi von Medium 3.5 sollten diesem Eintrag nicht zugeschrieben werden. Die Seite zu 3.1 gibt weder eine Parameterzahl noch eine separate maximale Antwortlänge an, die bedenkenlos aus dem späteren Modell übernommen werden könnte.\n\nStrukturierte Ausgaben und Funktionen\n\nDer Hersteller nennt strukturierte Ausgaben, Funktionsaufrufe und vorhergesagte Ausgaben als Funktionen dieser Ausgabe. Definiere für eine strukturierte Extraktionsaufgabe die Pflichtfelder, erwarteten Typen und den Umgang mit Informationen, die in der Quelle fehlen. Ein Datensatz kann die Dokumentkennung, die extrahierte Aussage, ihre Quellstelle und die verbleibende Frage enthalten. Fordere nur den Datensatz an, wenn ein Programm ihn einlesen wird, oder halte eine Prosaerklärung getrennt, wenn jemand die Interpretation prüfen muss.\n\nMistrals gemeinsame Dokumentation zu strukturierten Ausgaben unterscheidet den JSON-Modus von einem benutzerdefinierten Schema. Der JSON-Modus verlangt eine ausdrückliche Anweisung zum gewünschten JSON-Format, während der benutzerdefinierte Weg eine konkretere Struktur festlegt. Dies ist die Formatierung des Textergebnisses und keine neue Inhaltsmodalität oder externe Handlung.\n\nFür Funktionen definiert die Anwendung die verfügbare Operation und Argumente, das Modell wählt einen passenden Aufruf und bereitet Werte vor, und die Anwendung führt ihn aus. Sein Ergebnis liefert anschließend Informationen für die nächste Antwort. Ein Dokumentassistent kann eine Abfrage nutzen, um fehlende Referenzdaten zu erhalten, aber nur, wenn die umgebende Anwendung diese Abfrage bereitstellt und ihr tatsächliches Ergebnis zurückgibt. Halte den vorgeschlagenen Aufruf und die zurückgegebenen Daten einander zugeordnet.\n\nVorhergesagte Änderungen und Antwortpräfixe\n\nVorhergesagte Ausgaben sind nützlich, wenn der größte Teil des gewünschten Ergebnisses bereits bekannt ist, etwa bei einem Dokument oder einer Codedatei mit begrenztem Änderungsbedarf. Stelle den vorhandenen Inhalt bereit und beschreibe die Änderung präzise, einschließlich dessen, was unverändert bleiben muss. Eine Anfrage kann die Terminologie eines Abschnitts aktualisieren oder ein Implementierungsdetail ersetzen und dabei das übrige Dokument bewahren. Die Vorhersage enthält erwarteten Ausgabeinhalt und keine bereits auf eine Datei angewendete Änderung.\n\nDie Modellseite nennt außerdem die Fortsetzung von Antwortpräfixen. In der Chatdokumentation des Herstellers liefert ein Präfix einen bekannten Anfang der Assistentenantwort, nach dem die Generierung fortgesetzt wird. Ein bekannter Anfang und ein vorhergesagter Hauptinhalt lösen unterschiedliche Vorbereitungsprobleme. Stapelverarbeitung und Agenten-/Dialogschnittstellen sind ebenfalls Ablauffunktionen und keine separaten Bild-, Audio- oder Reasoning-Ausgaben von Medium 3.1.\n\nFragen zu Dokumenten und Bildern\n\nDer genannte Dokument-QnA-Ablauf verbindet mittels OCR vorbereiteten Text, Struktur und Formatierung mit der Sprachmodellanalyse. Frage nach der konkreten Bedingung, Passage oder Beziehung, die die Aufgabe benötigt. Ein Vergleich kann die Quelldokumente benennen und gemeinsame Aussagen, Konflikte und ungeklärte Details anfordern, mit der Quellstelle neben jedem Befund.\n\nDie Anleitung des Herstellers zu visuellen Fähigkeiten umfasst Medium 3.1 ausdrücklich. Eine direkte visuelle Frage kann ein lesbares Diagramm, Dokumentbild oder einen Screenshot bereitstellen und fragen, welche sichtbaren Belege eine Schlussfolgerung stützen. Bewahre Achsen, Einheiten, Beschriftungen und den Kontext um ein zugeschnittenes Feld. Benenne bei mehreren Bildern deren Reihenfolge und Rolle, statt das Modell erschließen zu lassen, welches Original, Überarbeitung oder Referenz ist.\n\nKombiniere beispielsweise eine schriftliche Prozessanforderung mit einem Screenshot und fordere eine Tabelle mit sichtbaren Übereinstimmungen, Abweichungen und Fragen an, die mehr Informationen benötigen. Eine andere Aufgabe kann zwei Dokumentversionen bereitstellen und eine überarbeitete Passage verlangen, die ihre gemeinsamen Bedingungen bewahrt und dabei einen benannten Widerspruch auflöst. Dies sind vorgeschlagene Anwendungen der dokumentierten visuellen, Dokument- und Bearbeitungsfähigkeiten mit vorab definiertem erforderlichem Ergebnis.\n\nDas endgültige Artefakt vorbereiten\n\nGib dem Assistenten eine klare Rolle, das zu verwendende Quellenmaterial und die Antwortform vor. Halte dauerhafte Antwortregeln vom untersuchten Dokument getrennt und nenne Zielsprache und Terminologie. Eine nützliche Antwort kann einen extrahierten Fakt, seine Quelle und eine Interpretation trennen und ist damit leichter zu prüfen als eine einzige zusammengeführte Zusammenfassung.\n\nDas dokumentierte Ergebnis bleibt Text. Externe Werkzeuge, Dateiänderungen und weitere Dokumentverarbeitung gehören zur Anwendung, die mit dem Dialog verbunden ist. Bewahre die benannte Ausgabe Medium 3.1 und ihren Kontext von 128k und fordere die Erklärung, den strukturierten Datensatz oder die gezielte Überarbeitung an, die der nächste Schritt tatsächlich benötigt.",
    "alias_of": null,
    "aliases": [],
    "author": "Mistral",
    "capabilities": {
      "context_length": 131072,
      "manufacturer_input": [
        "text",
        "image",
        "file"
      ],
      "manufacturer_output": [
        "text"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.000002",
            "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/mistral-medium-3.1:batch",
    "input": [
      "text"
    ],
    "kind": "text",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": 0.04,
        "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/mistral-medium-3.1: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/mistral-medium-3.1: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/mistral-medium-3.1:batch",
                  "mistralai/mistral-medium-3.1"
                ],
                "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/mistral-medium-3.1: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/mistral-medium-3.1:batch",
                              "mistralai/mistral-medium-3.1"
                            ],
                            "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/mistral-medium-3.1: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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000002",
                "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.00004000",
                "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.00000004",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000002",
                "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.00004000",
                "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.00000004",
                "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/mistral-medium-3.1: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/mistral-medium-3.1:batch', 'mistralai/mistral-medium-3.1']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"mistralai/mistral-medium-3.1: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.4,
        "input": [
          "text"
        ],
        "label": "Stapelverarbeitung",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 2,
        "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000002",
                "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.00004000",
                "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.00000004",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.000002",
                "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.00004000",
                "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.00000004",
                "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/mistral-medium-3.1:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.04,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.4,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 2,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.000002",
            "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.00004000",
            "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.00000004",
            "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/mistral-medium-3.1:batch",
        "request_model_id": "mistralai/mistral-medium-3.1:batch",
        "route_label": "Ultra"
      }
    ],
    "name": "Mistral: Mistral Medium 3.1 (batch)",
    "price": {
      "in": 0.4,
      "in_label": null,
      "out": 2,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.4,
      "sort_out": 2,
      "varies": true
    },
    "short": "Mistral Medium 3.1 ist ein Text- und Bildmodell für Dialogantworten, Fragen zu Dokumenten und strukturierte Extraktion. Sein vom Hersteller angegebener Kontext von 128k und die aufgeführten Funktionen für Funktionsaufrufe, vorhergesagte Ausgaben und Präfixe unterstützen quellengestützte Erklärungen und gezielte Bearbeitungsablä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": "Mistral Medium 3.1 ist ein Text- und Bildmodell für Dialogantworten, Fragen zu Dokumenten und strukturierte Extraktion. Sein vom Hersteller angegebener Kontext von 128k und die aufgeführten Funktionen für Funktionsaufrufe, vorhergesagte Ausgaben und Präfixe unterstützen quellengestützte Erklärungen und gezielte Bearbeitungsabläufe.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "702042716b86da3ac4884deea0a5ce70d1c38d5751b8df3dadba5fd470fd3e81",
    "renderer_sha256": "8bd3076b303b7b3aa4d961032854071403a471ec26a4f50c64e3a32556ea2925"
  },
  "sourceRevision": "0851f40c7e6271ad23d70813b00bcf3be97f49d39dd22a15df66160029494708"
}
