{
  "aboutHtml": "<p>FLUX.2 [flex] ist die auf Typografie, Textdarstellung und Bewahrung kleiner Details spezialisierte Ausgabe von Black Forest Labs für Bildgenerierung und -bearbeitung. Sie erzeugt ein Bild anhand geschriebener Szenenanweisungen und Bildreferenzen. Ihre kennzeichnende Steuerung ist einstellbares Sampling: Das dokumentierte Profil stellt sowohl Inferenzschritte als auch Guidance bereit, sodass sich ein Bildbriefing durch Einstellungen ebenso wie durch Worte verfeinern lässt.</p><h4>Schrift und feine Details</h4><p>Eine Typografieaufgabe sollte mit dem tatsächlichen Text beginnen. Setzen Sie jede Zeile in Anführungszeichen, bestimmen Sie ihren Ort und unterscheiden Sie Überschrift, Begleittext und Beschriftung. Beschreiben Sie Schriftstil, Größe und Farbe in Bezug zur Szene. Ein eigenständiges Posterbriefing könnte ein kobaltblaues Fahrrad in einem hellen Studio zeigen, mit einem großen Titel über dem Rahmen und einer kleineren Spezifikationszeile darunter. Das Bild muss Produkt und Lesereihenfolge gemeinsam verständlich machen.</p><p>Benennen Sie für eine detaillierte Produktvisualisierung die Teile, die über den Nutzen des Ergebnisses entscheiden: Zifferblatt, Bedienbeschriftung, Naht, Materialkante oder Verpackungskennzeichnung. Stellen Sie eine lesbare Referenz bereit und erläutern Sie, welches Merkmal sie festlegt. Eine allgemein ähnlich aussehende Szene kann dennoch ein entscheidendes Zeichen oder Bauteil verändern. Vergleichen Sie daher das erzeugte Detail in seiner vorgesehenen Darstellungsgröße. Die Spezialisierung des Modells ist ein Grund für genaue Anforderungen, keine Garantie dafür, dass Korrekturlesen oder Bildprüfung entfallen.</p><h4>Schritte und Guidance erfüllen unterschiedliche Zwecke</h4><p>Das konkrete Herstellerprofil akzeptiert ein bis fünfzig Inferenzschritte, standardmäßig fünfzig. Seine Beschreibung verbindet mehr Schritte mit höherer Detailtreue und größerem Realismus. Guidance reicht von 1,5 bis 10, mit 5 als Standard. Höhere Guidance verstärkt die Treue zum Prompt, kann aber den Realismus verringern. Ein Bild mit exakten Designanweisungen und eines mit dem Ziel einer natürlichen fotografischen Erscheinung können deshalb innerhalb dieses Profils unterschiedliche Einstellungen verlangen.</p><p>Halten Sie Wortlaut, Referenzen und Ausgabeformat konstant, wenn Sie eine Einstellungsänderung vergleichen. Betrachten Sie das Merkmal, das zur Änderung führte: Buchstabenformen, Objektplatzierung oder Materialtextur. Ändern Sie eine Einstellung aus einem konkreten visuellen Grund, statt eine hohe Zahl automatisch für besser zu halten. Dies sind Sampling-Steuerungen des Anbieters; das destillierte Vier-Schritte-Profil [klein] und die Standardsteuerungen von [pro] oder [max] sind andere Modelloptionen.</p><p>Prompt-Upsampling ist in der [flex]-Spezifikation standardmäßig aktiv und lässt sich über die eigene Steuerung prompt_upsampling deaktivieren. So bleibt ein detailliertes Briefing bei Bedarf der bereitgestellte Text. Der gemeinsame Herstellerleitfaden empfiehlt, Hauptmotiv und wichtige Handlung vor zweitrangiger Dekoration zu nennen, und beschreibt JSON-strukturierte Prompts neben natürlichsprachlichen Briefings. Nutzen Sie die Struktur, in der sich die erforderlichen Beziehungen am leichtesten festlegen lassen.</p><h4>Referenzgestützte Überarbeitungen</h4><p>Das konkrete Anfrageprofil enthält acht Positionen für Referenzbilder. Der interaktive Herstellerablauf erlaubt separat bis zu zehn Bilder; diese Zahlen beschreiben unterschiedliche Schnittstellen. Legen Sie fest, ob ein Bild die zu bearbeitende Szene, ein Produkt, eine Figur, Kleidung oder einen Stil liefert. Benennen Sie für eine Überarbeitung Objekt und Änderung sowie die umgebende Komposition, Materialien oder das Licht, die erhalten bleiben sollen.</p><p>Eine eigenständige Verpackungsaufgabe könnte den Karton aus dem ersten Bild und das Finish aus einem zweiten verwenden, das vordere Etikett durch den freigegebenen Wortlaut ersetzen und die Kartonproportionen bewahren. Eine Gruppenkomposition kann jedem Motiv eine eigene Referenz zuweisen und diese Zuordnungen konstant halten. Die Familienbeispiele umfassen Objekt- und Hintergrundänderungen, Compositing, Textbearbeitung und Stilumwandlungen. Fordern Sie eine zusammenhängende Überarbeitung mit klarem Ziel an und vergleichen Sie danach sowohl den bearbeiteten Bereich als auch die Teile, die stabil bleiben sollen.</p><h4>Größe, Farbe und das zurückgegebene Bild</h4><p>Der FLUX.2-Leitfaden dokumentiert mindestens 64×64 Pixel, Abmessungen in Vielfachen von 16 und Ausgaben bis zu 4 Megapixeln, wobei bis zu 2 Megapixel für gewöhnliche Nutzung empfohlen werden. Die konkrete [flex]-Spezifikation nennt JPEG, PNG und WebP, standardmäßig JPEG. Sie bietet außerdem einen optionalen Zufalls-Seed. Bewahren Sie tatsächliches Modell, Seed und Sampling-Einstellungen mit den Quellreferenzen auf, wenn Sie Versionen vergleichen; ein Familienname allein benennt nicht die vollständige Generierungskonfiguration.</p><p>Ordnen Sie für farbkritische Arbeit jeden Hex-Code einem benannten Objekt oder Textelement zu. Legen Sie für die Komposition das gewünschte Seitenverhältnis über die Bildabmessungen fest und lassen Sie ausreichend Platz für lesbare Schrift. Der gemeinsame Leitfaden hat keinen Mechanismus für negative Prompts. Beschreiben Sie deshalb das gewünschte Aussehen positiv: scharfer Fokus, sauberer Hintergrund oder eine deutlich freie Fläche für Text. Seine mehrsprachigen Beispiele unterstützen ein kulturell spezifisches Briefing in der passenden Sprache, begründen aber keine Garantie für eine feste Anzahl unterstützter Sprachen.</p><p>Der FLUX.2-Ablauf des Anbieters liefert nach Verarbeitung ein Bild und verwendet temporäre signierte Links mit einem Abruffenster von zehn Minuten. Bewahren Sie das eigentliche Bild und das Briefing gemeinsam auf. Prüfen Sie Typografie, feine Details, Referenzidentität und visuelle Gestaltung, bevor Sie das Asset in ein Layout einsetzen. Das endgültige Ergebnis kann ein ausgewähltes Poster, Produktbild oder eine bearbeitete Komposition sein, deren genaue Einstellungen für die nächste Überarbeitung erhalten bleiben.</p>",
  "aboutText": "FLUX.2 [flex] ist die auf Typografie, Textdarstellung und Bewahrung kleiner Details spezialisierte Ausgabe von Black Forest Labs für Bildgenerierung und -bearbeitung. Sie erzeugt ein Bild anhand geschriebener Szenenanweisungen und Bildreferenzen. Ihre kennzeichnende Steuerung ist einstellbares Sampling: Das dokumentierte Profil stellt sowohl Inferenzschritte als auch Guidance bereit, sodass sich ein Bildbriefing durch Einstellungen ebenso wie durch Worte verfeinern lässt.\n\n### Schrift und feine Details\n\nEine Typografieaufgabe sollte mit dem tatsächlichen Text beginnen. Setzen Sie jede Zeile in Anführungszeichen, bestimmen Sie ihren Ort und unterscheiden Sie Überschrift, Begleittext und Beschriftung. Beschreiben Sie Schriftstil, Größe und Farbe in Bezug zur Szene. Ein eigenständiges Posterbriefing könnte ein kobaltblaues Fahrrad in einem hellen Studio zeigen, mit einem großen Titel über dem Rahmen und einer kleineren Spezifikationszeile darunter. Das Bild muss Produkt und Lesereihenfolge gemeinsam verständlich machen.\n\nBenennen Sie für eine detaillierte Produktvisualisierung die Teile, die über den Nutzen des Ergebnisses entscheiden: Zifferblatt, Bedienbeschriftung, Naht, Materialkante oder Verpackungskennzeichnung. Stellen Sie eine lesbare Referenz bereit und erläutern Sie, welches Merkmal sie festlegt. Eine allgemein ähnlich aussehende Szene kann dennoch ein entscheidendes Zeichen oder Bauteil verändern. Vergleichen Sie daher das erzeugte Detail in seiner vorgesehenen Darstellungsgröße. Die Spezialisierung des Modells ist ein Grund für genaue Anforderungen, keine Garantie dafür, dass Korrekturlesen oder Bildprüfung entfallen.\n\n### Schritte und Guidance erfüllen unterschiedliche Zwecke\n\nDas konkrete Herstellerprofil akzeptiert ein bis fünfzig Inferenzschritte, standardmäßig fünfzig. Seine Beschreibung verbindet mehr Schritte mit höherer Detailtreue und größerem Realismus. Guidance reicht von 1,5 bis 10, mit 5 als Standard. Höhere Guidance verstärkt die Treue zum Prompt, kann aber den Realismus verringern. Ein Bild mit exakten Designanweisungen und eines mit dem Ziel einer natürlichen fotografischen Erscheinung können deshalb innerhalb dieses Profils unterschiedliche Einstellungen verlangen.\n\nHalten Sie Wortlaut, Referenzen und Ausgabeformat konstant, wenn Sie eine Einstellungsänderung vergleichen. Betrachten Sie das Merkmal, das zur Änderung führte: Buchstabenformen, Objektplatzierung oder Materialtextur. Ändern Sie eine Einstellung aus einem konkreten visuellen Grund, statt eine hohe Zahl automatisch für besser zu halten. Dies sind Sampling-Steuerungen des Anbieters; das destillierte Vier-Schritte-Profil [klein] und die Standardsteuerungen von [pro] oder [max] sind andere Modelloptionen.\n\nPrompt-Upsampling ist in der [flex]-Spezifikation standardmäßig aktiv und lässt sich über die eigene Steuerung prompt_upsampling deaktivieren. So bleibt ein detailliertes Briefing bei Bedarf der bereitgestellte Text. Der gemeinsame Herstellerleitfaden empfiehlt, Hauptmotiv und wichtige Handlung vor zweitrangiger Dekoration zu nennen, und beschreibt JSON-strukturierte Prompts neben natürlichsprachlichen Briefings. Nutzen Sie die Struktur, in der sich die erforderlichen Beziehungen am leichtesten festlegen lassen.\n\n### Referenzgestützte Überarbeitungen\n\nDas konkrete Anfrageprofil enthält acht Positionen für Referenzbilder. Der interaktive Herstellerablauf erlaubt separat bis zu zehn Bilder; diese Zahlen beschreiben unterschiedliche Schnittstellen. Legen Sie fest, ob ein Bild die zu bearbeitende Szene, ein Produkt, eine Figur, Kleidung oder einen Stil liefert. Benennen Sie für eine Überarbeitung Objekt und Änderung sowie die umgebende Komposition, Materialien oder das Licht, die erhalten bleiben sollen.\n\nEine eigenständige Verpackungsaufgabe könnte den Karton aus dem ersten Bild und das Finish aus einem zweiten verwenden, das vordere Etikett durch den freigegebenen Wortlaut ersetzen und die Kartonproportionen bewahren. Eine Gruppenkomposition kann jedem Motiv eine eigene Referenz zuweisen und diese Zuordnungen konstant halten. Die Familienbeispiele umfassen Objekt- und Hintergrundänderungen, Compositing, Textbearbeitung und Stilumwandlungen. Fordern Sie eine zusammenhängende Überarbeitung mit klarem Ziel an und vergleichen Sie danach sowohl den bearbeiteten Bereich als auch die Teile, die stabil bleiben sollen.\n\n### Größe, Farbe und das zurückgegebene Bild\n\nDer FLUX.2-Leitfaden dokumentiert mindestens 64×64 Pixel, Abmessungen in Vielfachen von 16 und Ausgaben bis zu 4 Megapixeln, wobei bis zu 2 Megapixel für gewöhnliche Nutzung empfohlen werden. Die konkrete [flex]-Spezifikation nennt JPEG, PNG und WebP, standardmäßig JPEG. Sie bietet außerdem einen optionalen Zufalls-Seed. Bewahren Sie tatsächliches Modell, Seed und Sampling-Einstellungen mit den Quellreferenzen auf, wenn Sie Versionen vergleichen; ein Familienname allein benennt nicht die vollständige Generierungskonfiguration.\n\nOrdnen Sie für farbkritische Arbeit jeden Hex-Code einem benannten Objekt oder Textelement zu. Legen Sie für die Komposition das gewünschte Seitenverhältnis über die Bildabmessungen fest und lassen Sie ausreichend Platz für lesbare Schrift. Der gemeinsame Leitfaden hat keinen Mechanismus für negative Prompts. Beschreiben Sie deshalb das gewünschte Aussehen positiv: scharfer Fokus, sauberer Hintergrund oder eine deutlich freie Fläche für Text. Seine mehrsprachigen Beispiele unterstützen ein kulturell spezifisches Briefing in der passenden Sprache, begründen aber keine Garantie für eine feste Anzahl unterstützter Sprachen.\n\nDer FLUX.2-Ablauf des Anbieters liefert nach Verarbeitung ein Bild und verwendet temporäre signierte Links mit einem Abruffenster von zehn Minuten. Bewahren Sie das eigentliche Bild und das Briefing gemeinsam auf. Prüfen Sie Typografie, feine Details, Referenzidentität und visuelle Gestaltung, bevor Sie das Asset in ein Layout einsetzen. Das endgültige Ergebnis kann ein ausgewähltes Poster, Produktbild oder eine bearbeitete Komposition sein, deren genaue Einstellungen für die nächste Überarbeitung erhalten bleiben.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "94115331af0836bcdba70bf25fc1004ec901767ddccd3e7f31d5c56cc08b98da",
    "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\">Black Forest Labs: FLUX.2 Flex</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Schließen\">×</button></div><div class=\"idline\"><span>Black Forest Labs /</span><code>black-forest-labs/flux.2-flex</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|images|/v1/images/generations|black-forest-labs%2Fflux.2-flex\">Bilder</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\">FLUX.2 [flex] spezialisiert sich auf Typografie im Bild und kleine Bilddetails, mit einstellbaren Sampling-Schritten und Guidance. Entwickeln Sie mit Text und Bildreferenzen Poster, Produktlayouts oder präzise Überarbeitungen und stimmen Sie dabei Anweisungstreue und Realismus aufeinander ab.</p><dl class=\"card-io\" data-card-io><div><dt>Zulässige Eingaben</dt><dd>Text · Bilder</dd></div><div><dt>Ergebnisse</dt><dd>Bilder</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>FLUX.2 [flex] ist die auf Typografie, Textdarstellung und Bewahrung kleiner Details spezialisierte Ausgabe von Black Forest Labs für Bildgenerierung und -bearbeitung. Sie erzeugt ein Bild anhand geschriebener Szenenanweisungen und Bildreferenzen. Ihre kennzeichnende Steuerung ist einstellbares Sampling: Das dokumentierte Profil stellt sowohl Inferenzschritte als auch Guidance bereit, sodass sich ein Bildbriefing durch Einstellungen ebenso wie durch Worte verfeinern lässt.</p><h4>Schrift und feine Details</h4><p>Eine Typografieaufgabe sollte mit dem tatsächlichen Text beginnen. Setzen Sie jede Zeile in Anführungszeichen, bestimmen Sie ihren Ort und unterscheiden Sie Überschrift, Begleittext und Beschriftung. Beschreiben Sie Schriftstil, Größe und Farbe in Bezug zur Szene. Ein eigenständiges Posterbriefing könnte ein kobaltblaues Fahrrad in einem hellen Studio zeigen, mit einem großen Titel über dem Rahmen und einer kleineren Spezifikationszeile darunter. Das Bild muss Produkt und Lesereihenfolge gemeinsam verständlich machen.</p><p>Benennen Sie für eine detaillierte Produktvisualisierung die Teile, die über den Nutzen des Ergebnisses entscheiden: Zifferblatt, Bedienbeschriftung, Naht, Materialkante oder Verpackungskennzeichnung. Stellen Sie eine lesbare Referenz bereit und erläutern Sie, welches Merkmal sie festlegt. Eine allgemein ähnlich aussehende Szene kann dennoch ein entscheidendes Zeichen oder Bauteil verändern. Vergleichen Sie daher das erzeugte Detail in seiner vorgesehenen Darstellungsgröße. Die Spezialisierung des Modells ist ein Grund für genaue Anforderungen, keine Garantie dafür, dass Korrekturlesen oder Bildprüfung entfallen.</p><h4>Schritte und Guidance erfüllen unterschiedliche Zwecke</h4><p>Das konkrete Herstellerprofil akzeptiert ein bis fünfzig Inferenzschritte, standardmäßig fünfzig. Seine Beschreibung verbindet mehr Schritte mit höherer Detailtreue und größerem Realismus. Guidance reicht von 1,5 bis 10, mit 5 als Standard. Höhere Guidance verstärkt die Treue zum Prompt, kann aber den Realismus verringern. Ein Bild mit exakten Designanweisungen und eines mit dem Ziel einer natürlichen fotografischen Erscheinung können deshalb innerhalb dieses Profils unterschiedliche Einstellungen verlangen.</p><p>Halten Sie Wortlaut, Referenzen und Ausgabeformat konstant, wenn Sie eine Einstellungsänderung vergleichen. Betrachten Sie das Merkmal, das zur Änderung führte: Buchstabenformen, Objektplatzierung oder Materialtextur. Ändern Sie eine Einstellung aus einem konkreten visuellen Grund, statt eine hohe Zahl automatisch für besser zu halten. Dies sind Sampling-Steuerungen des Anbieters; das destillierte Vier-Schritte-Profil [klein] und die Standardsteuerungen von [pro] oder [max] sind andere Modelloptionen.</p><p>Prompt-Upsampling ist in der [flex]-Spezifikation standardmäßig aktiv und lässt sich über die eigene Steuerung prompt_upsampling deaktivieren. So bleibt ein detailliertes Briefing bei Bedarf der bereitgestellte Text. Der gemeinsame Herstellerleitfaden empfiehlt, Hauptmotiv und wichtige Handlung vor zweitrangiger Dekoration zu nennen, und beschreibt JSON-strukturierte Prompts neben natürlichsprachlichen Briefings. Nutzen Sie die Struktur, in der sich die erforderlichen Beziehungen am leichtesten festlegen lassen.</p><h4>Referenzgestützte Überarbeitungen</h4><p>Das konkrete Anfrageprofil enthält acht Positionen für Referenzbilder. Der interaktive Herstellerablauf erlaubt separat bis zu zehn Bilder; diese Zahlen beschreiben unterschiedliche Schnittstellen. Legen Sie fest, ob ein Bild die zu bearbeitende Szene, ein Produkt, eine Figur, Kleidung oder einen Stil liefert. Benennen Sie für eine Überarbeitung Objekt und Änderung sowie die umgebende Komposition, Materialien oder das Licht, die erhalten bleiben sollen.</p><p>Eine eigenständige Verpackungsaufgabe könnte den Karton aus dem ersten Bild und das Finish aus einem zweiten verwenden, das vordere Etikett durch den freigegebenen Wortlaut ersetzen und die Kartonproportionen bewahren. Eine Gruppenkomposition kann jedem Motiv eine eigene Referenz zuweisen und diese Zuordnungen konstant halten. Die Familienbeispiele umfassen Objekt- und Hintergrundänderungen, Compositing, Textbearbeitung und Stilumwandlungen. Fordern Sie eine zusammenhängende Überarbeitung mit klarem Ziel an und vergleichen Sie danach sowohl den bearbeiteten Bereich als auch die Teile, die stabil bleiben sollen.</p><h4>Größe, Farbe und das zurückgegebene Bild</h4><p>Der FLUX.2-Leitfaden dokumentiert mindestens 64×64 Pixel, Abmessungen in Vielfachen von 16 und Ausgaben bis zu 4 Megapixeln, wobei bis zu 2 Megapixel für gewöhnliche Nutzung empfohlen werden. Die konkrete [flex]-Spezifikation nennt JPEG, PNG und WebP, standardmäßig JPEG. Sie bietet außerdem einen optionalen Zufalls-Seed. Bewahren Sie tatsächliches Modell, Seed und Sampling-Einstellungen mit den Quellreferenzen auf, wenn Sie Versionen vergleichen; ein Familienname allein benennt nicht die vollständige Generierungskonfiguration.</p><p>Ordnen Sie für farbkritische Arbeit jeden Hex-Code einem benannten Objekt oder Textelement zu. Legen Sie für die Komposition das gewünschte Seitenverhältnis über die Bildabmessungen fest und lassen Sie ausreichend Platz für lesbare Schrift. Der gemeinsame Leitfaden hat keinen Mechanismus für negative Prompts. Beschreiben Sie deshalb das gewünschte Aussehen positiv: scharfer Fokus, sauberer Hintergrund oder eine deutlich freie Fläche für Text. Seine mehrsprachigen Beispiele unterstützen ein kulturell spezifisches Briefing in der passenden Sprache, begründen aber keine Garantie für eine feste Anzahl unterstützter Sprachen.</p><p>Der FLUX.2-Ablauf des Anbieters liefert nach Verarbeitung ein Bild und verwendet temporäre signierte Links mit einem Abruffenster von zehn Minuten. Bewahren Sie das eigentliche Bild und das Briefing gemeinsam auf. Prüfen Sie Typografie, feine Details, Referenzidentität und visuelle Gestaltung, bevor Sie das Asset in ein Layout einsetzen. Das endgültige Ergebnis kann ein ausgewähltes Poster, Produktbild oder eine bearbeitete Komposition sein, deren genaue Einstellungen für die nächste Überarbeitung erhalten bleiben.</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 · Bilder</b> <code>POST /v1/images/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Eingabetypen</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Ausgabetypen</dt><dd><code>image</code></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><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>black-forest-labs/flux.2-flex</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">prompt</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>Mindestlänge: 1</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">aspect_ratio</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>1:1, 4:3, 3:4, 3:2, 2:3, 16:9, 9:16, 21:9, auto</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">output_format</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>png, jpeg</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">n</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>integer</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>Minimum: 1</div><div>Maximum: 1</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>array</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>Mindestanzahl Elemente: 0</div><div>Maximale Anzahl Elemente: 8</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><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</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></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>model, prompt</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, image</td></tr></tbody></table></div><p>Lebenszyklus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · die tatsächlich zurückgegebene task_id oder ein Eintrag in der Medienbibliothek</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarife</h3><div class=\"card-result-process\" data-billing-basis><h5>So wird die endgültige Gebühr berechnet</h5><p class=\"note-s\">Die angezeigten Tarife dienen zur Kostenschätzung vor der Generierung. Der endgültige Betrag wird aus den für die ursprüngliche Generierung erfassten Kosten berechnet. Die gemessene Ausgabedauer und prognostizierte Mengen sind nicht die endgültige abrechenbare Menge.</p></div><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></dl></div><div data-declared-tariff-pricing><h4>Geschätzte Tarife zum Vergleich</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>Prognostizierte Menge</th><th>Abrechnungseinheit</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=\"Prognostizierte Menge\"><span class=\"card-cell-label\">Prognostizierte Menge</span>—</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>—</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Eingabe · Eingabetoken · Schätzung nur zum Vergleich</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Ausgabe · Ausgabetoken · Schätzung nur zum Vergleich</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Eingabe · Cache-Lesen · Schätzung nur zum Vergleich</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Eingabe · Cache-Schreiben · Schätzung nur zum Vergleich</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>Eingabe · Cache-Schreiben, 1 Stunde · Schätzung nur zum Vergleich</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>Megapixel des Eingabebildes</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>—</td><td data-cell-label=\"Prognostizierte Menge\"><span class=\"card-cell-label\">Prognostizierte Menge</span>—</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>pro Megapixel des Eingabebildes</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Eingabe · Megapixel des Eingabebildes · Schätzung nur zum Vergleich</span> <b>$0.12</b> <span class=\"price-unit\">pro Megapixel des Eingabebildes</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Megapixel des Ausgabebildes</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>—</td><td data-cell-label=\"Prognostizierte Menge\"><span class=\"card-cell-label\">Prognostizierte Menge</span>—</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>pro Megapixel des Ausgabebildes</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Megapixel des Ausgabebildes · Schätzung nur zum Vergleich</span> <b>$0.12</b> <span class=\"price-unit\">pro Megapixel des Ausgabebildes</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Geschätzte Generierungskosten</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>—</td><td data-cell-label=\"Prognostizierte Menge\"><span class=\"card-cell-label\">Prognostizierte Menge</span>Schätzung für eine Generierung</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>—</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Geschätzte Generierungskosten · Schätzung nur zum Vergleich</span> <b>$0.12</b> <span class=\"price-unit\">Schätzung vor der Generierung</span></div><p class=\"note-s\">Diese Schätzung ist weder eine zusätzliche Gebühr noch ein fester Tarif für die abgeschlossene Generierung.</p></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 · Bilder</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-1099-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1099-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</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-1099-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1099-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np={&#39;model&#39;: &#39;black-forest-labs/flux.2-flex&#39;, &#39;prompt&#39;: &#39;a red panda astronaut floating in space, studio lighting&#39;}\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(&quot;No completed images; retain the full response&quot;)\n    for index, item in enumerate(items):\n        encoded=item.get(&quot;b64_json&quot;)\n        uri=item.get(&quot;url&quot;, &quot;&quot;)\n        if not encoded and uri.startswith(&quot;data:image/&quot;):\n            header, separator, encoded=uri.partition(&quot;,&quot;)\n            if not separator or &quot;;base64&quot; not in header: raise SystemExit(&quot;Unsupported image data URI&quot;)\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(&quot;https://api.ailoot.ai&quot;,uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=&quot;https&quot; or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(&quot;Invalid returned image URL&quot;)\n            owned=parsed.netloc==&quot;api.ailoot.ai&quot; and parsed.path.startswith(&quot;/v1/media/assets/&quot;) and parsed.path.endswith(&quot;/content&quot;)\n            args=[&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,uri]\n            if owned: args += [&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;]]\n            temporary=Path(f&quot;image-{index}.bin&quot;)\n            subprocess.run(args+[&quot;-o&quot;,str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(&quot;Image has neither bytes nor URL&quot;)\n        if not raw: raise SystemExit(&quot;Empty image result&quot;)\n        ext=&quot;png&quot; if raw.startswith(b&quot;\\x89PNG&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4]==b&quot;RIFF&quot; and raw[8:12]==b&quot;WEBP&quot; else &quot;svg&quot; if raw.lstrip().startswith((b&quot;&lt;svg&quot;,b&quot;&lt;?xml&quot;)) else &quot;bin&quot;\n        Path(f&quot;image-{index}.{ext}&quot;).write_bytes(raw)\n    print(&quot;Every returned image saved; complete response metadata retained&quot;)\nsave_images(json.loads(Path(&quot;result.json&quot;).read_text())[&quot;data&quot;])\nPY_RESULT\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 · Bilder</h4><p class=\"note-s\">Laden Sie jedes zurückgegebene Bild herunter oder speichern Sie seinen Base64-Inhalt</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><details class=\"card-about\"><summary>Abrufe anderer Inhalte</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1100-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1100-panel-0\" aria-selected=\"true\" tabindex=\"0\">Vorhandene eigene Dateien abrufen</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-1100-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1100-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Alle fertiggestellten Ergebnisse aufbewahren</h5><p class=\"note-s\">Speichern Sie jedes fertiggestellte Bild; rufen Sie jede zurückgegebene URL ab oder dekodieren Sie seinen Base64-Inhalt.</p><p class=\"note-s\">Die vollständige Antwort und ihre Header, jede tatsächliche Ausgabe, die ursprünglich zurückgegebenen Kennungen und alle Nutzungsfelder aufbewahren. Den ursprünglichen Vorgang wiederaufnehmen, ohne die Erstellung erneut anzufordern.</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 zurückgegebene X-Client-Request-ID zum Abgleich aufbewahren. Nur tatsächlich zurückgegebene task_id-/asset_id-Werte oder die eigene Medienbibliothek abfragen; niemals eine Aufgaben-URL aus der Vorgangs-ID bilden und die Erstellung niemals erneut anfordern.</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\">created</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span></td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">data[].url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span></td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">data[].b64_json</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span></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></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=black-forest-labs%2Fflux.2-flex&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux.2-flex&amp;fmt=images\"><code>black-forest-labs/flux.2-flex</code></a></span></p><h4>Aliasnamen für Methodenpfade</h4><p class=\"note-s\"><code>/v1/images</code></p><h4>Zugehörige Aufrufer-IDs</h4><p class=\"note-s\"><a href=\"#m=black-forest-labs%2Fflux.2-flex&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux.2-flex&amp;fmt=images\"><code>black-forest-labs/flux.2-flex</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "black-forest-labs/flux.2-flex",
        "fmt": "images",
        "http": "POST",
        "path": "/v1/images/generations",
        "request_model_id": "black-forest-labs/flux.2-flex",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|images|/v1/images/generations|black-forest-labs%2Fflux.2-flex",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Die angezeigten Tarife dienen zur Kostenschätzung vor der Generierung. Der endgültige Betrag wird aus den für die ursprüngliche Generierung erfassten Kosten berechnet. Die gemessene Ausgabedauer und prognostizierte Mengen sind nicht die endgültige abrechenbare Menge.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Die zurückgegebene X-Client-Request-ID zum Abgleich aufbewahren. Nur tatsächlich zurückgegebene task_id-/asset_id-Werte oder die eigene Medienbibliothek abfragen; niemals eine Aufgaben-URL aus der Vorgangs-ID bilden und die Erstellung niemals erneut anfordern."
            },
            "outputs": {
              "all_results": "Die vollständige Antwort und ihre Header, jede tatsächliche Ausgabe, die ursprünglich zurückgegebenen Kennungen und alle Nutzungsfelder aufbewahren. Den ursprünglichen Vorgang wiederaufnehmen, ohne die Erstellung erneut anzufordern.",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux.2-flex"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "3:2",
                  "2:3",
                  "16:9",
                  "9:16",
                  "21:9",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "png",
                  "jpeg"
                ],
                "enum_known": true,
                "name": "output_format",
                "required": false,
                "type": "string"
              },
              {
                "maximum": 1,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 8,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "4:3",
                    "3:4",
                    "3:2",
                    "2:3",
                    "16:9",
                    "9:16",
                    "21:9",
                    "auto"
                  ],
                  "type": "string"
                },
                "input_references": {
                  "items": {
                    "properties": {
                      "image_url": {
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 8,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux.2-flex"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "output_format": {
                  "enum": [
                    "png",
                    "jpeg"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "black-forest-labs/flux.2-flex",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "die tatsächlich zurückgegebene task_id oder ein Eintrag in der Medienbibliothek",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "image",
            "fields": [
              {
                "description": null,
                "name": "created",
                "type": null
              },
              {
                "description": null,
                "name": "data[].url",
                "type": null
              },
              {
                "description": null,
                "name": "data[].b64_json",
                "type": null
              },
              {
                "description": null,
                "name": "usage",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image megapixel"
            },
            "label": "input image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input_megapixel",
                "label": "input image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per input image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input_megapixel"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per output image megapixel"
            },
            "label": "output image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output_megapixel",
                "label": "output image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per output image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output_megapixel"
              }
            ]
          },
          {
            "basis": "Diese Schätzung ist weder eine zusätzliche Gebühr noch ein fester Tarif für die abgeschlossene Generierung.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Geschätzte Generierungskosten",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np={'model': 'black-forest-labs/flux.2-flex', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(\"No completed images; retain the full response\")\n    for index, item in enumerate(items):\n        encoded=item.get(\"b64_json\")\n        uri=item.get(\"url\", \"\")\n        if not encoded and uri.startswith(\"data:image/\"):\n            header, separator, encoded=uri.partition(\",\")\n            if not separator or \";base64\" not in header: raise SystemExit(\"Unsupported image data URI\")\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(\"https://api.ailoot.ai\",uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=\"https\" or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(\"Invalid returned image URL\")\n            owned=parsed.netloc==\"api.ailoot.ai\" and parsed.path.startswith(\"/v1/media/assets/\") and parsed.path.endswith(\"/content\")\n            args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",uri]\n            if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n            temporary=Path(f\"image-{index}.bin\")\n            subprocess.run(args+[\"-o\",str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(\"Image has neither bytes nor URL\")\n        if not raw: raise SystemExit(\"Empty image result\")\n        ext=\"png\" if raw.startswith(b\"\\x89PNG\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"svg\" if raw.lstrip().startswith((b\"<svg\",b\"<?xml\")) else \"bin\"\n        Path(f\"image-{index}.{ext}\").write_bytes(raw)\n    print(\"Every returned image saved; complete response metadata retained\")\nsave_images(json.loads(Path(\"result.json\").read_text())[\"data\"])\nPY_RESULT\n",
            "label": "curl · exact creation/save all outputs",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Bilder",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/images"
        ],
        "native_endpoint": "images",
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "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"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image megapixel"
            },
            "label": "input image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input_megapixel",
                "label": "input image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per input image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input_megapixel"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per output image megapixel"
            },
            "label": "output image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output_megapixel",
                "label": "output image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per output image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output_megapixel"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "black-forest-labs/flux.2-flex",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_input_megapixel",
            "label": "input image megapixel",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "per input image megapixel",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "image_input_megapixel"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_output_megapixel",
            "label": "output image megapixel",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "per output image megapixel",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "image_output_megapixel"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "black-forest-labs/flux.2-flex",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "8715299a38b7a99b5d0c50a8438d5292efb4c6acf3834e0ca95e537e103c9fe6",
    "input_html_sha256": "b58cf19d5d7aa2c605d9d1b51c6525e16d45a1832924dc210c09e16f305426f2",
    "private_audit_sha256": "29cf29c3eb9e12fbb1697d772ecc7389b02c3a09150d88e755f7967b94e6c45f",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/de/black-forest-labs-flux-2-flex/",
    "description": "FLUX.2 [flex] spezialisiert sich auf Typografie im Bild und kleine Bilddetails, mit einstellbaren Sampling-Schritten und Guidance. Entwickeln Sie mit Text und Bildreferenzen Poster, Produktlayouts oder präzise Überarbeitungen und stimmen Sie dabei Anweisungstreue und Realismus aufeinander ab.",
    "locale": "de",
    "md_url": "https://ailoot.ai/models/de/black-forest-labs-flux-2-flex/index.md",
    "title": "Black Forest Labs: FLUX.2 Flex — Ailoot",
    "url": "https://ailoot.ai/models/de/black-forest-labs-flux-2-flex/"
  },
  "rawModel": {
    "about": "FLUX.2 [flex] ist die auf Typografie, Textdarstellung und Bewahrung kleiner Details spezialisierte Ausgabe von Black Forest Labs für Bildgenerierung und -bearbeitung. Sie erzeugt ein Bild anhand geschriebener Szenenanweisungen und Bildreferenzen. Ihre kennzeichnende Steuerung ist einstellbares Sampling: Das dokumentierte Profil stellt sowohl Inferenzschritte als auch Guidance bereit, sodass sich ein Bildbriefing durch Einstellungen ebenso wie durch Worte verfeinern lässt.\n\n### Schrift und feine Details\n\nEine Typografieaufgabe sollte mit dem tatsächlichen Text beginnen. Setzen Sie jede Zeile in Anführungszeichen, bestimmen Sie ihren Ort und unterscheiden Sie Überschrift, Begleittext und Beschriftung. Beschreiben Sie Schriftstil, Größe und Farbe in Bezug zur Szene. Ein eigenständiges Posterbriefing könnte ein kobaltblaues Fahrrad in einem hellen Studio zeigen, mit einem großen Titel über dem Rahmen und einer kleineren Spezifikationszeile darunter. Das Bild muss Produkt und Lesereihenfolge gemeinsam verständlich machen.\n\nBenennen Sie für eine detaillierte Produktvisualisierung die Teile, die über den Nutzen des Ergebnisses entscheiden: Zifferblatt, Bedienbeschriftung, Naht, Materialkante oder Verpackungskennzeichnung. Stellen Sie eine lesbare Referenz bereit und erläutern Sie, welches Merkmal sie festlegt. Eine allgemein ähnlich aussehende Szene kann dennoch ein entscheidendes Zeichen oder Bauteil verändern. Vergleichen Sie daher das erzeugte Detail in seiner vorgesehenen Darstellungsgröße. Die Spezialisierung des Modells ist ein Grund für genaue Anforderungen, keine Garantie dafür, dass Korrekturlesen oder Bildprüfung entfallen.\n\n### Schritte und Guidance erfüllen unterschiedliche Zwecke\n\nDas konkrete Herstellerprofil akzeptiert ein bis fünfzig Inferenzschritte, standardmäßig fünfzig. Seine Beschreibung verbindet mehr Schritte mit höherer Detailtreue und größerem Realismus. Guidance reicht von 1,5 bis 10, mit 5 als Standard. Höhere Guidance verstärkt die Treue zum Prompt, kann aber den Realismus verringern. Ein Bild mit exakten Designanweisungen und eines mit dem Ziel einer natürlichen fotografischen Erscheinung können deshalb innerhalb dieses Profils unterschiedliche Einstellungen verlangen.\n\nHalten Sie Wortlaut, Referenzen und Ausgabeformat konstant, wenn Sie eine Einstellungsänderung vergleichen. Betrachten Sie das Merkmal, das zur Änderung führte: Buchstabenformen, Objektplatzierung oder Materialtextur. Ändern Sie eine Einstellung aus einem konkreten visuellen Grund, statt eine hohe Zahl automatisch für besser zu halten. Dies sind Sampling-Steuerungen des Anbieters; das destillierte Vier-Schritte-Profil [klein] und die Standardsteuerungen von [pro] oder [max] sind andere Modelloptionen.\n\nPrompt-Upsampling ist in der [flex]-Spezifikation standardmäßig aktiv und lässt sich über die eigene Steuerung prompt_upsampling deaktivieren. So bleibt ein detailliertes Briefing bei Bedarf der bereitgestellte Text. Der gemeinsame Herstellerleitfaden empfiehlt, Hauptmotiv und wichtige Handlung vor zweitrangiger Dekoration zu nennen, und beschreibt JSON-strukturierte Prompts neben natürlichsprachlichen Briefings. Nutzen Sie die Struktur, in der sich die erforderlichen Beziehungen am leichtesten festlegen lassen.\n\n### Referenzgestützte Überarbeitungen\n\nDas konkrete Anfrageprofil enthält acht Positionen für Referenzbilder. Der interaktive Herstellerablauf erlaubt separat bis zu zehn Bilder; diese Zahlen beschreiben unterschiedliche Schnittstellen. Legen Sie fest, ob ein Bild die zu bearbeitende Szene, ein Produkt, eine Figur, Kleidung oder einen Stil liefert. Benennen Sie für eine Überarbeitung Objekt und Änderung sowie die umgebende Komposition, Materialien oder das Licht, die erhalten bleiben sollen.\n\nEine eigenständige Verpackungsaufgabe könnte den Karton aus dem ersten Bild und das Finish aus einem zweiten verwenden, das vordere Etikett durch den freigegebenen Wortlaut ersetzen und die Kartonproportionen bewahren. Eine Gruppenkomposition kann jedem Motiv eine eigene Referenz zuweisen und diese Zuordnungen konstant halten. Die Familienbeispiele umfassen Objekt- und Hintergrundänderungen, Compositing, Textbearbeitung und Stilumwandlungen. Fordern Sie eine zusammenhängende Überarbeitung mit klarem Ziel an und vergleichen Sie danach sowohl den bearbeiteten Bereich als auch die Teile, die stabil bleiben sollen.\n\n### Größe, Farbe und das zurückgegebene Bild\n\nDer FLUX.2-Leitfaden dokumentiert mindestens 64×64 Pixel, Abmessungen in Vielfachen von 16 und Ausgaben bis zu 4 Megapixeln, wobei bis zu 2 Megapixel für gewöhnliche Nutzung empfohlen werden. Die konkrete [flex]-Spezifikation nennt JPEG, PNG und WebP, standardmäßig JPEG. Sie bietet außerdem einen optionalen Zufalls-Seed. Bewahren Sie tatsächliches Modell, Seed und Sampling-Einstellungen mit den Quellreferenzen auf, wenn Sie Versionen vergleichen; ein Familienname allein benennt nicht die vollständige Generierungskonfiguration.\n\nOrdnen Sie für farbkritische Arbeit jeden Hex-Code einem benannten Objekt oder Textelement zu. Legen Sie für die Komposition das gewünschte Seitenverhältnis über die Bildabmessungen fest und lassen Sie ausreichend Platz für lesbare Schrift. Der gemeinsame Leitfaden hat keinen Mechanismus für negative Prompts. Beschreiben Sie deshalb das gewünschte Aussehen positiv: scharfer Fokus, sauberer Hintergrund oder eine deutlich freie Fläche für Text. Seine mehrsprachigen Beispiele unterstützen ein kulturell spezifisches Briefing in der passenden Sprache, begründen aber keine Garantie für eine feste Anzahl unterstützter Sprachen.\n\nDer FLUX.2-Ablauf des Anbieters liefert nach Verarbeitung ein Bild und verwendet temporäre signierte Links mit einem Abruffenster von zehn Minuten. Bewahren Sie das eigentliche Bild und das Briefing gemeinsam auf. Prüfen Sie Typografie, feine Details, Referenzidentität und visuelle Gestaltung, bevor Sie das Asset in ein Layout einsetzen. Das endgültige Ergebnis kann ein ausgewähltes Poster, Produktbild oder eine bearbeitete Komposition sein, deren genaue Einstellungen für die nächste Überarbeitung erhalten bleiben.",
    "alias_of": null,
    "aliases": [],
    "author": "Black Forest Labs",
    "capabilities": {
      "context_length": 67344,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "image"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "Die vollständigen Preisangaben zur Konfiguration finden Sie in den Details."
      }
    ],
    "ctx": null,
    "formats": [
      "images"
    ],
    "id": "black-forest-labs/flux.2-flex",
    "input": [
      "text",
      "image"
    ],
    "kind": "image",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Die angezeigten Tarife dienen zur Kostenschätzung vor der Generierung. Der endgültige Betrag wird aus den für die ursprüngliche Generierung erfassten Kosten berechnet. Die gemessene Ausgabedauer und prognostizierte Mengen sind nicht die endgültige abrechenbare Menge.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Die zurückgegebene X-Client-Request-ID zum Abgleich aufbewahren. Nur tatsächlich zurückgegebene task_id-/asset_id-Werte oder die eigene Medienbibliothek abfragen; niemals eine Aufgaben-URL aus der Vorgangs-ID bilden und die Erstellung niemals erneut anfordern."
            },
            "outputs": {
              "all_results": "Die vollständige Antwort und ihre Header, jede tatsächliche Ausgabe, die ursprünglich zurückgegebenen Kennungen und alle Nutzungsfelder aufbewahren. Den ursprünglichen Vorgang wiederaufnehmen, ohne die Erstellung erneut anzufordern.",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux.2-flex"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "3:2",
                  "2:3",
                  "16:9",
                  "9:16",
                  "21:9",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "png",
                  "jpeg"
                ],
                "enum_known": true,
                "name": "output_format",
                "required": false,
                "type": "string"
              },
              {
                "maximum": 1,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 8,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "4:3",
                    "3:4",
                    "3:2",
                    "2:3",
                    "16:9",
                    "9:16",
                    "21:9",
                    "auto"
                  ],
                  "type": "string"
                },
                "input_references": {
                  "items": {
                    "properties": {
                      "image_url": {
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 8,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux.2-flex"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "output_format": {
                  "enum": [
                    "png",
                    "jpeg"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "black-forest-labs/flux.2-flex",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "die tatsächlich zurückgegebene task_id oder ein Eintrag in der Medienbibliothek",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "image",
            "fields": [
              {
                "description": null,
                "name": "created",
                "type": null
              },
              {
                "description": null,
                "name": "data[].url",
                "type": null
              },
              {
                "description": null,
                "name": "data[].b64_json",
                "type": null
              },
              {
                "description": null,
                "name": "usage",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image megapixel"
            },
            "label": "input image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input_megapixel",
                "label": "input image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per input image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input_megapixel"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per output image megapixel"
            },
            "label": "output image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output_megapixel",
                "label": "output image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per output image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output_megapixel"
              }
            ]
          },
          {
            "basis": "Diese Schätzung ist weder eine zusätzliche Gebühr noch ein fester Tarif für die abgeschlossene Generierung.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Geschätzte Generierungskosten",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np={'model': 'black-forest-labs/flux.2-flex', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(\"No completed images; retain the full response\")\n    for index, item in enumerate(items):\n        encoded=item.get(\"b64_json\")\n        uri=item.get(\"url\", \"\")\n        if not encoded and uri.startswith(\"data:image/\"):\n            header, separator, encoded=uri.partition(\",\")\n            if not separator or \";base64\" not in header: raise SystemExit(\"Unsupported image data URI\")\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(\"https://api.ailoot.ai\",uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=\"https\" or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(\"Invalid returned image URL\")\n            owned=parsed.netloc==\"api.ailoot.ai\" and parsed.path.startswith(\"/v1/media/assets/\") and parsed.path.endswith(\"/content\")\n            args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",uri]\n            if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n            temporary=Path(f\"image-{index}.bin\")\n            subprocess.run(args+[\"-o\",str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(\"Image has neither bytes nor URL\")\n        if not raw: raise SystemExit(\"Empty image result\")\n        ext=\"png\" if raw.startswith(b\"\\x89PNG\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"svg\" if raw.lstrip().startswith((b\"<svg\",b\"<?xml\")) else \"bin\"\n        Path(f\"image-{index}.{ext}\").write_bytes(raw)\n    print(\"Every returned image saved; complete response metadata retained\")\nsave_images(json.loads(Path(\"result.json\").read_text())[\"data\"])\nPY_RESULT\n",
            "label": "curl · exact creation/save all outputs",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Bilder",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/images"
        ],
        "native_endpoint": "images",
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "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"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image megapixel"
            },
            "label": "input image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input_megapixel",
                "label": "input image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per input image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input_megapixel"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per output image megapixel"
            },
            "label": "output image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output_megapixel",
                "label": "output image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per output image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output_megapixel"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "black-forest-labs/flux.2-flex",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_input_megapixel",
            "label": "input image megapixel",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "per input image megapixel",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "image_input_megapixel"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_output_megapixel",
            "label": "output image megapixel",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "per output image megapixel",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "image_output_megapixel"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "black-forest-labs/flux.2-flex",
        "request_model_id": "black-forest-labs/flux.2-flex",
        "route_label": "Ultra"
      }
    ],
    "name": "Black Forest Labs: FLUX.2 Flex",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.12,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.12,
      "varies": false
    },
    "short": "FLUX.2 [flex] spezialisiert sich auf Typografie im Bild und kleine Bilddetails, mit einstellbaren Sampling-Schritten und Guidance. Entwickeln Sie mit Text und Bildreferenzen Poster, Produktlayouts oder präzise Überarbeitungen und stimmen Sie dabei Anweisungstreue und Realismus aufeinander ab."
  },
  "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": "FLUX.2 [flex] spezialisiert sich auf Typografie im Bild und kleine Bilddetails, mit einstellbaren Sampling-Schritten und Guidance. Entwickeln Sie mit Text und Bildreferenzen Poster, Produktlayouts oder präzise Überarbeitungen und stimmen Sie dabei Anweisungstreue und Realismus aufeinander ab.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "04a74e2938a49baaa5ac1c45ef37dfdf9ecc9500605ccfb4e4165e9d83a51e96",
    "renderer_sha256": "8bd3076b303b7b3aa4d961032854071403a471ec26a4f50c64e3a32556ea2925"
  },
  "sourceRevision": "cc914c4af8fa5654a6da2d354f3b0a40b4c863d96a509fcd989973a566acba64"
}
