{
  "aboutHtml": "<p>Recraft V4 Pro je rastrový model s vyšším rozlíšením v rodine Recraft V4. V4 sa zameriava na vizuálny úsudok, vyváženú kompozíciu, súdržné farby a starostlivú interpretáciu tvorivého smeru. Výrobca určuje Pro pre jemnejšie detaily, realistickejšie zložité scény a rozsiahle produkčné vizuály. Použite ho na podrobnú ilustráciu, redakčný obrázok, koncept plagátu alebo iný vizuál, ktorý ťaží z väčšieho rastrového výsledku. Zostáva oddelený od neskoršieho modelu V4.1 a od výstupu SVG modelu V4 Pro Vector.</p><p>Presný kód výrobcu je recraftv4_pro. Dokumentovaný výstup je raster 2K v bezstratovom WebP alebo PNG: 2048 × 2048 pixelov pre štvorec, 2688 × 1536 pre 16:9 a 1664 × 2560 pre 2:3. Ďalšie podporované pomery majú vlastné rozmery. Zvoľte pomer strán pre zamýšľané rozloženie alebo presnú povolenú veľkosť; ľubovoľná pixelová veľkosť nie je súčasťou dokumentovaného kontraktu generovania. Štandardný V4 má menší rastrový výstup 1K, kým vektorové modely nemajú pevné pixelové rozlíšenie.</p><p>V4 môže interpretovať krátke zadanie na skúmanie alebo štruktúrované zadanie pre kontrolovaný výsledok. Pri konkrétnom umeleckom smerovaní návod výrobcu postupuje od subjektu a prostredia k rámovaniu, vlastnostiam, priestorovým vzťahom, osvetleniu, hĺbke a nálade. Pri redakčnom produktovom obrázku požadujte dramatickú zvislú fotografiu sochársky tvarovanej stoličky, povrchy z brúseného kovu, bočné osvetlenie, pokojné tmavé pozadie a priestor nad predmetom pre nadpis. Pomenovanie týchto vzťahov objasňuje zamýšľanú kompozíciu viac než všeobecná žiadosť o prémiový obrázok.</p><p>Tvorivý rozsah rodiny zahŕňa príbehovú ilustráciu, fotorealistické scény a priestorové vizuály s pokynmi pre materiál a osvetlenie. Výsledok vyzerajúci ako 3D je stále obrázkom, nie editovateľnou scénou 3D. Pri grafickom plagáte určte vizuálne vrstvy a ich interakciu: pozadie, ilustráciu alebo fotografiu, hierarchiu nadpisov a podporný text. V4 je určený pre čitateľné krátke a stredne dlhé frázy, ale dokončený pravopis a hierarchiu treba kontrolovať namiesto odvodzovania z názvu modelu.</p><p>Aktuálna referencia generovania povoľuje zadania do 10 000 znakov, jeden až šesť výstupov, náhodný seed a ovládanie preferovaných farieb aj farby pozadia. Voliteľné vlastné štýly alebo kompatibilné referenčné obrázky môžu usmerniť vzhľad s flexibilnou alebo presnou zhodou. Model neprijíma staršie ovládania V3 negative_prompt, kurátorované štýly, text_layout, artistic_level alebo no_text. Zamýšľaný konečný obrázok opíšte v pozitívnom zadaní a požiadavky na subjekt, rozloženie a farby uveďte výslovne. Pri generovaní podľa referenčného štýlu použite jeden až desať obrázkov PNG, JPG alebo WebP, spolu najviac 64 MB a každý pod 20 MB. Každá referencia potrebuje kratšiu stranu aspoň 256 pixelov, dlhšiu najviac 4 096 pixelov a rozlíšenie najviac 16 megapixelov. Použite buď tieto referencie, alebo kompatibilný uložený štýl, nie obe možnosti.</p><p>Recraft dokumentuje samostatnú operáciu image-to-image pre V4. Spája existujúci obrázok a zadanie so silou od 0 do 1 na riadenie miery zmeny a v tejto operácii neprijíma ovládanie vlastných štýlov V4. Zdroj pripravte v limitoch obrazového vstupu výrobcu a určte vlastnosti, ktoré sa majú preniesť do nového výsledku. Pri väčšom konečnom vizuáli kontrolujte jemné detaily, výrez a písmo pri zamýšľanej veľkosti. Dodatočné rastrové detaily Pro túto kontrolu podporujú, kým obrázok zostáva generovanou interpretáciou dodaného tvorivého zadania. Pre image-to-image dodajte PNG, JPG, WebP alebo SVG pod 20 MB, najviac 16 megapixelov, s oboma stranami od 256 do 4 096 pixelov.</p>",
  "aboutText": "Recraft V4 Pro je rastrový model s vyšším rozlíšením v rodine Recraft V4. V4 sa zameriava na vizuálny úsudok, vyváženú kompozíciu, súdržné farby a starostlivú interpretáciu tvorivého smeru. Výrobca určuje Pro pre jemnejšie detaily, realistickejšie zložité scény a rozsiahle produkčné vizuály. Použite ho na podrobnú ilustráciu, redakčný obrázok, koncept plagátu alebo iný vizuál, ktorý ťaží z väčšieho rastrového výsledku. Zostáva oddelený od neskoršieho modelu V4.1 a od výstupu SVG modelu V4 Pro Vector.\n\nPresný kód výrobcu je recraftv4_pro. Dokumentovaný výstup je raster 2K v bezstratovom WebP alebo PNG: 2048 × 2048 pixelov pre štvorec, 2688 × 1536 pre 16:9 a 1664 × 2560 pre 2:3. Ďalšie podporované pomery majú vlastné rozmery. Zvoľte pomer strán pre zamýšľané rozloženie alebo presnú povolenú veľkosť; ľubovoľná pixelová veľkosť nie je súčasťou dokumentovaného kontraktu generovania. Štandardný V4 má menší rastrový výstup 1K, kým vektorové modely nemajú pevné pixelové rozlíšenie.\n\nV4 môže interpretovať krátke zadanie na skúmanie alebo štruktúrované zadanie pre kontrolovaný výsledok. Pri konkrétnom umeleckom smerovaní návod výrobcu postupuje od subjektu a prostredia k rámovaniu, vlastnostiam, priestorovým vzťahom, osvetleniu, hĺbke a nálade. Pri redakčnom produktovom obrázku požadujte dramatickú zvislú fotografiu sochársky tvarovanej stoličky, povrchy z brúseného kovu, bočné osvetlenie, pokojné tmavé pozadie a priestor nad predmetom pre nadpis. Pomenovanie týchto vzťahov objasňuje zamýšľanú kompozíciu viac než všeobecná žiadosť o prémiový obrázok.\n\nTvorivý rozsah rodiny zahŕňa príbehovú ilustráciu, fotorealistické scény a priestorové vizuály s pokynmi pre materiál a osvetlenie. Výsledok vyzerajúci ako 3D je stále obrázkom, nie editovateľnou scénou 3D. Pri grafickom plagáte určte vizuálne vrstvy a ich interakciu: pozadie, ilustráciu alebo fotografiu, hierarchiu nadpisov a podporný text. V4 je určený pre čitateľné krátke a stredne dlhé frázy, ale dokončený pravopis a hierarchiu treba kontrolovať namiesto odvodzovania z názvu modelu.\n\nAktuálna referencia generovania povoľuje zadania do 10 000 znakov, jeden až šesť výstupov, náhodný seed a ovládanie preferovaných farieb aj farby pozadia. Voliteľné vlastné štýly alebo kompatibilné referenčné obrázky môžu usmerniť vzhľad s flexibilnou alebo presnou zhodou. Model neprijíma staršie ovládania V3 negative_prompt, kurátorované štýly, text_layout, artistic_level alebo no_text. Zamýšľaný konečný obrázok opíšte v pozitívnom zadaní a požiadavky na subjekt, rozloženie a farby uveďte výslovne. Pri generovaní podľa referenčného štýlu použite jeden až desať obrázkov PNG, JPG alebo WebP, spolu najviac 64 MB a každý pod 20 MB. Každá referencia potrebuje kratšiu stranu aspoň 256 pixelov, dlhšiu najviac 4 096 pixelov a rozlíšenie najviac 16 megapixelov. Použite buď tieto referencie, alebo kompatibilný uložený štýl, nie obe možnosti.\n\nRecraft dokumentuje samostatnú operáciu image-to-image pre V4. Spája existujúci obrázok a zadanie so silou od 0 do 1 na riadenie miery zmeny a v tejto operácii neprijíma ovládanie vlastných štýlov V4. Zdroj pripravte v limitoch obrazového vstupu výrobcu a určte vlastnosti, ktoré sa majú preniesť do nového výsledku. Pri väčšom konečnom vizuáli kontrolujte jemné detaily, výrez a písmo pri zamýšľanej veľkosti. Dodatočné rastrové detaily Pro túto kontrolu podporujú, kým obrázok zostáva generovanou interpretáciou dodaného tvorivého zadania. Pre image-to-image dodajte PNG, JPG, WebP alebo SVG pod 20 MB, najviac 16 megapixelov, s oboma stranami od 256 do 4 096 pixelov.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "524300a70e169137e5de111653ca5b62063f7d13f3d76bd02e10fbe5e6e572a7",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "sk",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Recraft: Recraft V4 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zavrieť\">×</button></div><div class=\"idline\"><span>Recraft /</span><code>recraft/recraft-v4-pro</code><button type=\"button\" id=\"copy-id\">Skopírovať ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sekcie karty modelu\"><button type=\"button\" data-card-jump=\"overview\">Úvod</button><button type=\"button\" data-card-jump=\"methods\">Vstupy a metódy</button><button type=\"button\" data-card-jump=\"pricing\">Cenník</button><button type=\"button\" data-card-jump=\"examples\">Príklady</button><button type=\"button\" data-card-jump=\"results\">Výsledky</button><button type=\"button\" data-card-jump=\"aliases\">Aliasy</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metódy API\"><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|recraft%2Frecraft-v4-pro\">Obrázky</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\">Úvod</h3><p class=\"mdesc-full\">Recraft V4 Pro generuje rastrové obrázky 2K pre podrobné kompozície, fotorealizmus, ilustráciu a tvorivú prácu určenú na tlač. Je edíciou V4 s vyšším rozlíšením, textovými zadaniami, voliteľnými štýlovými vstupmi a samostatným postupom image-to-image.</p><dl class=\"card-io\" data-card-io><div><dt>Povolené vstupy</dt><dd>Text · Obrázky</dd></div><div><dt>Výsledky</dt><dd>Obrázky</dd></div></dl><details class=\"card-about\"><summary>O modeli</summary><p class=\"note-s\" data-model-method-boundary>Tento opis pokrýva možnosti modelu. Dostupné vstupy, výstupy a voľby v Ailoot sú uvedené nižšie pre vybranú metódu.</p><div class=\"mabout\" id=\"m-about\"><p>Recraft V4 Pro je rastrový model s vyšším rozlíšením v rodine Recraft V4. V4 sa zameriava na vizuálny úsudok, vyváženú kompozíciu, súdržné farby a starostlivú interpretáciu tvorivého smeru. Výrobca určuje Pro pre jemnejšie detaily, realistickejšie zložité scény a rozsiahle produkčné vizuály. Použite ho na podrobnú ilustráciu, redakčný obrázok, koncept plagátu alebo iný vizuál, ktorý ťaží z väčšieho rastrového výsledku. Zostáva oddelený od neskoršieho modelu V4.1 a od výstupu SVG modelu V4 Pro Vector.</p><p>Presný kód výrobcu je recraftv4_pro. Dokumentovaný výstup je raster 2K v bezstratovom WebP alebo PNG: 2048 × 2048 pixelov pre štvorec, 2688 × 1536 pre 16:9 a 1664 × 2560 pre 2:3. Ďalšie podporované pomery majú vlastné rozmery. Zvoľte pomer strán pre zamýšľané rozloženie alebo presnú povolenú veľkosť; ľubovoľná pixelová veľkosť nie je súčasťou dokumentovaného kontraktu generovania. Štandardný V4 má menší rastrový výstup 1K, kým vektorové modely nemajú pevné pixelové rozlíšenie.</p><p>V4 môže interpretovať krátke zadanie na skúmanie alebo štruktúrované zadanie pre kontrolovaný výsledok. Pri konkrétnom umeleckom smerovaní návod výrobcu postupuje od subjektu a prostredia k rámovaniu, vlastnostiam, priestorovým vzťahom, osvetleniu, hĺbke a nálade. Pri redakčnom produktovom obrázku požadujte dramatickú zvislú fotografiu sochársky tvarovanej stoličky, povrchy z brúseného kovu, bočné osvetlenie, pokojné tmavé pozadie a priestor nad predmetom pre nadpis. Pomenovanie týchto vzťahov objasňuje zamýšľanú kompozíciu viac než všeobecná žiadosť o prémiový obrázok.</p><p>Tvorivý rozsah rodiny zahŕňa príbehovú ilustráciu, fotorealistické scény a priestorové vizuály s pokynmi pre materiál a osvetlenie. Výsledok vyzerajúci ako 3D je stále obrázkom, nie editovateľnou scénou 3D. Pri grafickom plagáte určte vizuálne vrstvy a ich interakciu: pozadie, ilustráciu alebo fotografiu, hierarchiu nadpisov a podporný text. V4 je určený pre čitateľné krátke a stredne dlhé frázy, ale dokončený pravopis a hierarchiu treba kontrolovať namiesto odvodzovania z názvu modelu.</p><p>Aktuálna referencia generovania povoľuje zadania do 10 000 znakov, jeden až šesť výstupov, náhodný seed a ovládanie preferovaných farieb aj farby pozadia. Voliteľné vlastné štýly alebo kompatibilné referenčné obrázky môžu usmerniť vzhľad s flexibilnou alebo presnou zhodou. Model neprijíma staršie ovládania V3 negative_prompt, kurátorované štýly, text_layout, artistic_level alebo no_text. Zamýšľaný konečný obrázok opíšte v pozitívnom zadaní a požiadavky na subjekt, rozloženie a farby uveďte výslovne. Pri generovaní podľa referenčného štýlu použite jeden až desať obrázkov PNG, JPG alebo WebP, spolu najviac 64 MB a každý pod 20 MB. Každá referencia potrebuje kratšiu stranu aspoň 256 pixelov, dlhšiu najviac 4 096 pixelov a rozlíšenie najviac 16 megapixelov. Použite buď tieto referencie, alebo kompatibilný uložený štýl, nie obe možnosti.</p><p>Recraft dokumentuje samostatnú operáciu image-to-image pre V4. Spája existujúci obrázok a zadanie so silou od 0 do 1 na riadenie miery zmeny a v tejto operácii neprijíma ovládanie vlastných štýlov V4. Zdroj pripravte v limitoch obrazového vstupu výrobcu a určte vlastnosti, ktoré sa majú preniesť do nového výsledku. Pri väčšom konečnom vizuáli kontrolujte jemné detaily, výrez a písmo pri zamýšľanej veľkosti. Dodatočné rastrové detaily Pro túto kontrolu podporujú, kým obrázok zostáva generovanou interpretáciou dodaného tvorivého zadania. Pre image-to-image dodajte PNG, JPG, WebP alebo SVG pod 20 MB, najviac 16 megapixelov, s oboma stranami od 256 do 4 096 pixelov.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Dostupné v Ailoot · vstupy a metódy</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Obrázky</b> <code>POST /v1/images/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Vstup</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Výstup</dt><dd><code>image</code></dd></div><div><dt>Výstupný formát</dt><dd>Súbor obrázka</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Pole</th><th>Typ</th><th>Požiadavka</th><th>Hodnoty a limity</th><th>Predvolené</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Povinné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>recraft/recraft-v4-pro</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Povinné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>Minimálna dĺžka: 1</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"saved_exact_supplier_endpoint\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">n</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>integer</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>Minimum: 1</div><div>Maximum: 6</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"saved_exact_supplier_endpoint\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>1:1, 4:3, 3:4, 16:9, 9:16, auto</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"saved_exact_supplier_endpoint\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>array</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>Minimálny počet položiek: 0</div><div>Maximálny počet položiek: 1</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinácie vstupných podkladov</summary><p class=\"note-s\"><b>Z textu na obrázok</b> · Povinné: prompt</p></details><details class=\"note-s\" data-method-contract><summary>Parametre a životný cyklus metódy</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Špecifikácia</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=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</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=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</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=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>text, image</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>aspect_ratio, n, input_references</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>exact_supported_parameters</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>{&quot;aspect_ratio&quot;:{&quot;type&quot;:&quot;enum&quot;,&quot;values&quot;:[&quot;1:1&quot;,&quot;4:3&quot;,&quot;3:4&quot;,&quot;16:9&quot;,&quot;9:16&quot;,&quot;auto&quot;]},&quot;n&quot;:{&quot;type&quot;:&quot;range&quot;,&quot;min&quot;:1,&quot;max&quot;:6},&quot;input_references&quot;:{&quot;type&quot;:&quot;range&quot;,&quot;min&quot;:0,&quot;max&quot;:1}}</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>reference_material_rule</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>Iba skutočné referenčné obrázky zákazníka; vzťahujú sa na ne podmienky koncového bodu poskytovateľa.</td></tr></tbody></table></div><p>Aliasy metódy: <code>/v1/images</code></p><p>Životný cyklus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · skutočne vrátené task_id alebo záznam v knižnici médií</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><p class=\"note-s\">Použite presný model a zdokumentované vstupné polia.</p><p class=\"note-s\">Zachovajte celú odpoveď, každý skutočný výstup a pôvodné vrátené ID.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cenník</h3><div class=\"card-result-process\" data-billing-basis><h5>Ako sa vypočíta konečný poplatok</h5><p class=\"note-s\">Zobrazené sadzby slúžia na odhad nákladov pred generovaním. Konečný poplatok sa vypočíta z nákladov zaznamenaných pri pôvodnom generovaní. Namerané trvanie výstupu a predpokladané množstvá nepredstavujú konečné účtované množstvo.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.</p><dl data-price-conditions><dt>Rýchly režim</dt><dd>Neuvedené <span class=\"note-s\">Keď je zvolený rýchly režim</span></dd><dt>Režim Flex</dt><dd>Neuvedené <span class=\"note-s\">Keď je zvolený režim flex</span></dd><dt>Maximálna úroveň uvažovania</dt><dd>Neuvedené <span class=\"note-s\">Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Odhadované sadzby na porovnanie</h4><h4>Ceny podľa konfigurácie</h4><p class=\"note-s\">Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurácia</th><th>Sadzobník</th><th>Odhadované množstvo</th><th>Účtovacia jednotka</th><th>Poplatok</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurácia\" scope=\"row\"><span class=\"card-cell-label\">Konfigurácia</span>Základné sadzby za tokeny</th><td data-cell-label=\"Sadzobník\"><span class=\"card-cell-label\">Sadzobník</span>Základná sadzba</td><td data-cell-label=\"Odhadované množstvo\"><span class=\"card-cell-label\">Odhadované množstvo</span>—</td><td data-cell-label=\"Účtovacia jednotka\"><span class=\"card-cell-label\">Účtovacia jednotka</span>—</td><td data-cell-label=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Vstup · Vstupné tokeny · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Výstup · Výstupné tokeny · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Vstup · Čítanie cache · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Vstup · Zápis do cache · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Vstup · Zápis do cache, 1 hod · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div></td></tr><tr><th data-cell-label=\"Konfigurácia\" scope=\"row\"><span class=\"card-cell-label\">Konfigurácia</span>Ultra</th><td data-cell-label=\"Sadzobník\"><span class=\"card-cell-label\">Sadzobník</span>—</td><td data-cell-label=\"Odhadované množstvo\"><span class=\"card-cell-label\">Odhadované množstvo</span>—</td><td data-cell-label=\"Účtovacia jednotka\"><span class=\"card-cell-label\">Účtovacia jednotka</span>za výstupný obrázok</td><td data-cell-label=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Výstup · výstup obrázka · Odhad iba na porovnanie</span> <b>$0.5</b> <span class=\"price-unit\">za výstupný obrázok</span></div></td></tr><tr><th data-cell-label=\"Konfigurácia\" scope=\"row\"><span class=\"card-cell-label\">Konfigurácia</span>Odhadované náklady na generovanie</th><td data-cell-label=\"Sadzobník\"><span class=\"card-cell-label\">Sadzobník</span>—</td><td data-cell-label=\"Odhadované množstvo\"><span class=\"card-cell-label\">Odhadované množstvo</span>odhad pre jedno generovanie</td><td data-cell-label=\"Účtovacia jednotka\"><span class=\"card-cell-label\">Účtovacia jednotka</span>—</td><td data-cell-label=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Výstup · Odhadované náklady na generovanie · Odhad iba na porovnanie</span> <b>$0.5</b> <span class=\"price-unit\">odhad pred generovaním</span></div><p class=\"note-s\">Tento odhad nepredstavuje dodatočný poplatok ani pevnú sadzbu za dokončené generovanie.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. <a href=\"/docs/sk/billing/reserve/\">Ako funguje rezervácia a vyúčtovanie →</a></p><div data-declared-reference-pricing><h4>Podrobnosti referenčnej tarify</h4><p class=\"note-s\">Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Cenové konfigurácie obrázkov</summary><h4>Ceny podľa konfigurácie</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurácia</th><th>Podmienky účtovania</th><th>Poplatok</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurácia\" scope=\"row\"><span class=\"card-cell-label\">Konfigurácia</span>Výstupný obrázok</th><td data-cell-label=\"Podmienky účtovania\"><span class=\"card-cell-label\">Podmienky účtovania</span>Nie je deklarovaný žiadny cenový variant.</td><td data-cell-label=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Výstup · Výstupný obrázok</span> <b>$0.5</b> <span class=\"price-unit\">za obrázok</span></div><p class=\"note-s\">Ekvivalentné položky opisujú rovnaký poplatok; nepridávajú druhý poplatok.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Príklady požiadaviek</h3><h4>Ailoot Ultra · Obrázky</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianty kódu\"><button class=\"cg-tab\" id=\"model-code-2536-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2536-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button><button class=\"cg-tab\" id=\"model-code-2536-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2536-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button><button class=\"cg-tab\" id=\"model-code-2536-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2536-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Node.js SDK</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Skopírovať kód\"><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-2536-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2536-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;recraft/recraft-v4-pro&#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 class=\"cg-pane\" id=\"model-code-2536-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2536-tab-1\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\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;)\n\nrequest={&#39;model&#39;: &#39;recraft/recraft-v4-pro&#39;, &#39;prompt&#39;: &#39;a red panda astronaut floating in space, studio lighting&#39;}\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nresult=client.images.generate(**request)\nPath(&quot;sdk-result.txt&quot;).write_text(str(result),encoding=&quot;utf-8&quot;)\nsave_images([{&quot;b64_json&quot;:getattr(item,&quot;b64_json&quot;,None),&quot;url&quot;:getattr(item,&quot;url&quot;,None)} for item in result.data])\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2536-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2536-tab-2\" hidden><pre data-lang=\"js\"><code>import OpenAI from &quot;openai&quot;;\nimport { readFileSync, writeFileSync } from &quot;node:fs&quot;;\nconst key=process.env.AILOOT_API_KEY;\nif(!key) throw new Error(&quot;Set your actual Ailoot API key&quot;);\nconst client=new OpenAI({baseURL:&quot;https://api.ailoot.ai/v1&quot;,apiKey:key,maxRetries:0});\nconst request={&quot;model&quot;: &quot;recraft/recraft-v4-pro&quot;, &quot;prompt&quot;: &quot;a red panda astronaut floating in space, studio lighting&quot;};\nconst result=await client.images.generate(request);\nwriteFileSync(&quot;sdk-result.json&quot;,JSON.stringify(result,null,2));\nif(!result.data?.length) throw new Error(&quot;No completed images&quot;);\nfor(let index=0;index&lt;result.data.length;index++) {\n  const item=result.data[index];let encoded=item.b64_json,uri=item.url||&quot;&quot;,raw;\n  if(!encoded &amp;&amp; uri.startsWith(&quot;data:image/&quot;)) {\n    const comma=uri.indexOf(&quot;,&quot;);if(comma&lt;0 || !uri.slice(0,comma).includes(&quot;;base64&quot;)) throw new Error(&quot;Unsupported image data URI&quot;);\n    encoded=uri.slice(comma+1);\n  }\n  if(encoded) {\n    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error(&quot;Invalid Base64&quot;);\n    raw=Buffer.from(encoded,&quot;base64&quot;);\n  } else if(uri) {\n    const u=new URL(uri,&quot;https://api.ailoot.ai&quot;);\n    if(u.protocol!==&quot;https:&quot; || u.username || u.password) throw new Error(&quot;Invalid returned URL&quot;);\n    const owned=u.origin===&quot;https://api.ailoot.ai&quot; &amp;&amp; u.pathname.startsWith(&quot;/v1/media/assets/&quot;) &amp;&amp; u.pathname.endsWith(&quot;/content&quot;);\n    const response=await fetch(u,{headers:owned?{Authorization:&quot;Bearer &quot;+key}:{},redirect:&quot;manual&quot;});\n    if(!response.ok) throw new Error(&quot;Image content download failed: &quot;+response.status);\n    raw=Buffer.from(await response.arrayBuffer());\n  } else throw new Error(&quot;Image has neither bytes nor URL&quot;);\n  if(!raw.length) throw new Error(&quot;Empty image result&quot;);\n  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?&quot;png&quot;:raw[0]===255&amp;&amp;raw[1]===216?&quot;jpg&quot;:raw.toString(&quot;ascii&quot;,0,4)===&quot;RIFF&quot;&amp;&amp;raw.toString(&quot;ascii&quot;,8,12)===&quot;WEBP&quot;?&quot;webp&quot;:raw.toString(&quot;utf8&quot;).trimStart().startsWith(&quot;&lt;svg&quot;)||raw.toString(&quot;utf8&quot;).trimStart().startsWith(&quot;&lt;?xml&quot;)?&quot;svg&quot;:&quot;bin&quot;;\n  writeFileSync(`image-${index}.${ext}`,raw);\n}\nconsole.log(&quot;Every returned image saved; sdk-result.json retains complete metadata&quot;);\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Prijať a uložiť výsledky</h3><h4>Ailoot Ultra · Obrázky</h4><p class=\"note-s\">Stiahnite každý vrátený obrázok alebo uložte jeho obsah Base64</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><div class=\"card-result-process\" data-all-results><h5>Uchovať všetky dokončené výsledky</h5><p class=\"note-s\">Uložte každý dokončený obrázok; stiahnite obsah z každej vrátenej URL alebo dekódujte jeho obsah Base64.</p><p class=\"note-s\">Zachovajte každú dátovú položku a úplnú spotrebu; prevezmite do vlastníctva a uložte všetky skutočne vrátené obrázky. Žiadne vymyslené URL ani ID.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Ak treba overiť pôvodnú odpoveď</h5><p class=\"note-s\">Ak je potrebné skontrolovať výsledok generovania alebo úpravy obrázka, uchovajte pôvodné operation_id/X-Client-Request-ID a vrátené informácie o výsledku. Existujúce vlastné výsledky obnovte cez knižnicu médií pomocou skutočných hodnôt task_id alebo asset_id. Požiadavku na generovanie/úpravu znova neodosielajte ani nevytvárajte URL na priebežné zisťovanie stavu z operation_id.</p></div><details class=\"card-about\" data-output-fields><summary>Polia odpovede</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Pole</th><th>Typ</th></tr></thead><tbody><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">created</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">data[].url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">data[].b64_json</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>base64 string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>object</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasy</h3><h4>Aliasy modelov</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=recraft%2Frecraft-v4-pro&amp;route=Ultra&amp;caller=recraft%2Frecraft-v4-pro&amp;fmt=images\"><code>recraft/recraft-v4-pro</code></a></span></p><h4>Aliasy ciest metód</h4><p class=\"note-s\"><code>/v1/images</code></p><h4>Súvisiace ID na volanie</h4><p class=\"note-s\"><a href=\"#m=recraft%2Frecraft-v4-pro&amp;route=Ultra&amp;caller=recraft%2Frecraft-v4-pro&amp;fmt=images\"><code>recraft/recraft-v4-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "recraft/recraft-v4-pro",
        "fmt": "images",
        "http": "POST",
        "path": "/v1/images/generations",
        "request_model_id": "recraft/recraft-v4-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|images|/v1/images/generations|recraft%2Frecraft-v4-pro",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Zobrazené sadzby slúžia na odhad nákladov pred generovaním. Konečný poplatok sa vypočíta z nákladov zaznamenaných pri pôvodnom generovaní. Namerané trvanie výstupu a predpokladané množstvá nepredstavujú konečné účtované množstvo.",
          "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 every data item and complete usage; own and save all actual returned images. No invented URLs or IDs.",
            "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": "Ak je potrebné skontrolovať výsledok generovania alebo úpravy obrázka, uchovajte pôvodné operation_id/X-Client-Request-ID a vrátené informácie o výsledku. Existujúce vlastné výsledky obnovte cez knižnicu médií pomocou skutočných hodnôt task_id alebo asset_id. Požiadavku na generovanie/úpravu znova neodosielajte ani nevytvárajte URL na priebežné zisťovanie stavu z operation_id."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_image",
                "required": [
                  "prompt"
                ]
              }
            ],
            "outputs": {
              "all_results": "Zachovajte každú dátovú položku a úplnú spotrebu; prevezmite do vlastníctva a uložte všetky skutočne vrátené obrázky. Žiadne vymyslené URL ani ID.",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": "base64 string"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "actual validated raster MIME"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "enum": [
                  "recraft/recraft-v4-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "maximum": 6,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "enum": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "16:9",
                  "9:16",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "material_rule": "Actual customer HTTP(S) image URL or base64 data URI; no invented reference URL.",
                "maximum_items": 1,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "4:3",
                    "3:4",
                    "16:9",
                    "9:16",
                    "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": 1,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "recraft/recraft-v4-pro"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 6,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "recraft/recraft-v4-pro",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "hints": [
            "Použite presný model a zdokumentované vstupné polia.",
            "Zachovajte celú odpoveď, každý skutočný výstup a pôvodné vrátené ID."
          ],
          "input": {
            "content_type": "application/json",
            "exact_supported_parameters": {
              "aspect_ratio": {
                "type": "enum",
                "values": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "16:9",
                  "9:16",
                  "auto"
                ]
              },
              "input_references": {
                "max": 1,
                "min": 0,
                "type": "range"
              },
              "n": {
                "max": 6,
                "min": 1,
                "type": "range"
              }
            },
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "aspect_ratio",
              "n",
              "input_references"
            ],
            "reference_material_rule": "Iba skutočné referenčné obrázky zákazníka; vzťahujú sa na ne podmienky koncového bodu poskytovateľa.",
            "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": "skutočne vrátené task_id alebo záznam v knižnici médií",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "If an image generation or edit result requires a check, keep the original operation_id/X-Client-Request-ID and returned result information. Recover existing owned results through the media library using actual task_id or asset_id values. Do not resubmit the generation/edit request or construct a polling URL from operation_id."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "method_aliases": [
            "/v1/images"
          ],
          "operation_modes": [
            "text_to_image",
            "reference_guided_image"
          ],
          "output": {
            "all_results": true,
            "family": "image",
            "format": "actual validated raster MIME",
            "result": "every actual owned URL or b64_json"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.5",
                "amount_unit": "usd_per_image_output",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.5",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "basis": "Tento odhad nepredstavuje dodatočný poplatok ani pevnú sadzbu za dokončené generovanie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Odhadované náklady na generovanie",
            "units": [
              {
                "amount": "0.5",
                "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.5",
                "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': 'recraft/recraft-v4-pro', '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": "from openai import OpenAI\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\")\n\nrequest={'model': 'recraft/recraft-v4-pro', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.images.generate(**request)\nPath(\"sdk-result.txt\").write_text(str(result),encoding=\"utf-8\")\nsave_images([{\"b64_json\":getattr(item,\"b64_json\",None),\"url\":getattr(item,\"url\",None)} for item in result.data])\n",
            "label": "Python SDK · exact payload/save all outputs",
            "language": "python"
          },
          {
            "code": "import OpenAI from \"openai\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nconst key=process.env.AILOOT_API_KEY;\nif(!key) throw new Error(\"Set your actual Ailoot API key\");\nconst client=new OpenAI({baseURL:\"https://api.ailoot.ai/v1\",apiKey:key,maxRetries:0});\nconst request={\"model\": \"recraft/recraft-v4-pro\", \"prompt\": \"a red panda astronaut floating in space, studio lighting\"};\nconst result=await client.images.generate(request);\nwriteFileSync(\"sdk-result.json\",JSON.stringify(result,null,2));\nif(!result.data?.length) throw new Error(\"No completed images\");\nfor(let index=0;index<result.data.length;index++) {\n  const item=result.data[index];let encoded=item.b64_json,uri=item.url||\"\",raw;\n  if(!encoded && uri.startsWith(\"data:image/\")) {\n    const comma=uri.indexOf(\",\");if(comma<0 || !uri.slice(0,comma).includes(\";base64\")) throw new Error(\"Unsupported image data URI\");\n    encoded=uri.slice(comma+1);\n  }\n  if(encoded) {\n    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error(\"Invalid Base64\");\n    raw=Buffer.from(encoded,\"base64\");\n  } else if(uri) {\n    const u=new URL(uri,\"https://api.ailoot.ai\");\n    if(u.protocol!==\"https:\" || u.username || u.password) throw new Error(\"Invalid returned URL\");\n    const owned=u.origin===\"https://api.ailoot.ai\" && u.pathname.startsWith(\"/v1/media/assets/\") && u.pathname.endsWith(\"/content\");\n    const response=await fetch(u,{headers:owned?{Authorization:\"Bearer \"+key}:{},redirect:\"manual\"});\n    if(!response.ok) throw new Error(\"Image content download failed: \"+response.status);\n    raw=Buffer.from(await response.arrayBuffer());\n  } else throw new Error(\"Image has neither bytes nor URL\");\n  if(!raw.length) throw new Error(\"Empty image result\");\n  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?\"png\":raw[0]===255&&raw[1]===216?\"jpg\":raw.toString(\"ascii\",0,4)===\"RIFF\"&&raw.toString(\"ascii\",8,12)===\"WEBP\"?\"webp\":raw.toString(\"utf8\").trimStart().startsWith(\"<svg\")||raw.toString(\"utf8\").trimStart().startsWith(\"<?xml\")?\"svg\":\"bin\";\n  writeFileSync(`image-${index}.${ext}`,raw);\n}\nconsole.log(\"Every returned image saved; sdk-result.json retains complete metadata\");\n",
            "label": "Node SDK · exact payload/save all outputs",
            "language": "js"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact model and documented input fields.",
          "Keep the complete response, every actual output and original returned IDs."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Картинки",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/images"
        ],
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.5",
                "amount_unit": "usd_per_image_output",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.5",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "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.5",
                "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.5",
                "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": "recraft/recraft-v4-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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.5",
            "amount_unit": "usd_per_image_output",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_output",
            "label": "image output",
            "native_amount_usd_per_unit": "0.5",
            "native_quantity": 1,
            "public_unit_label": "per image output",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "image_output"
          },
          {
            "amount": "0.5",
            "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.5",
            "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": "recraft/recraft-v4-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "18c09667ef60154fd10d193fc0384a4a5444fe02f5c6b7151da8bfcede356c85",
    "input_html_sha256": "3cdfe3037ca190dacb9d570120b3723fdcdb1dd58c1b2a255c0d41f03a9e684d",
    "private_audit_sha256": "05e8685d520b86526045254c511033ad637d460cf0180a43489e6d6f7c3807c2",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sk/recraft-recraft-v4-pro/",
    "description": "Recraft V4 Pro generuje rastrové obrázky 2K pre podrobné kompozície, fotorealizmus, ilustráciu a tvorivú prácu určenú na tlač. Je edíciou V4 s vyšším rozlíšením, textovými zadaniami, voliteľnými štýlovými vstupmi a samostatným postupom image-to-image.",
    "locale": "sk",
    "md_url": "https://ailoot.ai/models/sk/recraft-recraft-v4-pro/index.md",
    "title": "Recraft: Recraft V4 Pro — Ailoot",
    "url": "https://ailoot.ai/models/sk/recraft-recraft-v4-pro/"
  },
  "rawModel": {
    "about": "Recraft V4 Pro je rastrový model s vyšším rozlíšením v rodine Recraft V4. V4 sa zameriava na vizuálny úsudok, vyváženú kompozíciu, súdržné farby a starostlivú interpretáciu tvorivého smeru. Výrobca určuje Pro pre jemnejšie detaily, realistickejšie zložité scény a rozsiahle produkčné vizuály. Použite ho na podrobnú ilustráciu, redakčný obrázok, koncept plagátu alebo iný vizuál, ktorý ťaží z väčšieho rastrového výsledku. Zostáva oddelený od neskoršieho modelu V4.1 a od výstupu SVG modelu V4 Pro Vector.\n\nPresný kód výrobcu je recraftv4_pro. Dokumentovaný výstup je raster 2K v bezstratovom WebP alebo PNG: 2048 × 2048 pixelov pre štvorec, 2688 × 1536 pre 16:9 a 1664 × 2560 pre 2:3. Ďalšie podporované pomery majú vlastné rozmery. Zvoľte pomer strán pre zamýšľané rozloženie alebo presnú povolenú veľkosť; ľubovoľná pixelová veľkosť nie je súčasťou dokumentovaného kontraktu generovania. Štandardný V4 má menší rastrový výstup 1K, kým vektorové modely nemajú pevné pixelové rozlíšenie.\n\nV4 môže interpretovať krátke zadanie na skúmanie alebo štruktúrované zadanie pre kontrolovaný výsledok. Pri konkrétnom umeleckom smerovaní návod výrobcu postupuje od subjektu a prostredia k rámovaniu, vlastnostiam, priestorovým vzťahom, osvetleniu, hĺbke a nálade. Pri redakčnom produktovom obrázku požadujte dramatickú zvislú fotografiu sochársky tvarovanej stoličky, povrchy z brúseného kovu, bočné osvetlenie, pokojné tmavé pozadie a priestor nad predmetom pre nadpis. Pomenovanie týchto vzťahov objasňuje zamýšľanú kompozíciu viac než všeobecná žiadosť o prémiový obrázok.\n\nTvorivý rozsah rodiny zahŕňa príbehovú ilustráciu, fotorealistické scény a priestorové vizuály s pokynmi pre materiál a osvetlenie. Výsledok vyzerajúci ako 3D je stále obrázkom, nie editovateľnou scénou 3D. Pri grafickom plagáte určte vizuálne vrstvy a ich interakciu: pozadie, ilustráciu alebo fotografiu, hierarchiu nadpisov a podporný text. V4 je určený pre čitateľné krátke a stredne dlhé frázy, ale dokončený pravopis a hierarchiu treba kontrolovať namiesto odvodzovania z názvu modelu.\n\nAktuálna referencia generovania povoľuje zadania do 10 000 znakov, jeden až šesť výstupov, náhodný seed a ovládanie preferovaných farieb aj farby pozadia. Voliteľné vlastné štýly alebo kompatibilné referenčné obrázky môžu usmerniť vzhľad s flexibilnou alebo presnou zhodou. Model neprijíma staršie ovládania V3 negative_prompt, kurátorované štýly, text_layout, artistic_level alebo no_text. Zamýšľaný konečný obrázok opíšte v pozitívnom zadaní a požiadavky na subjekt, rozloženie a farby uveďte výslovne. Pri generovaní podľa referenčného štýlu použite jeden až desať obrázkov PNG, JPG alebo WebP, spolu najviac 64 MB a každý pod 20 MB. Každá referencia potrebuje kratšiu stranu aspoň 256 pixelov, dlhšiu najviac 4 096 pixelov a rozlíšenie najviac 16 megapixelov. Použite buď tieto referencie, alebo kompatibilný uložený štýl, nie obe možnosti.\n\nRecraft dokumentuje samostatnú operáciu image-to-image pre V4. Spája existujúci obrázok a zadanie so silou od 0 do 1 na riadenie miery zmeny a v tejto operácii neprijíma ovládanie vlastných štýlov V4. Zdroj pripravte v limitoch obrazového vstupu výrobcu a určte vlastnosti, ktoré sa majú preniesť do nového výsledku. Pri väčšom konečnom vizuáli kontrolujte jemné detaily, výrez a písmo pri zamýšľanej veľkosti. Dodatočné rastrové detaily Pro túto kontrolu podporujú, kým obrázok zostáva generovanou interpretáciou dodaného tvorivého zadania. Pre image-to-image dodajte PNG, JPG, WebP alebo SVG pod 20 MB, najviac 16 megapixelov, s oboma stranami od 256 do 4 096 pixelov.",
    "alias_of": null,
    "aliases": [],
    "author": "Recraft",
    "available": null,
    "canonical_model": "recraft/recraft-v4-pro",
    "capabilities": {
      "context_length": 65536,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "image"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.5",
            "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.5",
            "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": "Úplný cenník konfigurácie nájdete v podrobnostiach."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "a9d07f22b268672412dfcf4c",
        "label": "Cenové konfigurácie obrázkov",
        "profiles": [
          {
            "basis": "Ekvivalentné položky opisujú rovnaký poplatok; nepridávajú druhý poplatok.",
            "dimensions": {
              "conditions": "Nie je deklarovaný žiadny cenový variant."
            },
            "label": "Výstupný obrázok",
            "units": [
              {
                "amount": "0.5",
                "amount_unit": "usd_per_image",
                "billing_input": false,
                "key": "output_image",
                "label": "Output image",
                "public_unit_label": "per image",
                "quantity": 1,
                "rate_role": "typed_image_reference",
                "side": "out",
                "unit": "image"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "images"
    ],
    "id": "recraft/recraft-v4-pro",
    "input": [
      "text",
      "image"
    ],
    "kind": "image",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Zobrazené sadzby slúžia na odhad nákladov pred generovaním. Konečný poplatok sa vypočíta z nákladov zaznamenaných pri pôvodnom generovaní. Namerané trvanie výstupu a predpokladané množstvá nepredstavujú konečné účtované množstvo.",
          "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 every data item and complete usage; own and save all actual returned images. No invented URLs or IDs.",
            "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": "Ak je potrebné skontrolovať výsledok generovania alebo úpravy obrázka, uchovajte pôvodné operation_id/X-Client-Request-ID a vrátené informácie o výsledku. Existujúce vlastné výsledky obnovte cez knižnicu médií pomocou skutočných hodnôt task_id alebo asset_id. Požiadavku na generovanie/úpravu znova neodosielajte ani nevytvárajte URL na priebežné zisťovanie stavu z operation_id."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_image",
                "required": [
                  "prompt"
                ]
              }
            ],
            "outputs": {
              "all_results": "Zachovajte každú dátovú položku a úplnú spotrebu; prevezmite do vlastníctva a uložte všetky skutočne vrátené obrázky. Žiadne vymyslené URL ani ID.",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": "base64 string"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "actual validated raster MIME"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "enum": [
                  "recraft/recraft-v4-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "maximum": 6,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "enum": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "16:9",
                  "9:16",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "material_rule": "Actual customer HTTP(S) image URL or base64 data URI; no invented reference URL.",
                "maximum_items": 1,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "4:3",
                    "3:4",
                    "16:9",
                    "9:16",
                    "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": 1,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "recraft/recraft-v4-pro"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 6,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "recraft/recraft-v4-pro",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "hints": [
            "Použite presný model a zdokumentované vstupné polia.",
            "Zachovajte celú odpoveď, každý skutočný výstup a pôvodné vrátené ID."
          ],
          "input": {
            "content_type": "application/json",
            "exact_supported_parameters": {
              "aspect_ratio": {
                "type": "enum",
                "values": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "16:9",
                  "9:16",
                  "auto"
                ]
              },
              "input_references": {
                "max": 1,
                "min": 0,
                "type": "range"
              },
              "n": {
                "max": 6,
                "min": 1,
                "type": "range"
              }
            },
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "aspect_ratio",
              "n",
              "input_references"
            ],
            "reference_material_rule": "Iba skutočné referenčné obrázky zákazníka; vzťahujú sa na ne podmienky koncového bodu poskytovateľa.",
            "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": "skutočne vrátené task_id alebo záznam v knižnici médií",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "If an image generation or edit result requires a check, keep the original operation_id/X-Client-Request-ID and returned result information. Recover existing owned results through the media library using actual task_id or asset_id values. Do not resubmit the generation/edit request or construct a polling URL from operation_id."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "method_aliases": [
            "/v1/images"
          ],
          "operation_modes": [
            "text_to_image",
            "reference_guided_image"
          ],
          "output": {
            "all_results": true,
            "family": "image",
            "format": "actual validated raster MIME",
            "result": "every actual owned URL or b64_json"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.5",
                "amount_unit": "usd_per_image_output",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.5",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "basis": "Tento odhad nepredstavuje dodatočný poplatok ani pevnú sadzbu za dokončené generovanie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Odhadované náklady na generovanie",
            "units": [
              {
                "amount": "0.5",
                "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.5",
                "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': 'recraft/recraft-v4-pro', '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": "from openai import OpenAI\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\")\n\nrequest={'model': 'recraft/recraft-v4-pro', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.images.generate(**request)\nPath(\"sdk-result.txt\").write_text(str(result),encoding=\"utf-8\")\nsave_images([{\"b64_json\":getattr(item,\"b64_json\",None),\"url\":getattr(item,\"url\",None)} for item in result.data])\n",
            "label": "Python SDK · exact payload/save all outputs",
            "language": "python"
          },
          {
            "code": "import OpenAI from \"openai\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nconst key=process.env.AILOOT_API_KEY;\nif(!key) throw new Error(\"Set your actual Ailoot API key\");\nconst client=new OpenAI({baseURL:\"https://api.ailoot.ai/v1\",apiKey:key,maxRetries:0});\nconst request={\"model\": \"recraft/recraft-v4-pro\", \"prompt\": \"a red panda astronaut floating in space, studio lighting\"};\nconst result=await client.images.generate(request);\nwriteFileSync(\"sdk-result.json\",JSON.stringify(result,null,2));\nif(!result.data?.length) throw new Error(\"No completed images\");\nfor(let index=0;index<result.data.length;index++) {\n  const item=result.data[index];let encoded=item.b64_json,uri=item.url||\"\",raw;\n  if(!encoded && uri.startsWith(\"data:image/\")) {\n    const comma=uri.indexOf(\",\");if(comma<0 || !uri.slice(0,comma).includes(\";base64\")) throw new Error(\"Unsupported image data URI\");\n    encoded=uri.slice(comma+1);\n  }\n  if(encoded) {\n    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error(\"Invalid Base64\");\n    raw=Buffer.from(encoded,\"base64\");\n  } else if(uri) {\n    const u=new URL(uri,\"https://api.ailoot.ai\");\n    if(u.protocol!==\"https:\" || u.username || u.password) throw new Error(\"Invalid returned URL\");\n    const owned=u.origin===\"https://api.ailoot.ai\" && u.pathname.startsWith(\"/v1/media/assets/\") && u.pathname.endsWith(\"/content\");\n    const response=await fetch(u,{headers:owned?{Authorization:\"Bearer \"+key}:{},redirect:\"manual\"});\n    if(!response.ok) throw new Error(\"Image content download failed: \"+response.status);\n    raw=Buffer.from(await response.arrayBuffer());\n  } else throw new Error(\"Image has neither bytes nor URL\");\n  if(!raw.length) throw new Error(\"Empty image result\");\n  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?\"png\":raw[0]===255&&raw[1]===216?\"jpg\":raw.toString(\"ascii\",0,4)===\"RIFF\"&&raw.toString(\"ascii\",8,12)===\"WEBP\"?\"webp\":raw.toString(\"utf8\").trimStart().startsWith(\"<svg\")||raw.toString(\"utf8\").trimStart().startsWith(\"<?xml\")?\"svg\":\"bin\";\n  writeFileSync(`image-${index}.${ext}`,raw);\n}\nconsole.log(\"Every returned image saved; sdk-result.json retains complete metadata\");\n",
            "label": "Node SDK · exact payload/save all outputs",
            "language": "js"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact model and documented input fields.",
          "Keep the complete response, every actual output and original returned IDs."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Картинки",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/images"
        ],
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.5",
                "amount_unit": "usd_per_image_output",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.5",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "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.5",
                "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.5",
                "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": "recraft/recraft-v4-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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.5",
            "amount_unit": "usd_per_image_output",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_output",
            "label": "image output",
            "native_amount_usd_per_unit": "0.5",
            "native_quantity": 1,
            "public_unit_label": "per image output",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "image_output"
          },
          {
            "amount": "0.5",
            "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.5",
            "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": "recraft/recraft-v4-pro",
        "request_model_id": "recraft/recraft-v4-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "Recraft: Recraft V4 Pro",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.5,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.5,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "output_family": "raster",
          "per_actual_generated_image": true,
          "pro_raster_resolution": "2K",
          "quality": "pro",
          "units_per_usd": 1000
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.50",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "output_family": "raster",
              "per_actual_generated_image": true,
              "pro_raster_resolution": "2K",
              "quality": "pro",
              "units_per_usd": 1000
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "adds_to_per_image_base": true,
          "applies_only_where_exact_maker_method_accepts_style_references": true,
          "once_per_request_not_per_output": true,
          "only_when_generating_with_style_reference_creates_style": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.010",
            "amount_unit": "usd_per_request",
            "conditions": {
              "adds_to_per_image_base": true,
              "applies_only_where_exact_maker_method_accepts_style_references": true,
              "once_per_request_not_per_output": true,
              "only_when_generating_with_style_reference_creates_style": true
            },
            "key": "style_creation_surcharge",
            "label": "style creation surcharge",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "request"
          }
        ]
      }
    ],
    "public_id": "recraft/recraft-v4-pro",
    "short": "Recraft V4 Pro generuje rastrové obrázky 2K pre podrobné kompozície, fotorealizmus, ilustráciu a tvorivú prácu určenú na tlač. Je edíciou V4 s vyšším rozlíšením, textovými zadaniami, voliteľnými štýlovými vstupmi a samostatným postupom image-to-image."
  },
  "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": "Recraft V4 Pro generuje rastrové obrázky 2K pre podrobné kompozície, fotorealizmus, ilustráciu a tvorivú prácu určenú na tlač. Je edíciou V4 s vyšším rozlíšením, textovými zadaniami, voliteľnými štýlovými vstupmi a samostatným postupom image-to-image.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "6f3a137851b3de5fb1e73befdf12e5d2fec9d1b10220f0324593788bdf04bbb3",
    "renderer_sha256": "94893ba0fa4d7b7d32370787b705f436a4c2569f84ec7b33063549adc74b07e0"
  },
  "sourceRevision": "95d65a3ae3e0c7446993023aa42245862a122825d5735df793545a8355146881"
}
