{
  "aboutHtml": "<p>Suno yra muzikos generavimo paslauga, paverčianti raštu išdėstytą idėją dainomis. Dokumentuotoje automatinėje kūrimo eigoje pateikiamas trumpas numatytos muzikos aprašymas ir pasirenkama, ar ji bus instrumentinė, tada sugeneruojamos dvi dainos. Aprašu nustatykite temą, nuotaiką ir muzikinę kryptį, kurią norite girdėti baigtuose kūriniuose.</p><p>Pradėkite nuo vaidmens, kurį muzika turi atlikti. Ramus fonas paaiškinimui, energinga trumpo vaizdo įrašo pradžia ar apmąstymų kupina daina apie kelionę suteikia aprašui konkrečią paskirtį. Keliomis aiškiomis frazėmis nusakykite pageidaujamą nuotaiką ir tai paskirčiai svarbias muzikines savybes.</p><p>Dainai su vokalu kūrybiniame apraše aiškiai nurodykite temą ir kalbą. Aprašykite idėją, kurią kūrinys turi išreikšti, ir toną, kurį turi perteikti atlikimas. Klausydami baigto rezultato vertinkite, kaip kartu veikia vokalas, žodžiai ir aranžuotė. Sugeneruotą informaciją apie kūrinį laikykite kartu su garso įrašu, kad galėtumėte juos peržiūrėti.</p><p>Jei norite instrumentinio kūrinio, pasirinkite dokumentuotą instrumentinės muzikos parinktį, o tekste aprašykite muzikinę kryptį. Nurodykite pageidaujamą atmosferą ir pagrindinius instrumentus, kai jie svarbūs projektui. Baigtą kūrinį vertinkite pagal vietą, kurią jis užims montaže, įskaitant dalis, kurios turės skambėti kalbos fone ar padėti perteikti vaizdo perėjimą.</p><p>Automatinė kūrimo eiga pagal pateiktą idėją sukuria dvi dainas. Laikykite jas atskirais variantais ir išsaugokite abu baigtus garso failus. Išklausykite kiekvienos dainos pradžią, plėtotę ir pabaigą. Tikruosius kūrinius lyginkite pagal tą pačią paskirtį, įskaitant jų nuotaiką, aranžuotę ir tinkamumą suplanuotam naudojimui.</p><p>Generavimas organizuojamas kaip užduotis. Tikrindami jos rezultatą išsaugokite grąžintą užduoties ID ir atskirkite baigtus kūrinius nuo vis dar kuriamų. Dokumentuotame rezultate pateikiama atskirų kūrinių informacija, pavyzdžiui, pavadinimas, būsena, garso įrašo vieta ir trukmė. Išsaugokite patį baigtą garso įrašą kartu su prieinamais metaduomenimis ir pradiniu aprašu.</p><p>Vaizdo įrašui ar pristatymui pasirinktą muziką išbandykite su tikrąja medžiaga. Numatytu klausymo garsumu patikrinkite pradžią, perėjimus ir pabaigą. Pažymėkite montažui tinkamą dalį ir išsaugokite visą kūrinį vėlesniems pakeitimams. Tinkama muzikos ištrauka vertinama baigto kūrinio balso, vaizdų ir tempo kontekste.</p><p>Raštu išdėstytą idėją, instrumentinės muzikos parinkties reikšmę, modelio pasirinkimą ir visus baigtus kūrinius laikykite kartu. Jei variantą reikia taisyti, nustatykite muzikinį neatitikimą, pavyzdžiui, per daug sodrią aranžuotę kalbos fonui ar per lėtai besivystančią pradžią. Išlaikykite naudingą kryptį ir pakeiskite su ta problema susijusią aprašo dalį.</p>",
  "aboutText": "Suno yra muzikos generavimo paslauga, paverčianti raštu išdėstytą idėją dainomis. Dokumentuotoje automatinėje kūrimo eigoje pateikiamas trumpas numatytos muzikos aprašymas ir pasirenkama, ar ji bus instrumentinė, tada sugeneruojamos dvi dainos. Aprašu nustatykite temą, nuotaiką ir muzikinę kryptį, kurią norite girdėti baigtuose kūriniuose.\n\nPradėkite nuo vaidmens, kurį muzika turi atlikti. Ramus fonas paaiškinimui, energinga trumpo vaizdo įrašo pradžia ar apmąstymų kupina daina apie kelionę suteikia aprašui konkrečią paskirtį. Keliomis aiškiomis frazėmis nusakykite pageidaujamą nuotaiką ir tai paskirčiai svarbias muzikines savybes.\n\nDainai su vokalu kūrybiniame apraše aiškiai nurodykite temą ir kalbą. Aprašykite idėją, kurią kūrinys turi išreikšti, ir toną, kurį turi perteikti atlikimas. Klausydami baigto rezultato vertinkite, kaip kartu veikia vokalas, žodžiai ir aranžuotė. Sugeneruotą informaciją apie kūrinį laikykite kartu su garso įrašu, kad galėtumėte juos peržiūrėti.\n\nJei norite instrumentinio kūrinio, pasirinkite dokumentuotą instrumentinės muzikos parinktį, o tekste aprašykite muzikinę kryptį. Nurodykite pageidaujamą atmosferą ir pagrindinius instrumentus, kai jie svarbūs projektui. Baigtą kūrinį vertinkite pagal vietą, kurią jis užims montaže, įskaitant dalis, kurios turės skambėti kalbos fone ar padėti perteikti vaizdo perėjimą.\n\nAutomatinė kūrimo eiga pagal pateiktą idėją sukuria dvi dainas. Laikykite jas atskirais variantais ir išsaugokite abu baigtus garso failus. Išklausykite kiekvienos dainos pradžią, plėtotę ir pabaigą. Tikruosius kūrinius lyginkite pagal tą pačią paskirtį, įskaitant jų nuotaiką, aranžuotę ir tinkamumą suplanuotam naudojimui.\n\nGeneravimas organizuojamas kaip užduotis. Tikrindami jos rezultatą išsaugokite grąžintą užduoties ID ir atskirkite baigtus kūrinius nuo vis dar kuriamų. Dokumentuotame rezultate pateikiama atskirų kūrinių informacija, pavyzdžiui, pavadinimas, būsena, garso įrašo vieta ir trukmė. Išsaugokite patį baigtą garso įrašą kartu su prieinamais metaduomenimis ir pradiniu aprašu.\n\nVaizdo įrašui ar pristatymui pasirinktą muziką išbandykite su tikrąja medžiaga. Numatytu klausymo garsumu patikrinkite pradžią, perėjimus ir pabaigą. Pažymėkite montažui tinkamą dalį ir išsaugokite visą kūrinį vėlesniems pakeitimams. Tinkama muzikos ištrauka vertinama baigto kūrinio balso, vaizdų ir tempo kontekste.\n\nRaštu išdėstytą idėją, instrumentinės muzikos parinkties reikšmę, modelio pasirinkimą ir visus baigtus kūrinius laikykite kartu. Jei variantą reikia taisyti, nustatykite muzikinį neatitikimą, pavyzdžiui, per daug sodrią aranžuotę kalbos fonui ar per lėtai besivystančią pradžią. Išlaikykite naudingą kryptį ir pakeiskite su ta problema susijusią aprašo dalį.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "eb6f806354e26927f1ee1103aafa8c588920d2f59b61c88ec14b99e1872bf15b",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "lt",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">suno-api</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Uždaryti\">×</button></div><div class=\"idline\"><span>Suno /</span><code>suno-api</code><button type=\"button\" id=\"copy-id\">Kopijuoti ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Modelio kortelės skyriai\"><button type=\"button\" data-card-jump=\"overview\">Pradžia</button><button type=\"button\" data-card-jump=\"methods\">Įvestys ir metodai</button><button type=\"button\" data-card-jump=\"pricing\">Planai</button><button type=\"button\" data-card-jump=\"examples\">Pavyzdžiai</button><button type=\"button\" data-card-jump=\"results\">Rezultatai</button><button type=\"button\" data-card-jump=\"aliases\">Pseudonimai</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API metodai\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|music|/v1/music/generations|suno-api\">Muzika</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\">Pradžia</h3><p class=\"mdesc-full\">Suno kuria muziką pagal trumpą raštu išdėstytą idėją. Dokumentuota automatinė kūrimo eiga sugeneruoja dvi dainas ir apima instrumentinės muzikos parinktį, o užbaigti garso įrašai bei kūrinių metaduomenys grąžinami kaip generavimo užduoties rezultatas.</p><dl class=\"card-io\" data-card-io><div><dt>Leidžiamos įvestys</dt><dd>Tekstas</dd></div><div><dt>Rezultatai</dt><dd>Garsas · Vaizdai · Vaizdo įrašai</dd></div></dl><details class=\"card-about\"><summary>Apie modelį</summary><p class=\"note-s\" data-model-method-boundary>Šis aprašas apima modelio galimybes. Pasirinktam metodui Ailoot prieinamos įvestys, išvestys ir parinktys nurodytos toliau.</p><div class=\"mabout\" id=\"m-about\"><p>Suno yra muzikos generavimo paslauga, paverčianti raštu išdėstytą idėją dainomis. Dokumentuotoje automatinėje kūrimo eigoje pateikiamas trumpas numatytos muzikos aprašymas ir pasirenkama, ar ji bus instrumentinė, tada sugeneruojamos dvi dainos. Aprašu nustatykite temą, nuotaiką ir muzikinę kryptį, kurią norite girdėti baigtuose kūriniuose.</p><p>Pradėkite nuo vaidmens, kurį muzika turi atlikti. Ramus fonas paaiškinimui, energinga trumpo vaizdo įrašo pradžia ar apmąstymų kupina daina apie kelionę suteikia aprašui konkrečią paskirtį. Keliomis aiškiomis frazėmis nusakykite pageidaujamą nuotaiką ir tai paskirčiai svarbias muzikines savybes.</p><p>Dainai su vokalu kūrybiniame apraše aiškiai nurodykite temą ir kalbą. Aprašykite idėją, kurią kūrinys turi išreikšti, ir toną, kurį turi perteikti atlikimas. Klausydami baigto rezultato vertinkite, kaip kartu veikia vokalas, žodžiai ir aranžuotė. Sugeneruotą informaciją apie kūrinį laikykite kartu su garso įrašu, kad galėtumėte juos peržiūrėti.</p><p>Jei norite instrumentinio kūrinio, pasirinkite dokumentuotą instrumentinės muzikos parinktį, o tekste aprašykite muzikinę kryptį. Nurodykite pageidaujamą atmosferą ir pagrindinius instrumentus, kai jie svarbūs projektui. Baigtą kūrinį vertinkite pagal vietą, kurią jis užims montaže, įskaitant dalis, kurios turės skambėti kalbos fone ar padėti perteikti vaizdo perėjimą.</p><p>Automatinė kūrimo eiga pagal pateiktą idėją sukuria dvi dainas. Laikykite jas atskirais variantais ir išsaugokite abu baigtus garso failus. Išklausykite kiekvienos dainos pradžią, plėtotę ir pabaigą. Tikruosius kūrinius lyginkite pagal tą pačią paskirtį, įskaitant jų nuotaiką, aranžuotę ir tinkamumą suplanuotam naudojimui.</p><p>Generavimas organizuojamas kaip užduotis. Tikrindami jos rezultatą išsaugokite grąžintą užduoties ID ir atskirkite baigtus kūrinius nuo vis dar kuriamų. Dokumentuotame rezultate pateikiama atskirų kūrinių informacija, pavyzdžiui, pavadinimas, būsena, garso įrašo vieta ir trukmė. Išsaugokite patį baigtą garso įrašą kartu su prieinamais metaduomenimis ir pradiniu aprašu.</p><p>Vaizdo įrašui ar pristatymui pasirinktą muziką išbandykite su tikrąja medžiaga. Numatytu klausymo garsumu patikrinkite pradžią, perėjimus ir pabaigą. Pažymėkite montažui tinkamą dalį ir išsaugokite visą kūrinį vėlesniems pakeitimams. Tinkama muzikos ištrauka vertinama baigto kūrinio balso, vaizdų ir tempo kontekste.</p><p>Raštu išdėstytą idėją, instrumentinės muzikos parinkties reikšmę, modelio pasirinkimą ir visus baigtus kūrinius laikykite kartu. Jei variantą reikia taisyti, nustatykite muzikinį neatitikimą, pavyzdžiui, per daug sodrią aranžuotę kalbos fonui ar per lėtai besivystančią pradžią. Išlaikykite naudingą kryptį ir pakeiskite su ta problema susijusią aprašo dalį.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Prieinama Ailoot · įvestys ir metodai</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Music</b> <code>POST /v1/music/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Įvestis</dt><dd><code>text</code></dd></div><div><dt>Išvestis</dt><dd><code>audio</code>, <code>image</code>, <code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Laukas</th><th>Tipas</th><th>Reikalavimas</th><th>Reikšmės ir ribos</th><th>Numatyta</th></tr></thead><tbody><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>string</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Privaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>suno-api</div><div>Sąlygos: Naudokite būtent šį Ailoot maršrutizavimo parinkiklį.</div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">gpt_description_prompt</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>string</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Privaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>Sąlygos: Aprašykite muzikinę idėją arba dainos temą.</div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">mv</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>string</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Privaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>chirp-fenix, chirp-crow, chirp-bluejay, chirp-auk, chirp-v4, chirp-v3-5</div><div>Sąlygos: Aiškiai pasirinkite dokumentuotą Suno versiją; pavyzdyje naudojama chirp-crow (v5).</div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">make_instrumental</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>boolean</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Privaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>Sąlygos: Instrumentinei muzikai nustatykite true, o dainai – false.</div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Metodo parametrai ir gyvavimo ciklas</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametras</th><th>Specifikacija</th></tr></thead><tbody><tr><th data-cell-label=\"Parametras\" scope=\"row\"><span class=\"card-cell-label\">Parametras</span><code>content_type</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>application/json</td></tr><tr><th data-cell-label=\"Parametras\" scope=\"row\"><span class=\"card-cell-label\">Parametras</span><code>required</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>model, gpt_description_prompt, mv, make_instrumental</td></tr><tr><th data-cell-label=\"Parametras\" scope=\"row\"><span class=\"card-cell-label\">Parametras</span><code>optional</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span></td></tr><tr><th data-cell-label=\"Parametras\" scope=\"row\"><span class=\"card-cell-label\">Parametras</span><code>material_types</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>text</td></tr><tr><th data-cell-label=\"Parametras\" scope=\"row\"><span class=\"card-cell-label\">Parametras</span><code>conditions</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>Naudokite būtent šį Ailoot maršrutizavimo parinkiklį., Aprašykite muzikinę idėją arba dainos temą., Aiškiai pasirinkite dokumentuotą Suno versiją; pavyzdyje naudojama chirp-crow (v5)., Instrumentinei muzikai nustatykite true, o dainai – false.</td></tr></tbody></table></div><p>Gyvavimo ciklas: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/music/generations/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Planai</h3><div class=\"card-result-process\" data-billing-basis><h5>Kaip apskaičiuojamas galutinis mokestis</h5><p class=\"note-s\">Rodomi įkainiai leidžia įvertinti kainą prieš generavimą. Galutinė suma apskaičiuojama pagal užfiksuotą pradinio generavimo kainą. Išmatuota rezultato trukmė ir prognozuoti kiekiai nėra galutinis apmokestinamas kiekis.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifų informacija neprideda užklausos parinkčių. Palaikomi parametrai nurodyti prie pasirinkto metodo.</p><dl data-price-conditions><dt>Spartusis režimas</dt><dd>Nenurodyta <span class=\"note-s\">Pasirinkus spartųjį režimą</span></dd><dt>Flex režimas</dt><dd>Nenurodyta <span class=\"note-s\">Pasirinkus flex režimą</span></dd><dt>Didžiausios samprotavimo pastangos</dt><dd>Nenurodyta <span class=\"note-s\">Kai didžiausioms samprotavimo pastangoms taikomas numatytasis koregavimas (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Numatomi įkainiai palyginimui</h4><h4>Kainos pagal konfigūraciją</h4><p class=\"note-s\">Kiekvieną mokestį susiekite su nurodytomis sąlygomis. Kiekvienam alternatyvių konfigūracijų rinkiniui taikykite vieną įkainį.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigūracija</th><th>Įkainių lentelė</th><th>Numatomas kiekis</th><th>Apskaitos kiekis</th><th>Mokestis</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigūracija\" scope=\"row\"><span class=\"card-cell-label\">Konfigūracija</span>Baziniai žetonų įkainiai</th><td data-cell-label=\"Įkainių lentelė\"><span class=\"card-cell-label\">Įkainių lentelė</span>Bazinis įkainis</td><td data-cell-label=\"Numatomas kiekis\"><span class=\"card-cell-label\">Numatomas kiekis</span>—</td><td data-cell-label=\"Apskaitos kiekis\"><span class=\"card-cell-label\">Apskaitos kiekis</span>—</td><td data-cell-label=\"Mokestis\"><span class=\"card-cell-label\">Mokestis</span><div><span>Įvestis · Įvesties tokenai · Įvertis tik palyginimui</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenų</span></div><div><span>Išvestis · Išvesties tokenai · Įvertis tik palyginimui</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenų</span></div><div><span>Įvestis · Talpyklos skaitymas · Įvertis tik palyginimui</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenų</span></div><div><span>Įvestis · Rašymas į talpyklą · Įvertis tik palyginimui</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenų</span></div><div><span>Įvestis · Rašymas į talpyklą, 1 val · Įvertis tik palyginimui</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenų</span></div></td></tr><tr><th data-cell-label=\"Konfigūracija\" scope=\"row\"><span class=\"card-cell-label\">Konfigūracija</span>Už užklausą</th><td data-cell-label=\"Įkainių lentelė\"><span class=\"card-cell-label\">Įkainių lentelė</span>—</td><td data-cell-label=\"Numatomas kiekis\"><span class=\"card-cell-label\">Numatomas kiekis</span>—</td><td data-cell-label=\"Apskaitos kiekis\"><span class=\"card-cell-label\">Apskaitos kiekis</span>viena užklausa</td><td data-cell-label=\"Mokestis\"><span class=\"card-cell-label\">Mokestis</span><div><span>Įvestis · Įvertis tik palyginimui</span> <b>$0.2</b> <span class=\"price-unit\">už užklausą</span></div></td></tr><tr><th data-cell-label=\"Konfigūracija\" scope=\"row\"><span class=\"card-cell-label\">Konfigūracija</span>Numatoma generavimo kaina</th><td data-cell-label=\"Įkainių lentelė\"><span class=\"card-cell-label\">Įkainių lentelė</span>—</td><td data-cell-label=\"Numatomas kiekis\"><span class=\"card-cell-label\">Numatomas kiekis</span>vieno generavimo įvertis</td><td data-cell-label=\"Apskaitos kiekis\"><span class=\"card-cell-label\">Apskaitos kiekis</span>—</td><td data-cell-label=\"Mokestis\"><span class=\"card-cell-label\">Mokestis</span><div><span>Išvestis · Numatoma generavimo kaina · Įvertis tik palyginimui</span> <b>$0.2</b> <span class=\"price-unit\">įvertis prieš generavimą</span></div><p class=\"note-s\">Šis įvertis nėra papildomas mokestis ar fiksuotas užbaigto generavimo įkainis.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. <a href=\"/docs/lt/billing/reserve/\">Kaip veikia rezervavimas ir atsiskaitymas →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Užklausų pavyzdžiai</h3><h4>Ailoot Ultra · Music</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodo variantai\"><button class=\"cg-tab\" id=\"model-code-2818-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2818-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · sukurkite vieną kartą ir išsaugokite gavimo patvirtinimą</button><button class=\"cg-tab\" id=\"model-code-2818-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2818-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Peržiūrėkite pirminę užduotį</button><button class=\"cg-tab\" id=\"model-code-2818-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2818-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Išsaugokite kiekvieną užbaigtą jums priklausantį išteklių</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopijuoti kodą\"><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-2818-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2818-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON&#39;\n{\n  &quot;model&quot;: &quot;suno-api&quot;,\n  &quot;gpt_description_prompt&quot;: &quot;古诗词&quot;,\n  &quot;mv&quot;: &quot;chirp-crow&quot;,\n  &quot;make_instrumental&quot;: false\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/music/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\n# Create once; retain id, polling_url, original task identifiers and every header.\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2818-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2818-tab-1\" hidden><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_STATUS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r[&quot;polling_url&quot;])\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or p.username or p.password:\n    raise SystemExit(&quot;Unexpected returned polling URL; preserve the response&quot;)\nsubprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-D&quot;,&quot;status-headers.txt&quot;,&quot;-o&quot;,&quot;status.json&quot;],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2818-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2818-tab-2\" hidden><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_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nroles={}\ndef visit(v,path=&quot;&quot;):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+&quot;/&quot;+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+&quot;/&quot;+str(i))\n    elif isinstance(v,str):\n        u=urljoin(&quot;https://api.ailoot.ai&quot;,v); p=urlsplit(u)\n        if p.scheme==&quot;https&quot; and p.netloc==&quot;api.ailoot.ai&quot; and not p.username and not p.password and p.path.startswith(&quot;/v1/media/assets/&quot;) and p.path.endswith(&quot;/content&quot;):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(&quot;No completed owned assets; retain the original status&quot;)\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f&quot;asset-{i}.bin&quot;)\n    subprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-o&quot;,str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(&quot;Empty asset; retain original status and metadata&quot;)\n    ext=&quot;glb&quot; if raw[:4]==b&quot;glTF&quot; else &quot;png&quot; if raw[:8]==b&quot;\\x89PNG\\r\\n\\x1a\\n&quot; else &quot;jpg&quot; if raw[:3]==b&quot;\\xff\\xd8\\xff&quot; else &quot;webp&quot; if raw[:4]==b&quot;RIFF&quot; and raw[8:12]==b&quot;WEBP&quot; else &quot;mp4&quot; if raw[4:8]==b&quot;ftyp&quot; else &quot;bin&quot;\n    name=f&quot;asset-{i}.{ext}&quot;\n    if target.name!=name: target.rename(name)\n    manifest.append({&quot;file&quot;:name,&quot;response_paths&quot;:paths,&quot;bytes&quot;:len(raw)})\nPath(&quot;asset-manifest.json&quot;).write_text(json.dumps(manifest,indent=2))\nprint(&quot;Saved&quot;,len(manifest),&quot;unique owned assets; every response role retained&quot;)\nPY_ASSETS\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Gauti ir išsaugoti rezultatus</h3><h4>Ailoot Ultra · Music</h4><p class=\"note-s\">Atsisiųskite kiekvieną grąžintą vaizdą arba išsaugokite jo Base64 turinį</p><ul class=\"card-result-paths\"><li><code>GET /v1/music/generations/{request_id}</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>Išsaugoti visus baigtus rezultatus</h5><p class=\"note-s\">Išsaugokite kiekvieną visą grąžintą atsakymą, failą ir turinio dalį.</p><p class=\"note-s\">Išsaugokite visą atsakymą ir antraštes, pradinius identifikatorius, kiekvieną tikrą rezultatą ir visus naudojimo bei apskaitos laukus. Išsaugokite kiekvieną unikalų jums priklausantį išteklių ir visas į jį nukreiptas paskirtis.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jei reikia patikrinti pradinį atsakymą</h5><p class=\"note-s\">Išsaugokite grąžintą viešą užduoties ar operacijos id ir visas antraštes. Skaitykite tik pradinės užduoties duomenis; unknown arba result_pending_check nesuteikia leidimo kurti dar kartą.</p></div><details class=\"card-about\" data-output-fields><summary>Atsakymo laukai</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Laukas</th><th>Tipas</th></tr></thead><tbody><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">polling_url</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">provider_task_id</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">data.task_id</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">data.status</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">data.data[].audio_url</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">data.data[].image_url</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">data.data[].image_large_url</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">data.data[].video_url</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Pseudonimai</h3><h4>Modelių pseudonimai</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=suno-api&amp;route=Ultra&amp;caller=suno-api&amp;fmt=music\"><code>suno-api</code></a></span></p><h4>Metodų kelių pseudonimai</h4><p class=\"note-s\">Naudokite aukščiau nurodytus metodų kelius.</p><h4>Susiję ID iškvietimui</h4><p class=\"note-s\"><a href=\"#m=suno-api&amp;route=Ultra&amp;caller=suno-api&amp;fmt=music\"><code>suno-api</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "suno-api",
        "fmt": "music",
        "http": "POST",
        "path": "/v1/music/generations",
        "request_model_id": "suno-api",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|music|/v1/music/generations|suno-api",
      "ordinal": 0,
      "rawMethod": {
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "The displayed rates estimate the cost before generation. The final charge is calculated from the cost recorded for the original generation. Measured output duration and forecast quantities are not the final billable quantity.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [],
              "completion_description": "The selected declaration waits for at least two identified rows with ready status and audio_url; a nonempty streaming response is not completion. Top-level statuses alone are not the completion rule.",
              "completion_rule": {
                "completion_array_path": "data.data",
                "completion_audio_field": "audio_url",
                "completion_identity_fields": [
                  "id",
                  "clip_id"
                ],
                "completion_min_items": 2,
                "completion_ready_statuses": [
                  "complete",
                  "SUCCESS"
                ],
                "completion_status_field": "status"
              },
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/music/generations"
              },
              "failed_states": [],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [],
              "state_field": "data.status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/music/generations/{request_id}"
                }
              ],
              "unknown": "Išsaugokite grąžintą viešą užduoties ar operacijos id ir visas antraštes. Skaitykite tik pradinės užduoties duomenis; unknown arba result_pending_check nesuteikia leidimo kurti dar kartą.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Išsaugokite visą atsakymą ir antraštes, pradinius identifikatorius, kiekvieną tikrą rezultatą ir visus naudojimo bei apskaitos laukus. Išsaugokite kiekvieną unikalų jums priklausantį išteklių ir visas į jį nukreiptas paskirtis.",
              "every_actual_output": true,
              "family": "music",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_id",
                  "type": "string"
                },
                {
                  "name": "data.status",
                  "type": "string"
                },
                {
                  "name": "data.data[].audio_url",
                  "type": "string"
                },
                {
                  "name": "data.data[].image_url",
                  "type": "string"
                },
                {
                  "name": "data.data[].image_large_url",
                  "type": "string"
                },
                {
                  "name": "data.data[].video_url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null,
              "minimum_ready_songs": 2
            },
            "parameters": [
              {
                "conditions": "Naudokite būtent šį Ailoot maršrutizavimo parinkiklį.",
                "default_known": false,
                "enum": [
                  "suno-api"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Aprašykite muzikinę idėją arba dainos temą.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "gpt_description_prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Aiškiai pasirinkite dokumentuotą Suno versiją; pavyzdyje naudojama chirp-crow (v5).",
                "default_known": false,
                "enum": [
                  "chirp-fenix",
                  "chirp-crow",
                  "chirp-bluejay",
                  "chirp-auk",
                  "chirp-v4",
                  "chirp-v3-5"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mv",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Instrumentinei muzikai nustatykite true, o dainai – false.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "make_instrumental",
                "required": true,
                "type": "boolean"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "gpt_description_prompt": {
                  "type": "string"
                },
                "make_instrumental": {
                  "type": "boolean"
                },
                "model": {
                  "enum": [
                    "suno-api"
                  ],
                  "type": "string"
                },
                "mv": {
                  "enum": [
                    "chirp-fenix",
                    "chirp-crow",
                    "chirp-bluejay",
                    "chirp-auk",
                    "chirp-v4",
                    "chirp-v3-5"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "gpt_description_prompt",
                "mv",
                "make_instrumental"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "gpt_description_prompt": "古诗词",
                "make_instrumental": false,
                "model": "suno-api",
                "mv": "chirp-crow"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Naudokite būtent šį Ailoot maršrutizavimo parinkiklį.",
              "Aprašykite muzikinę idėją arba dainos temą.",
              "Aiškiai pasirinkite dokumentuotą Suno versiją; pavyzdyje naudojama chirp-crow (v5).",
              "Instrumentinei muzikai nustatykite true, o dainai – false."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "gpt_description_prompt",
              "mv",
              "make_instrumental"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [],
            "completion_description": "The selected declaration waits for at least two identified rows with ready status and audio_url; a nonempty streaming response is not completion. Top-level statuses alone are not the completion rule.",
            "completion_rule": {
              "completion_array_path": "data.data",
              "completion_audio_field": "audio_url",
              "completion_identity_fields": [
                "id",
                "clip_id"
              ],
              "completion_min_items": 2,
              "completion_ready_statuses": [
                "complete",
                "SUCCESS"
              ],
              "completion_status_field": "status"
            },
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/music/generations"
            },
            "failed_states": [],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [],
            "state_field": "data.status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/music/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/music/generations"
          },
          "method_aliases": [],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "music",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "data.task_id",
                "type": "string"
              },
              {
                "name": "data.status",
                "type": "string"
              },
              {
                "name": "data.data[].audio_url",
                "type": "string"
              },
              {
                "name": "data.data[].image_url",
                "type": "string"
              },
              {
                "name": "data.data[].image_large_url",
                "type": "string"
              },
              {
                "name": "data.data[].video_url",
                "type": "string"
              }
            ],
            "maximum_outputs": null,
            "minimum_ready_songs": 2
          }
        },
        "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": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          },
          {
            "basis": "Šis įvertis nėra papildomas mokestis ar fiksuotas užbaigto generavimo įkainis.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Numatoma generavimo kaina",
            "units": [
              {
                "amount": "0.2",
                "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.2",
                "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}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"suno-api\",\n  \"gpt_description_prompt\": \"古诗词\",\n  \"mv\": \"chirp-crow\",\n  \"make_instrumental\": false\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/music/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\n# Create once; retain id, polling_url, original task identifiers and every header.\n",
            "label": "curl · create once and retain receipt",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "music",
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Music",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": null,
        "output": [
          "audio",
          "image",
          "video"
        ],
        "path": "/v1/music/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": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          },
          {
            "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.2",
                "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.2",
                "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": "suno-api",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/music/generations/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.2",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "per_request",
            "label": "per request",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "public_unit_label": "per request",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "per_request"
          },
          {
            "amount": "0.2",
            "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.2",
            "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": "suno-api",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "433d45689d97f56360ada54e058aacfe76d1b6dbebcfccdda1ef2e3092d71db1",
    "input_html_sha256": "115fb910f274562c8459d8b86f6d57ca5e6f26c2025805baf432333889bb1b9c",
    "private_audit_sha256": "a8c6c14b0e0ce04331c8c75a86e9f7968962c2f92e805a95cc29e4bb80001799",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/lt/suno-api/",
    "description": "Suno kuria muziką pagal trumpą raštu išdėstytą idėją. Dokumentuota automatinė kūrimo eiga sugeneruoja dvi dainas ir apima instrumentinės muzikos parinktį, o užbaigti garso įrašai bei kūrinių metaduomenys grąžinami kaip generavimo užduoties rezultatas.",
    "locale": "lt",
    "md_url": "https://ailoot.ai/models/lt/suno-api/index.md",
    "title": "suno-api — Ailoot",
    "url": "https://ailoot.ai/models/lt/suno-api/"
  },
  "rawModel": {
    "about": "Suno yra muzikos generavimo paslauga, paverčianti raštu išdėstytą idėją dainomis. Dokumentuotoje automatinėje kūrimo eigoje pateikiamas trumpas numatytos muzikos aprašymas ir pasirenkama, ar ji bus instrumentinė, tada sugeneruojamos dvi dainos. Aprašu nustatykite temą, nuotaiką ir muzikinę kryptį, kurią norite girdėti baigtuose kūriniuose.\n\nPradėkite nuo vaidmens, kurį muzika turi atlikti. Ramus fonas paaiškinimui, energinga trumpo vaizdo įrašo pradžia ar apmąstymų kupina daina apie kelionę suteikia aprašui konkrečią paskirtį. Keliomis aiškiomis frazėmis nusakykite pageidaujamą nuotaiką ir tai paskirčiai svarbias muzikines savybes.\n\nDainai su vokalu kūrybiniame apraše aiškiai nurodykite temą ir kalbą. Aprašykite idėją, kurią kūrinys turi išreikšti, ir toną, kurį turi perteikti atlikimas. Klausydami baigto rezultato vertinkite, kaip kartu veikia vokalas, žodžiai ir aranžuotė. Sugeneruotą informaciją apie kūrinį laikykite kartu su garso įrašu, kad galėtumėte juos peržiūrėti.\n\nJei norite instrumentinio kūrinio, pasirinkite dokumentuotą instrumentinės muzikos parinktį, o tekste aprašykite muzikinę kryptį. Nurodykite pageidaujamą atmosferą ir pagrindinius instrumentus, kai jie svarbūs projektui. Baigtą kūrinį vertinkite pagal vietą, kurią jis užims montaže, įskaitant dalis, kurios turės skambėti kalbos fone ar padėti perteikti vaizdo perėjimą.\n\nAutomatinė kūrimo eiga pagal pateiktą idėją sukuria dvi dainas. Laikykite jas atskirais variantais ir išsaugokite abu baigtus garso failus. Išklausykite kiekvienos dainos pradžią, plėtotę ir pabaigą. Tikruosius kūrinius lyginkite pagal tą pačią paskirtį, įskaitant jų nuotaiką, aranžuotę ir tinkamumą suplanuotam naudojimui.\n\nGeneravimas organizuojamas kaip užduotis. Tikrindami jos rezultatą išsaugokite grąžintą užduoties ID ir atskirkite baigtus kūrinius nuo vis dar kuriamų. Dokumentuotame rezultate pateikiama atskirų kūrinių informacija, pavyzdžiui, pavadinimas, būsena, garso įrašo vieta ir trukmė. Išsaugokite patį baigtą garso įrašą kartu su prieinamais metaduomenimis ir pradiniu aprašu.\n\nVaizdo įrašui ar pristatymui pasirinktą muziką išbandykite su tikrąja medžiaga. Numatytu klausymo garsumu patikrinkite pradžią, perėjimus ir pabaigą. Pažymėkite montažui tinkamą dalį ir išsaugokite visą kūrinį vėlesniems pakeitimams. Tinkama muzikos ištrauka vertinama baigto kūrinio balso, vaizdų ir tempo kontekste.\n\nRaštu išdėstytą idėją, instrumentinės muzikos parinkties reikšmę, modelio pasirinkimą ir visus baigtus kūrinius laikykite kartu. Jei variantą reikia taisyti, nustatykite muzikinį neatitikimą, pavyzdžiui, per daug sodrią aranžuotę kalbos fonui ar per lėtai besivystančią pradžią. Išlaikykite naudingą kryptį ir pakeiskite su ta problema susijusią aprašo dalį.",
    "about_sha256": "4577a556b7300fe05a1a3b18f598fb0e5c8f131953ec38987207d4e05db8bb0a",
    "alias_of": null,
    "aliases": [],
    "author": "Suno",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "audio"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.2",
            "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.2",
            "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": "Visa konfigūracijos kainodara pateikta išsamioje informacijoje."
      }
    ],
    "ctx": null,
    "display_name": "suno-api",
    "formats": [
      "music"
    ],
    "id": "suno-api",
    "input": [
      "text"
    ],
    "kind": "music",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "The displayed rates estimate the cost before generation. The final charge is calculated from the cost recorded for the original generation. Measured output duration and forecast quantities are not the final billable quantity.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [],
              "completion_description": "The selected declaration waits for at least two identified rows with ready status and audio_url; a nonempty streaming response is not completion. Top-level statuses alone are not the completion rule.",
              "completion_rule": {
                "completion_array_path": "data.data",
                "completion_audio_field": "audio_url",
                "completion_identity_fields": [
                  "id",
                  "clip_id"
                ],
                "completion_min_items": 2,
                "completion_ready_statuses": [
                  "complete",
                  "SUCCESS"
                ],
                "completion_status_field": "status"
              },
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/music/generations"
              },
              "failed_states": [],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [],
              "state_field": "data.status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/music/generations/{request_id}"
                }
              ],
              "unknown": "Išsaugokite grąžintą viešą užduoties ar operacijos id ir visas antraštes. Skaitykite tik pradinės užduoties duomenis; unknown arba result_pending_check nesuteikia leidimo kurti dar kartą.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Išsaugokite visą atsakymą ir antraštes, pradinius identifikatorius, kiekvieną tikrą rezultatą ir visus naudojimo bei apskaitos laukus. Išsaugokite kiekvieną unikalų jums priklausantį išteklių ir visas į jį nukreiptas paskirtis.",
              "every_actual_output": true,
              "family": "music",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_id",
                  "type": "string"
                },
                {
                  "name": "data.status",
                  "type": "string"
                },
                {
                  "name": "data.data[].audio_url",
                  "type": "string"
                },
                {
                  "name": "data.data[].image_url",
                  "type": "string"
                },
                {
                  "name": "data.data[].image_large_url",
                  "type": "string"
                },
                {
                  "name": "data.data[].video_url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null,
              "minimum_ready_songs": 2
            },
            "parameters": [
              {
                "conditions": "Naudokite būtent šį Ailoot maršrutizavimo parinkiklį.",
                "default_known": false,
                "enum": [
                  "suno-api"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Aprašykite muzikinę idėją arba dainos temą.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "gpt_description_prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Aiškiai pasirinkite dokumentuotą Suno versiją; pavyzdyje naudojama chirp-crow (v5).",
                "default_known": false,
                "enum": [
                  "chirp-fenix",
                  "chirp-crow",
                  "chirp-bluejay",
                  "chirp-auk",
                  "chirp-v4",
                  "chirp-v3-5"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mv",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Instrumentinei muzikai nustatykite true, o dainai – false.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "make_instrumental",
                "required": true,
                "type": "boolean"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "gpt_description_prompt": {
                  "type": "string"
                },
                "make_instrumental": {
                  "type": "boolean"
                },
                "model": {
                  "enum": [
                    "suno-api"
                  ],
                  "type": "string"
                },
                "mv": {
                  "enum": [
                    "chirp-fenix",
                    "chirp-crow",
                    "chirp-bluejay",
                    "chirp-auk",
                    "chirp-v4",
                    "chirp-v3-5"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "gpt_description_prompt",
                "mv",
                "make_instrumental"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "gpt_description_prompt": "古诗词",
                "make_instrumental": false,
                "model": "suno-api",
                "mv": "chirp-crow"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Naudokite būtent šį Ailoot maršrutizavimo parinkiklį.",
              "Aprašykite muzikinę idėją arba dainos temą.",
              "Aiškiai pasirinkite dokumentuotą Suno versiją; pavyzdyje naudojama chirp-crow (v5).",
              "Instrumentinei muzikai nustatykite true, o dainai – false."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "gpt_description_prompt",
              "mv",
              "make_instrumental"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [],
            "completion_description": "The selected declaration waits for at least two identified rows with ready status and audio_url; a nonempty streaming response is not completion. Top-level statuses alone are not the completion rule.",
            "completion_rule": {
              "completion_array_path": "data.data",
              "completion_audio_field": "audio_url",
              "completion_identity_fields": [
                "id",
                "clip_id"
              ],
              "completion_min_items": 2,
              "completion_ready_statuses": [
                "complete",
                "SUCCESS"
              ],
              "completion_status_field": "status"
            },
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/music/generations"
            },
            "failed_states": [],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [],
            "state_field": "data.status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/music/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/music/generations"
          },
          "method_aliases": [],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "music",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "data.task_id",
                "type": "string"
              },
              {
                "name": "data.status",
                "type": "string"
              },
              {
                "name": "data.data[].audio_url",
                "type": "string"
              },
              {
                "name": "data.data[].image_url",
                "type": "string"
              },
              {
                "name": "data.data[].image_large_url",
                "type": "string"
              },
              {
                "name": "data.data[].video_url",
                "type": "string"
              }
            ],
            "maximum_outputs": null,
            "minimum_ready_songs": 2
          }
        },
        "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": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          },
          {
            "basis": "Šis įvertis nėra papildomas mokestis ar fiksuotas užbaigto generavimo įkainis.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Numatoma generavimo kaina",
            "units": [
              {
                "amount": "0.2",
                "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.2",
                "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}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"suno-api\",\n  \"gpt_description_prompt\": \"古诗词\",\n  \"mv\": \"chirp-crow\",\n  \"make_instrumental\": false\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/music/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\n# Create once; retain id, polling_url, original task identifiers and every header.\n",
            "label": "curl · create once and retain receipt",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "music",
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Music",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": null,
        "output": [
          "audio",
          "image",
          "video"
        ],
        "path": "/v1/music/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": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          },
          {
            "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.2",
                "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.2",
                "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": "suno-api",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/music/generations/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.2",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "per_request",
            "label": "per request",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "public_unit_label": "per request",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "per_request"
          },
          {
            "amount": "0.2",
            "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.2",
            "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": "suno-api",
        "request_model_id": "suno-api",
        "route_label": "Ultra"
      }
    ],
    "name": "suno-api",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.2,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.2,
      "varies": false
    },
    "short": "Suno kuria muziką pagal trumpą raštu išdėstytą idėją. Dokumentuota automatinė kūrimo eiga sugeneruoja dvi dainas ir apima instrumentinės muzikos parinktį, o užbaigti garso įrašai bei kūrinių metaduomenys grąžinami kaip generavimo užduoties rezultatas.",
    "short_sha256": "ddb8a7d23b32f2b88fdfb8424245950c6ac5755022e52f78d92654adcf873138"
  },
  "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": "Suno kuria muziką pagal trumpą raštu išdėstytą idėją. Dokumentuota automatinė kūrimo eiga sugeneruoja dvi dainas ir apima instrumentinės muzikos parinktį, o užbaigti garso įrašai bei kūrinių metaduomenys grąžinami kaip generavimo užduoties rezultatas.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "6d7c76e52a581f103cc0237dedb1d31e2e0f57660a8cf1485dd64b2405c2fc88",
    "renderer_sha256": "57bd2f8a61f57d341aae369006eca818e3eea645ec43af488ec7b2289eeca772"
  },
  "sourceRevision": "ed6bb562e4d667984ed9392aee28e86edb5ed8d8fbf7e248bfbe36f5e15e18c0"
}
