{
  "aboutHtml": "<p>FLUX 3 Image is het beeldgeneratie- en bewerkingsmodel van Black Forest Labs met expliciete controle over de compositie. Een tekstbeschrijving kan een nieuwe scène maken; aangeleverde afbeeldingen kunnen een onderwerp, een te herwerken scène of meerdere te combineren elementen vastleggen. Begrenzingsvakken laten een briefing specificeren waar elk element hoort en welke delen van een bestaande afbeelding moeten veranderen. Het resultaat is een afbeelding waarvan je de gevraagde scène, tekst en lay-out kan controleren.</p><h4>Maak een scène of geef een bewerkingsinstructie</h4><p>Beschrijf voor een nieuwe afbeelding onderwerp, actie of houding, omgeving, licht en kadrering. Zet exacte tekst in de afbeelding tussen aanhalingstekens en geef aan waar die verschijnt. Een oorspronkelijke productbriefing kan een rode kampeerbeker op een bleek stenen oppervlak tonen, met een grote kop erboven en zacht ochtendlicht dat het handvat zichtbaar maakt. Bepaal het verband tussen kop, product en achtergrond, in plaats van losse stijlwoorden te geven.</p><p>Benoem voor bewerking het specifieke object en de wijziging: geef de beker een andere kleur, vervang een label, verplaats een figuur of verander de stijl van de scène. Eén bewerking vereist geen handmatig getekend vak. De gedocumenteerde workflow breidt de instructie vóór de generatie uit en kan het benoemde element lokaliseren en automatisch een vak toevoegen. De teruggestuurde uitgebreide prompt legt die interpretatie vast, wat nuttig is als een instructie het verkeerde object selecteert of een ongewenst detail introduceert.</p><h4>Combineer en bereid referentiebeelden voor</h4><p>Het specifieke producentenprofiel accepteert één tot tien referenties, aangeleverd als afbeeldings-URL&#39;s of gecodeerde afbeeldingsdata. Elke referentie moet minstens 256×256 pixels zijn en niet groter dan 16 megapixels. Benoem een referentie via haar positie of zichtbare inhoud en leg haar rol uit: de persoon uit Image 1, de jas uit Image 2 en de kamer uit Image 3. Een afbeeldingsreferentie is een bron van visuele informatie, geen opdracht om elk ongerelateerd detail erin te kopiëren.</p><p>De beeldverhoudingsinstelling staat standaard op auto. Volgens de aanvraagspecificatie krijgt een in de prompt gevraagde verhouding voorrang; anders bepaalt de eerste referentie de kadrering, met vierkante uitvoer als terugval wanneer noch een referentie noch een gevraagd formaat die levert. Plaats voor een compositie de bedoelde scènereferentie eerst of kies de verhouding expliciet. Bewaar bronafbeeldingen en hun volgorde bij het resultaat, zodat een latere herziening hetzelfde visuele vertrekpunt gebruikt.</p><h4>Plaats elementen met begrenzingsvakken</h4><p>Een lay-outprompt combineert een beschrijving met een JSON-array van elementrijen. De beschrijving benoemt een element met een markering zoals &lt;cup_1&gt;; de rij bevat id, bbox en desc. Coördinaten zijn gehele getallen van 0 tot 1000 in de volgorde [top, left, bottom, right], gemeten vanaf de linkerbovenhoek. Zo beschrijft [0, 0, 500, 500] het kwart linksboven, ongeacht de pixelafmetingen van het beeld. Gebruik de beeldverhouding waarvoor de lay-out is ontworpen, want dat coördinatenraster rekt mee met het kader.</p><p>Een bewerkingsrij gebruikt in plaats daarvan from, src_bbox en tgt_bbox naast de identificatie en beschrijving. ref_image_0 betekent de eerste aangeleverde afbeelding. Gelijke bron- en doelvakken verankeren een element; verschillende vakken verplaatsen of schalen het. Een nieuwe rij zonder bron genereert de beschrijving op de doellocatie en maakt toevoegingen, vervangingen of kleurwijzigingen mogelijk. Een bronrij zonder doel verwijdert het element. Vermeld toevoegingen en verwijderingen zowel in de geschreven instructie als in de rijen en behoud ankerrijen voor details die op hun plaats moeten blijven.</p><p>Geef tekst een eigen vak en citeer de exacte formulering in desc. Vakken sturen plaatsing en schaal; het zijn geen knipmaskers, dus een element kan buiten de rechthoek uitsteken. De maker meldt dat nieuwe objecten in vakken van ongeveer 40×25 pixels in zijn voorbeelden vaak niet verschenen. Voorzie voldoende zichtbare ruimte en controleer de bewerkte randen. Pixels buiten het doel blijven doorgaans stabiel, maar schaduwen, reflecties en nabije belichting kunnen toch veranderen.</p><h4>Brononderbouwing, uitvoerklassen en bruikbare records</h4><p>Het gedocumenteerde profiel schakelt brononderbouwing standaard in, zodat web- en afbeeldingszoekopdrachten informatie voor de generatie kunnen leveren. Je kan die uitschakelen voor een briefing die alleen de aangeleverde beschrijving en referenties moet gebruiken. Benoem bij een werkelijk onderwerp duidelijk de locatie, gebeurtenis of het object en hou feitelijke inhoud gescheiden van artistieke uitwerking. Vergelijk beelden op basis van zoekresultaten nog steeds met gezaghebbend materiaal wanneer een label, object of afgebeelde gebeurtenis nauwkeurig moet zijn.</p><p>De vijf resolutieklassen zijn 768sq, 1k, 1.5k, 2k en 4k, met 1k als standaard. Ze vertegenwoordigen niveaus met een gelijke pixeloppervlakte, dus de exacte breedte en hoogte hangen af van de gekozen verhouding. Vijftien vaste verhoudingen lopen van 21:9 via vierkante en staande formaten tot 9:21. Het profiel van dit model stuurt het formaat via verhouding en resolutie; het stelt niet de velden seed, width of height uit de FLUX.2-aanvraagprofielen beschikbaar. De gedocumenteerde versieselector benoemt momenteel een veranderende release en legt geen gedateerde overeenkomst met leveranciersgewichten vast.</p><p>De producentenworkflow geeft na asynchrone verwerking een afbeelding terug, samen met de uitgebreide prompt. De ondertekende downloadlink voor de afbeelding is één uur geldig. Bewaar de daadwerkelijke afbeelding, definitieve prompt en referenties in plaats van op een tijdelijke link te vertrouwen. Vergelijk voor een beoordeeld beeld de gevraagde tekst, objectplaatsing, referentie-identiteit en het gewijzigde gebied op de bedoelde weergavegrootte. Een voltooide generatie is het vertrekpunt om die visuele vereisten te controleren.</p>",
  "aboutText": "FLUX 3 Image is het beeldgeneratie- en bewerkingsmodel van Black Forest Labs met expliciete controle over de compositie. Een tekstbeschrijving kan een nieuwe scène maken; aangeleverde afbeeldingen kunnen een onderwerp, een te herwerken scène of meerdere te combineren elementen vastleggen. Begrenzingsvakken laten een briefing specificeren waar elk element hoort en welke delen van een bestaande afbeelding moeten veranderen. Het resultaat is een afbeelding waarvan je de gevraagde scène, tekst en lay-out kan controleren.\n\n### Maak een scène of geef een bewerkingsinstructie\n\nBeschrijf voor een nieuwe afbeelding onderwerp, actie of houding, omgeving, licht en kadrering. Zet exacte tekst in de afbeelding tussen aanhalingstekens en geef aan waar die verschijnt. Een oorspronkelijke productbriefing kan een rode kampeerbeker op een bleek stenen oppervlak tonen, met een grote kop erboven en zacht ochtendlicht dat het handvat zichtbaar maakt. Bepaal het verband tussen kop, product en achtergrond, in plaats van losse stijlwoorden te geven.\n\nBenoem voor bewerking het specifieke object en de wijziging: geef de beker een andere kleur, vervang een label, verplaats een figuur of verander de stijl van de scène. Eén bewerking vereist geen handmatig getekend vak. De gedocumenteerde workflow breidt de instructie vóór de generatie uit en kan het benoemde element lokaliseren en automatisch een vak toevoegen. De teruggestuurde uitgebreide prompt legt die interpretatie vast, wat nuttig is als een instructie het verkeerde object selecteert of een ongewenst detail introduceert.\n\n### Combineer en bereid referentiebeelden voor\n\nHet specifieke producentenprofiel accepteert één tot tien referenties, aangeleverd als afbeeldings-URL's of gecodeerde afbeeldingsdata. Elke referentie moet minstens 256×256 pixels zijn en niet groter dan 16 megapixels. Benoem een referentie via haar positie of zichtbare inhoud en leg haar rol uit: de persoon uit Image 1, de jas uit Image 2 en de kamer uit Image 3. Een afbeeldingsreferentie is een bron van visuele informatie, geen opdracht om elk ongerelateerd detail erin te kopiëren.\n\nDe beeldverhoudingsinstelling staat standaard op auto. Volgens de aanvraagspecificatie krijgt een in de prompt gevraagde verhouding voorrang; anders bepaalt de eerste referentie de kadrering, met vierkante uitvoer als terugval wanneer noch een referentie noch een gevraagd formaat die levert. Plaats voor een compositie de bedoelde scènereferentie eerst of kies de verhouding expliciet. Bewaar bronafbeeldingen en hun volgorde bij het resultaat, zodat een latere herziening hetzelfde visuele vertrekpunt gebruikt.\n\n### Plaats elementen met begrenzingsvakken\n\nEen lay-outprompt combineert een beschrijving met een JSON-array van elementrijen. De beschrijving benoemt een element met een markering zoals <cup_1>; de rij bevat id, bbox en desc. Coördinaten zijn gehele getallen van 0 tot 1000 in de volgorde [top, left, bottom, right], gemeten vanaf de linkerbovenhoek. Zo beschrijft [0, 0, 500, 500] het kwart linksboven, ongeacht de pixelafmetingen van het beeld. Gebruik de beeldverhouding waarvoor de lay-out is ontworpen, want dat coördinatenraster rekt mee met het kader.\n\nEen bewerkingsrij gebruikt in plaats daarvan from, src_bbox en tgt_bbox naast de identificatie en beschrijving. ref_image_0 betekent de eerste aangeleverde afbeelding. Gelijke bron- en doelvakken verankeren een element; verschillende vakken verplaatsen of schalen het. Een nieuwe rij zonder bron genereert de beschrijving op de doellocatie en maakt toevoegingen, vervangingen of kleurwijzigingen mogelijk. Een bronrij zonder doel verwijdert het element. Vermeld toevoegingen en verwijderingen zowel in de geschreven instructie als in de rijen en behoud ankerrijen voor details die op hun plaats moeten blijven.\n\nGeef tekst een eigen vak en citeer de exacte formulering in desc. Vakken sturen plaatsing en schaal; het zijn geen knipmaskers, dus een element kan buiten de rechthoek uitsteken. De maker meldt dat nieuwe objecten in vakken van ongeveer 40×25 pixels in zijn voorbeelden vaak niet verschenen. Voorzie voldoende zichtbare ruimte en controleer de bewerkte randen. Pixels buiten het doel blijven doorgaans stabiel, maar schaduwen, reflecties en nabije belichting kunnen toch veranderen.\n\n### Brononderbouwing, uitvoerklassen en bruikbare records\n\nHet gedocumenteerde profiel schakelt brononderbouwing standaard in, zodat web- en afbeeldingszoekopdrachten informatie voor de generatie kunnen leveren. Je kan die uitschakelen voor een briefing die alleen de aangeleverde beschrijving en referenties moet gebruiken. Benoem bij een werkelijk onderwerp duidelijk de locatie, gebeurtenis of het object en hou feitelijke inhoud gescheiden van artistieke uitwerking. Vergelijk beelden op basis van zoekresultaten nog steeds met gezaghebbend materiaal wanneer een label, object of afgebeelde gebeurtenis nauwkeurig moet zijn.\n\nDe vijf resolutieklassen zijn 768sq, 1k, 1.5k, 2k en 4k, met 1k als standaard. Ze vertegenwoordigen niveaus met een gelijke pixeloppervlakte, dus de exacte breedte en hoogte hangen af van de gekozen verhouding. Vijftien vaste verhoudingen lopen van 21:9 via vierkante en staande formaten tot 9:21. Het profiel van dit model stuurt het formaat via verhouding en resolutie; het stelt niet de velden seed, width of height uit de FLUX.2-aanvraagprofielen beschikbaar. De gedocumenteerde versieselector benoemt momenteel een veranderende release en legt geen gedateerde overeenkomst met leveranciersgewichten vast.\n\nDe producentenworkflow geeft na asynchrone verwerking een afbeelding terug, samen met de uitgebreide prompt. De ondertekende downloadlink voor de afbeelding is één uur geldig. Bewaar de daadwerkelijke afbeelding, definitieve prompt en referenties in plaats van op een tijdelijke link te vertrouwen. Vergelijk voor een beoordeeld beeld de gevraagde tekst, objectplaatsing, referentie-identiteit en het gewijzigde gebied op de bedoelde weergavegrootte. Een voltooide generatie is het vertrekpunt om die visuele vereisten te controleren.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "1af838ecbce4a5872c9919b47e4b460f6dd15b039fcce77c08c9b702b7920212",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "nl-be",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Black Forest Labs: FLUX.3 Image</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sluiten\">×</button></div><div class=\"idline\"><span>Black Forest Labs /</span><code>black-forest-labs/flux-3-image</code><button type=\"button\" id=\"copy-id\">ID kopiëren</button></div><nav class=\"card-jump-nav\" aria-label=\"Onderdelen van de modelkaart\"><button type=\"button\" data-card-jump=\"overview\">Aan de slag</button><button type=\"button\" data-card-jump=\"methods\">Invoer en methoden</button><button type=\"button\" data-card-jump=\"pricing\">Tarieven</button><button type=\"button\" data-card-jump=\"examples\">Voorbeelden</button><button type=\"button\" data-card-jump=\"results\">Resultaten</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-3-image\">Afbeeldingen</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\">Aan de slag</h3><p class=\"mdesc-full\">FLUX 3 Image maakt en bewerkt afbeeldingen vanuit een geschreven briefing en maximaal tien referenties. Het voegt begrenzingsvakken in de prompt toe voor compositie en lokale wijzigingen, onderbouwing via web- en afbeeldingszoekopdrachten en vijf resolutieklassen.</p><dl class=\"card-io\" data-card-io><div><dt>Toegestane invoer</dt><dd>Tekst · Afbeeldingen</dd></div><div><dt>Resultaten</dt><dd>Afbeeldingen</dd></div></dl><details class=\"card-about\"><summary>Over het model</summary><p class=\"note-s\" data-model-method-boundary>Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.</p><div class=\"mabout\" id=\"m-about\"><p>FLUX 3 Image is het beeldgeneratie- en bewerkingsmodel van Black Forest Labs met expliciete controle over de compositie. Een tekstbeschrijving kan een nieuwe scène maken; aangeleverde afbeeldingen kunnen een onderwerp, een te herwerken scène of meerdere te combineren elementen vastleggen. Begrenzingsvakken laten een briefing specificeren waar elk element hoort en welke delen van een bestaande afbeelding moeten veranderen. Het resultaat is een afbeelding waarvan je de gevraagde scène, tekst en lay-out kan controleren.</p><h4>Maak een scène of geef een bewerkingsinstructie</h4><p>Beschrijf voor een nieuwe afbeelding onderwerp, actie of houding, omgeving, licht en kadrering. Zet exacte tekst in de afbeelding tussen aanhalingstekens en geef aan waar die verschijnt. Een oorspronkelijke productbriefing kan een rode kampeerbeker op een bleek stenen oppervlak tonen, met een grote kop erboven en zacht ochtendlicht dat het handvat zichtbaar maakt. Bepaal het verband tussen kop, product en achtergrond, in plaats van losse stijlwoorden te geven.</p><p>Benoem voor bewerking het specifieke object en de wijziging: geef de beker een andere kleur, vervang een label, verplaats een figuur of verander de stijl van de scène. Eén bewerking vereist geen handmatig getekend vak. De gedocumenteerde workflow breidt de instructie vóór de generatie uit en kan het benoemde element lokaliseren en automatisch een vak toevoegen. De teruggestuurde uitgebreide prompt legt die interpretatie vast, wat nuttig is als een instructie het verkeerde object selecteert of een ongewenst detail introduceert.</p><h4>Combineer en bereid referentiebeelden voor</h4><p>Het specifieke producentenprofiel accepteert één tot tien referenties, aangeleverd als afbeeldings-URL&#39;s of gecodeerde afbeeldingsdata. Elke referentie moet minstens 256×256 pixels zijn en niet groter dan 16 megapixels. Benoem een referentie via haar positie of zichtbare inhoud en leg haar rol uit: de persoon uit Image 1, de jas uit Image 2 en de kamer uit Image 3. Een afbeeldingsreferentie is een bron van visuele informatie, geen opdracht om elk ongerelateerd detail erin te kopiëren.</p><p>De beeldverhoudingsinstelling staat standaard op auto. Volgens de aanvraagspecificatie krijgt een in de prompt gevraagde verhouding voorrang; anders bepaalt de eerste referentie de kadrering, met vierkante uitvoer als terugval wanneer noch een referentie noch een gevraagd formaat die levert. Plaats voor een compositie de bedoelde scènereferentie eerst of kies de verhouding expliciet. Bewaar bronafbeeldingen en hun volgorde bij het resultaat, zodat een latere herziening hetzelfde visuele vertrekpunt gebruikt.</p><h4>Plaats elementen met begrenzingsvakken</h4><p>Een lay-outprompt combineert een beschrijving met een JSON-array van elementrijen. De beschrijving benoemt een element met een markering zoals &lt;cup_1&gt;; de rij bevat id, bbox en desc. Coördinaten zijn gehele getallen van 0 tot 1000 in de volgorde [top, left, bottom, right], gemeten vanaf de linkerbovenhoek. Zo beschrijft [0, 0, 500, 500] het kwart linksboven, ongeacht de pixelafmetingen van het beeld. Gebruik de beeldverhouding waarvoor de lay-out is ontworpen, want dat coördinatenraster rekt mee met het kader.</p><p>Een bewerkingsrij gebruikt in plaats daarvan from, src_bbox en tgt_bbox naast de identificatie en beschrijving. ref_image_0 betekent de eerste aangeleverde afbeelding. Gelijke bron- en doelvakken verankeren een element; verschillende vakken verplaatsen of schalen het. Een nieuwe rij zonder bron genereert de beschrijving op de doellocatie en maakt toevoegingen, vervangingen of kleurwijzigingen mogelijk. Een bronrij zonder doel verwijdert het element. Vermeld toevoegingen en verwijderingen zowel in de geschreven instructie als in de rijen en behoud ankerrijen voor details die op hun plaats moeten blijven.</p><p>Geef tekst een eigen vak en citeer de exacte formulering in desc. Vakken sturen plaatsing en schaal; het zijn geen knipmaskers, dus een element kan buiten de rechthoek uitsteken. De maker meldt dat nieuwe objecten in vakken van ongeveer 40×25 pixels in zijn voorbeelden vaak niet verschenen. Voorzie voldoende zichtbare ruimte en controleer de bewerkte randen. Pixels buiten het doel blijven doorgaans stabiel, maar schaduwen, reflecties en nabije belichting kunnen toch veranderen.</p><h4>Brononderbouwing, uitvoerklassen en bruikbare records</h4><p>Het gedocumenteerde profiel schakelt brononderbouwing standaard in, zodat web- en afbeeldingszoekopdrachten informatie voor de generatie kunnen leveren. Je kan die uitschakelen voor een briefing die alleen de aangeleverde beschrijving en referenties moet gebruiken. Benoem bij een werkelijk onderwerp duidelijk de locatie, gebeurtenis of het object en hou feitelijke inhoud gescheiden van artistieke uitwerking. Vergelijk beelden op basis van zoekresultaten nog steeds met gezaghebbend materiaal wanneer een label, object of afgebeelde gebeurtenis nauwkeurig moet zijn.</p><p>De vijf resolutieklassen zijn 768sq, 1k, 1.5k, 2k en 4k, met 1k als standaard. Ze vertegenwoordigen niveaus met een gelijke pixeloppervlakte, dus de exacte breedte en hoogte hangen af van de gekozen verhouding. Vijftien vaste verhoudingen lopen van 21:9 via vierkante en staande formaten tot 9:21. Het profiel van dit model stuurt het formaat via verhouding en resolutie; het stelt niet de velden seed, width of height uit de FLUX.2-aanvraagprofielen beschikbaar. De gedocumenteerde versieselector benoemt momenteel een veranderende release en legt geen gedateerde overeenkomst met leveranciersgewichten vast.</p><p>De producentenworkflow geeft na asynchrone verwerking een afbeelding terug, samen met de uitgebreide prompt. De ondertekende downloadlink voor de afbeelding is één uur geldig. Bewaar de daadwerkelijke afbeelding, definitieve prompt en referenties in plaats van op een tijdelijke link te vertrouwen. Vergelijk voor een beoordeeld beeld de gevraagde tekst, objectplaatsing, referentie-identiteit en het gewijzigde gebied op de bedoelde weergavegrootte. Een voltooide generatie is het vertrekpunt om die visuele vereisten te controleren.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Beschikbaar in Ailoot · invoer en methoden</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Afbeeldingen</b> <code>POST /v1/images/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Invoer</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Uitvoer</dt><dd><code>image</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Veld</th><th>Type</th><th>Vereiste</th><th>Waarden en limieten</th><th>Standaard</th></tr></thead><tbody><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>black-forest-labs/flux-3-image</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Minimumlengte: 1</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>768, 1K, 1.5K, 2K, 4K</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>21:9, 2:1, 16:9, 3:2, 7:5, 4:3, 5:4, 1:1, 4:5, 3:4, 5:7, 2:3, 9:16, 1:2, 9:21, auto</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">n</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>integer</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Minimum: 1</div><div>Maximum: 1</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>array</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Minimumaantal items: 0</div><div>Maximumaantal items: 10</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>object</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Methodeparameters en levenscyclus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Contract</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=\"Contract\"><span class=\"card-cell-label\">Contract</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=\"Contract\"><span class=\"card-cell-label\">Contract</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=\"Contract\"><span class=\"card-cell-label\">Contract</span>text, image</td></tr></tbody></table></div><p>Levenscyclus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · daadwerkelijk teruggegeven task_id of record in de mediabibliotheek</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\">Tarieven</h3><div class=\"card-result-process\" data-billing-basis><h5>Zo worden de uiteindelijke kosten berekend</h5><p class=\"note-s\">De getoonde tarieven ramen de kosten vóór de generatie. De definitieve kosten worden berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van het gegenereerde resultaat en de geraamde hoeveelheden vormen niet de definitieve factureerbare hoeveelheid.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.</p><dl data-price-conditions><dt>Snelle modus</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer de snelle modus geselecteerd is</span></dd><dt>Flex-modus</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer de flex-modus geselecteerd is</span></dd><dt>Maximale redeneerinspanning</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt</span></dd></dl></div><div data-declared-tariff-pricing><h4>Geschatte tarieven ter vergelijking</h4><h4>Prijzen per configuratie</h4><p class=\"note-s\">Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuratie</th><th>Tariefstaffel</th><th>Verwachte hoeveelheid</th><th>Kosten</th></tr></thead><tbody><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Basistarieven voor tokens</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>Basistarief</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Invoer · Invoertokens · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Uitvoer · Uitvoertokens · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache lezen · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache schrijven · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache schrijven, 1 uur · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Geschatte generatiekosten</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>schatting voor één generatie</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Geschatte generatiekosten · Schatting uitsluitend ter vergelijking</span> <b>$0.082</b> <span class=\"price-unit\">schatting vóór generatie</span></div><p class=\"note-s\">Deze raming is geen extra kost of vast tarief voor de voltooide generatie.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. <a href=\"/docs/nl-be/billing/reserve/\">Zo werken reservering en afrekening →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Voorbeeldverzoeken</h3><h4>Ailoot Ultra · Afbeeldingen</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-1090-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1090-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 kopiëren\"><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-1090-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1090-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-3-image&#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\">Resultaten ophalen en opslaan</h3><h4>Ailoot Ultra · Afbeeldingen</h4><p class=\"note-s\">Download elke teruggegeven afbeelding of sla de Base64-inhoud ervan op</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>Lezen van andere inhoud</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-1091-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1091-panel-0\" aria-selected=\"true\" tabindex=\"0\">Bestaande eigen bestanden ophalen</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopiëren\"><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-1091-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1091-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 voltooide resultaten bewaren</h5><p class=\"note-s\">Sla elke voltooide afbeelding op; haal elke teruggegeven URL op of decodeer de bijbehorende Base64-inhoud.</p><p class=\"note-s\">Bewaar de volledige respons en headers, iedere daadwerkelijke uitvoer, de oorspronkelijk teruggegeven identificatoren en alle verbruiksvelden. Herstel de oorspronkelijke bewerking zonder de aanmaakaanvraag opnieuw in te dienen.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Als het oorspronkelijke antwoord moet worden gecontroleerd</h5><p class=\"note-s\">Bewaar de teruggegeven X-Client-Request-ID voor de reconciliatie. Lees uitsluitend daadwerkelijk teruggegeven task_id/asset_id-waarden of de eigen mediabibliotheek uit; bouw nooit een taak-URL op basis van de bewerkings-ID en dien de aanmaakaanvraag nooit opnieuw in.</p></div><details class=\"card-about\" data-output-fields><summary>Antwoordvelden</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Veld</th><th>Type</th></tr></thead><tbody><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">created</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span></td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">data[].url</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span></td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">data[].b64_json</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span></td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasnamen</h3><h4>Modelaliasnamen</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=black-forest-labs%2Fflux-3-image&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-3-image&amp;fmt=images\"><code>black-forest-labs/flux-3-image</code></a></span></p><h4>Aliasnamen voor methodepaden</h4><p class=\"note-s\"><code>/v1/images</code></p><h4>Gerelateerde aanroeper-ID’s</h4><p class=\"note-s\"><a href=\"#m=black-forest-labs%2Fflux-3-image&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-3-image&amp;fmt=images\"><code>black-forest-labs/flux-3-image</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "black-forest-labs/flux-3-image",
        "fmt": "images",
        "http": "POST",
        "path": "/v1/images/generations",
        "request_model_id": "black-forest-labs/flux-3-image",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|images|/v1/images/generations|black-forest-labs%2Fflux-3-image",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "De getoonde tarieven ramen de kosten vóór de generatie. De definitieve kosten worden berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van het gegenereerde resultaat en de geraamde hoeveelheden vormen niet de definitieve factureerbare hoeveelheid.",
          "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": "Bewaar de teruggegeven X-Client-Request-ID voor de reconciliatie. Lees uitsluitend daadwerkelijk teruggegeven task_id/asset_id-waarden of de eigen mediabibliotheek uit; bouw nooit een taak-URL op basis van de bewerkings-ID en dien de aanmaakaanvraag nooit opnieuw in."
            },
            "outputs": {
              "all_results": "Bewaar de volledige respons en headers, iedere daadwerkelijke uitvoer, de oorspronkelijk teruggegeven identificatoren en alle verbruiksvelden. Herstel de oorspronkelijke bewerking zonder de aanmaakaanvraag opnieuw in te dienen.",
              "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-3-image"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "768",
                  "1K",
                  "1.5K",
                  "2K",
                  "4K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "21:9",
                  "2:1",
                  "16:9",
                  "3:2",
                  "7:5",
                  "4:3",
                  "5:4",
                  "1:1",
                  "4:5",
                  "3:4",
                  "5:7",
                  "2:3",
                  "9:16",
                  "1:2",
                  "9:21",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "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": 10,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "21:9",
                    "2:1",
                    "16:9",
                    "3:2",
                    "7:5",
                    "4:3",
                    "5:4",
                    "1:1",
                    "4:5",
                    "3:4",
                    "5:7",
                    "2:3",
                    "9:16",
                    "1:2",
                    "9:21",
                    "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": 10,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-image"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                },
                "resolution": {
                  "enum": [
                    "768",
                    "1K",
                    "1.5K",
                    "2K",
                    "4K"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "black-forest-labs/flux-3-image",
                "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": "daadwerkelijk teruggegeven task_id of record in de mediabibliotheek",
                "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"
              }
            ]
          },
          {
            "basis": "Deze raming is geen extra kost of vast tarief voor de voltooide generatie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Geschatte generatiekosten",
            "units": [
              {
                "amount": "0.082",
                "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.082",
                "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-3-image', '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": "Afbeeldingen",
        "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"
              }
            ]
          },
          {
            "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.082",
                "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.082",
                "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-3-image",
        "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.082",
            "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.082",
            "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-3-image",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "93bebbb5051cce47416f941d7dba545be438ee8ff0b750cfbc45ce406760a728",
    "input_html_sha256": "5042036a5cff235306ddae474606a3599b8ddf20d18b8a16d2d29ce6cbe0c32f",
    "private_audit_sha256": "a228feb5c12bd74ccb994e54b7dace46b1dadb9600a8a234a2e8a5896ceef1ff",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/nl-be/black-forest-labs-flux-3-image/",
    "description": "FLUX 3 Image maakt en bewerkt afbeeldingen vanuit een geschreven briefing en maximaal tien referenties. Het voegt begrenzingsvakken in de prompt toe voor compositie en lokale wijzigingen, onderbouwing via web- en afbeeldingszoekopdrachten en vijf resolutieklassen.",
    "locale": "nl-be",
    "md_url": "https://ailoot.ai/models/nl-be/black-forest-labs-flux-3-image/index.md",
    "title": "Black Forest Labs: FLUX.3 Image — Ailoot",
    "url": "https://ailoot.ai/models/nl-be/black-forest-labs-flux-3-image/"
  },
  "rawModel": {
    "about": "FLUX 3 Image is het beeldgeneratie- en bewerkingsmodel van Black Forest Labs met expliciete controle over de compositie. Een tekstbeschrijving kan een nieuwe scène maken; aangeleverde afbeeldingen kunnen een onderwerp, een te herwerken scène of meerdere te combineren elementen vastleggen. Begrenzingsvakken laten een briefing specificeren waar elk element hoort en welke delen van een bestaande afbeelding moeten veranderen. Het resultaat is een afbeelding waarvan je de gevraagde scène, tekst en lay-out kan controleren.\n\n### Maak een scène of geef een bewerkingsinstructie\n\nBeschrijf voor een nieuwe afbeelding onderwerp, actie of houding, omgeving, licht en kadrering. Zet exacte tekst in de afbeelding tussen aanhalingstekens en geef aan waar die verschijnt. Een oorspronkelijke productbriefing kan een rode kampeerbeker op een bleek stenen oppervlak tonen, met een grote kop erboven en zacht ochtendlicht dat het handvat zichtbaar maakt. Bepaal het verband tussen kop, product en achtergrond, in plaats van losse stijlwoorden te geven.\n\nBenoem voor bewerking het specifieke object en de wijziging: geef de beker een andere kleur, vervang een label, verplaats een figuur of verander de stijl van de scène. Eén bewerking vereist geen handmatig getekend vak. De gedocumenteerde workflow breidt de instructie vóór de generatie uit en kan het benoemde element lokaliseren en automatisch een vak toevoegen. De teruggestuurde uitgebreide prompt legt die interpretatie vast, wat nuttig is als een instructie het verkeerde object selecteert of een ongewenst detail introduceert.\n\n### Combineer en bereid referentiebeelden voor\n\nHet specifieke producentenprofiel accepteert één tot tien referenties, aangeleverd als afbeeldings-URL's of gecodeerde afbeeldingsdata. Elke referentie moet minstens 256×256 pixels zijn en niet groter dan 16 megapixels. Benoem een referentie via haar positie of zichtbare inhoud en leg haar rol uit: de persoon uit Image 1, de jas uit Image 2 en de kamer uit Image 3. Een afbeeldingsreferentie is een bron van visuele informatie, geen opdracht om elk ongerelateerd detail erin te kopiëren.\n\nDe beeldverhoudingsinstelling staat standaard op auto. Volgens de aanvraagspecificatie krijgt een in de prompt gevraagde verhouding voorrang; anders bepaalt de eerste referentie de kadrering, met vierkante uitvoer als terugval wanneer noch een referentie noch een gevraagd formaat die levert. Plaats voor een compositie de bedoelde scènereferentie eerst of kies de verhouding expliciet. Bewaar bronafbeeldingen en hun volgorde bij het resultaat, zodat een latere herziening hetzelfde visuele vertrekpunt gebruikt.\n\n### Plaats elementen met begrenzingsvakken\n\nEen lay-outprompt combineert een beschrijving met een JSON-array van elementrijen. De beschrijving benoemt een element met een markering zoals <cup_1>; de rij bevat id, bbox en desc. Coördinaten zijn gehele getallen van 0 tot 1000 in de volgorde [top, left, bottom, right], gemeten vanaf de linkerbovenhoek. Zo beschrijft [0, 0, 500, 500] het kwart linksboven, ongeacht de pixelafmetingen van het beeld. Gebruik de beeldverhouding waarvoor de lay-out is ontworpen, want dat coördinatenraster rekt mee met het kader.\n\nEen bewerkingsrij gebruikt in plaats daarvan from, src_bbox en tgt_bbox naast de identificatie en beschrijving. ref_image_0 betekent de eerste aangeleverde afbeelding. Gelijke bron- en doelvakken verankeren een element; verschillende vakken verplaatsen of schalen het. Een nieuwe rij zonder bron genereert de beschrijving op de doellocatie en maakt toevoegingen, vervangingen of kleurwijzigingen mogelijk. Een bronrij zonder doel verwijdert het element. Vermeld toevoegingen en verwijderingen zowel in de geschreven instructie als in de rijen en behoud ankerrijen voor details die op hun plaats moeten blijven.\n\nGeef tekst een eigen vak en citeer de exacte formulering in desc. Vakken sturen plaatsing en schaal; het zijn geen knipmaskers, dus een element kan buiten de rechthoek uitsteken. De maker meldt dat nieuwe objecten in vakken van ongeveer 40×25 pixels in zijn voorbeelden vaak niet verschenen. Voorzie voldoende zichtbare ruimte en controleer de bewerkte randen. Pixels buiten het doel blijven doorgaans stabiel, maar schaduwen, reflecties en nabije belichting kunnen toch veranderen.\n\n### Brononderbouwing, uitvoerklassen en bruikbare records\n\nHet gedocumenteerde profiel schakelt brononderbouwing standaard in, zodat web- en afbeeldingszoekopdrachten informatie voor de generatie kunnen leveren. Je kan die uitschakelen voor een briefing die alleen de aangeleverde beschrijving en referenties moet gebruiken. Benoem bij een werkelijk onderwerp duidelijk de locatie, gebeurtenis of het object en hou feitelijke inhoud gescheiden van artistieke uitwerking. Vergelijk beelden op basis van zoekresultaten nog steeds met gezaghebbend materiaal wanneer een label, object of afgebeelde gebeurtenis nauwkeurig moet zijn.\n\nDe vijf resolutieklassen zijn 768sq, 1k, 1.5k, 2k en 4k, met 1k als standaard. Ze vertegenwoordigen niveaus met een gelijke pixeloppervlakte, dus de exacte breedte en hoogte hangen af van de gekozen verhouding. Vijftien vaste verhoudingen lopen van 21:9 via vierkante en staande formaten tot 9:21. Het profiel van dit model stuurt het formaat via verhouding en resolutie; het stelt niet de velden seed, width of height uit de FLUX.2-aanvraagprofielen beschikbaar. De gedocumenteerde versieselector benoemt momenteel een veranderende release en legt geen gedateerde overeenkomst met leveranciersgewichten vast.\n\nDe producentenworkflow geeft na asynchrone verwerking een afbeelding terug, samen met de uitgebreide prompt. De ondertekende downloadlink voor de afbeelding is één uur geldig. Bewaar de daadwerkelijke afbeelding, definitieve prompt en referenties in plaats van op een tijdelijke link te vertrouwen. Vergelijk voor een beoordeeld beeld de gevraagde tekst, objectplaatsing, referentie-identiteit en het gewijzigde gebied op de bedoelde weergavegrootte. Een voltooide generatie is het vertrekpunt om die visuele vereisten te controleren.",
    "alias_of": null,
    "aliases": [],
    "author": "Black Forest Labs",
    "capabilities": {
      "context_length": 46864,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "image"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.082",
            "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.082",
            "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": "De volledige prijsinformatie voor de configuratie vindt u bij de details."
      }
    ],
    "ctx": null,
    "formats": [
      "images"
    ],
    "id": "black-forest-labs/flux-3-image",
    "input": [
      "text",
      "image"
    ],
    "kind": "image",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "De getoonde tarieven ramen de kosten vóór de generatie. De definitieve kosten worden berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van het gegenereerde resultaat en de geraamde hoeveelheden vormen niet de definitieve factureerbare hoeveelheid.",
          "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": "Bewaar de teruggegeven X-Client-Request-ID voor de reconciliatie. Lees uitsluitend daadwerkelijk teruggegeven task_id/asset_id-waarden of de eigen mediabibliotheek uit; bouw nooit een taak-URL op basis van de bewerkings-ID en dien de aanmaakaanvraag nooit opnieuw in."
            },
            "outputs": {
              "all_results": "Bewaar de volledige respons en headers, iedere daadwerkelijke uitvoer, de oorspronkelijk teruggegeven identificatoren en alle verbruiksvelden. Herstel de oorspronkelijke bewerking zonder de aanmaakaanvraag opnieuw in te dienen.",
              "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-3-image"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "768",
                  "1K",
                  "1.5K",
                  "2K",
                  "4K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "21:9",
                  "2:1",
                  "16:9",
                  "3:2",
                  "7:5",
                  "4:3",
                  "5:4",
                  "1:1",
                  "4:5",
                  "3:4",
                  "5:7",
                  "2:3",
                  "9:16",
                  "1:2",
                  "9:21",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "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": 10,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "21:9",
                    "2:1",
                    "16:9",
                    "3:2",
                    "7:5",
                    "4:3",
                    "5:4",
                    "1:1",
                    "4:5",
                    "3:4",
                    "5:7",
                    "2:3",
                    "9:16",
                    "1:2",
                    "9:21",
                    "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": 10,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-image"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                },
                "resolution": {
                  "enum": [
                    "768",
                    "1K",
                    "1.5K",
                    "2K",
                    "4K"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "black-forest-labs/flux-3-image",
                "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": "daadwerkelijk teruggegeven task_id of record in de mediabibliotheek",
                "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"
              }
            ]
          },
          {
            "basis": "Deze raming is geen extra kost of vast tarief voor de voltooide generatie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Geschatte generatiekosten",
            "units": [
              {
                "amount": "0.082",
                "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.082",
                "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-3-image', '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": "Afbeeldingen",
        "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"
              }
            ]
          },
          {
            "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.082",
                "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.082",
                "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-3-image",
        "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.082",
            "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.082",
            "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-3-image",
        "request_model_id": "black-forest-labs/flux-3-image",
        "route_label": "Ultra"
      }
    ],
    "name": "Black Forest Labs: FLUX.3 Image",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.082,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.082,
      "varies": false
    },
    "short": "FLUX 3 Image maakt en bewerkt afbeeldingen vanuit een geschreven briefing en maximaal tien referenties. Het voegt begrenzingsvakken in de prompt toe voor compositie en lokale wijzigingen, onderbouwing via web- en afbeeldingszoekopdrachten en vijf resolutieklassen."
  },
  "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 3 Image maakt en bewerkt afbeeldingen vanuit een geschreven briefing en maximaal tien referenties. Het voegt begrenzingsvakken in de prompt toe voor compositie en lokale wijzigingen, onderbouwing via web- en afbeeldingszoekopdrachten en vijf resolutieklassen.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "64e508658eb8b0f03b26cd5537578dccfcd78b0d7930eb546e5cd64c78b9f9b6",
    "renderer_sha256": "a5aefc67f30427b283b8d8bf7955908a0216c6e5e4ca3cc1887842431e2b1ee6"
  },
  "sourceRevision": "d99e5d540a3ae849ffe329c69e00aa52bd6f6dfbaf0f8d2ae0b4c021d0139a83"
}
