{
  "aboutHtml": "<p>Suno je služba na generovanie hudby, ktorá premieňa písomný nápad na skladby. Zdokumentovaný automatický postup prijíma krátky opis zamýšľanej hudby a voľbu inštrumentálnej verzie a následne vygeneruje dve skladby. Pomocou zadania určite tému, náladu a hudobné smerovanie, ktoré chcete počuť v hotových skladbách.</p><p>Začnite úlohou, ktorú má hudba plniť. Pokojný podklad k vysvetľovaniu, energický úvod krátkeho videa alebo hĺbavá pieseň o ceste dávajú zadaniu konkrétny účel. V niekoľkých jasných formuláciách opíšte zamýšľanú náladu a hudobné vlastnosti, ktoré sú pre tento účel podstatné.</p><p>Pri piesni so spevom jasne určite tému a jazyk v tvorivom zadaní. Opíšte myšlienku, ktorú má skladba vyjadrovať, a tón, ktorý má interpretácia sprostredkovať. Vypočujte si hotový výsledok a posúďte, ako spolu fungujú spev, slová a aranžmán. Uchovajte vygenerované informácie o skladbe spolu so zvukom na vyhodnotenie.</p><p>Pri inštrumentálnom výsledku použite zdokumentovanú voľbu inštrumentálnej verzie a v texte opíšte hudobné smerovanie. Uveďte požadovanú atmosféru a výrazné nástroje, ak sú pre projekt podstatné. Posúďte hotovú skladbu vzhľadom na jej miesto v strihu vrátane úsekov, ktoré majú znieť pod hovoreným slovom alebo podporovať vizuálny prechod.</p><p>Automatický postup vytvára z odoslaného nápadu dve skladby. Považujte ich za samostatné návrhy a uchovajte oba hotové zvukové súbory. Vypočujte si pri každom úvod, rozvoj aj záver. Porovnajte skutočné skladby podľa rovnakého účelu vrátane ich nálady, aranžmánu a vhodnosti na plánované použitie.</p><p>Generovanie prebieha formou úlohy. Pri kontrole výsledku si uchovajte vrátené ID úlohy a odlišujte hotové skladby od položiek, ktoré sa ešte spracúvajú. Zdokumentovaný výsledok zahŕňa informácie na úrovni skladby, napríklad názov, stav, umiestnenie zvuku a trvanie. Uložte samotný hotový zvuk spolu s dostupnými metadátami a pôvodným zadaním.</p><p>Pri videu alebo prezentácii si vybranú hudbu skúšobne vypočujte spolu so skutočným materiálom. Skontrolujte úvod, prechody a záver pri zamýšľanej hlasitosti počúvania. Označte úsek, ktorý slúži strihu, a uchovajte celú skladbu pre neskoršie zmeny. Vhodný hudobný úryvok sa posudzuje v kontexte hlasu, obrazov a tempa hotového diela.</p><p>Uchovajte písomný nápad, voľbu inštrumentálnej verzie, výber modelu a všetky hotové skladby spolu. Keď návrh potrebuje úpravu, určite hudobný nesúlad, napríklad aranžmán príliš hutný pod hovoreným slovom alebo úvod, ktorý sa rozvíja príliš pomaly. Zachovajte užitočné smerovanie a upravte tú časť zadania, ktorá súvisí s daným problémom.</p>",
  "aboutText": "Suno je služba na generovanie hudby, ktorá premieňa písomný nápad na skladby. Zdokumentovaný automatický postup prijíma krátky opis zamýšľanej hudby a voľbu inštrumentálnej verzie a následne vygeneruje dve skladby. Pomocou zadania určite tému, náladu a hudobné smerovanie, ktoré chcete počuť v hotových skladbách.\n\nZačnite úlohou, ktorú má hudba plniť. Pokojný podklad k vysvetľovaniu, energický úvod krátkeho videa alebo hĺbavá pieseň o ceste dávajú zadaniu konkrétny účel. V niekoľkých jasných formuláciách opíšte zamýšľanú náladu a hudobné vlastnosti, ktoré sú pre tento účel podstatné.\n\nPri piesni so spevom jasne určite tému a jazyk v tvorivom zadaní. Opíšte myšlienku, ktorú má skladba vyjadrovať, a tón, ktorý má interpretácia sprostredkovať. Vypočujte si hotový výsledok a posúďte, ako spolu fungujú spev, slová a aranžmán. Uchovajte vygenerované informácie o skladbe spolu so zvukom na vyhodnotenie.\n\nPri inštrumentálnom výsledku použite zdokumentovanú voľbu inštrumentálnej verzie a v texte opíšte hudobné smerovanie. Uveďte požadovanú atmosféru a výrazné nástroje, ak sú pre projekt podstatné. Posúďte hotovú skladbu vzhľadom na jej miesto v strihu vrátane úsekov, ktoré majú znieť pod hovoreným slovom alebo podporovať vizuálny prechod.\n\nAutomatický postup vytvára z odoslaného nápadu dve skladby. Považujte ich za samostatné návrhy a uchovajte oba hotové zvukové súbory. Vypočujte si pri každom úvod, rozvoj aj záver. Porovnajte skutočné skladby podľa rovnakého účelu vrátane ich nálady, aranžmánu a vhodnosti na plánované použitie.\n\nGenerovanie prebieha formou úlohy. Pri kontrole výsledku si uchovajte vrátené ID úlohy a odlišujte hotové skladby od položiek, ktoré sa ešte spracúvajú. Zdokumentovaný výsledok zahŕňa informácie na úrovni skladby, napríklad názov, stav, umiestnenie zvuku a trvanie. Uložte samotný hotový zvuk spolu s dostupnými metadátami a pôvodným zadaním.\n\nPri videu alebo prezentácii si vybranú hudbu skúšobne vypočujte spolu so skutočným materiálom. Skontrolujte úvod, prechody a záver pri zamýšľanej hlasitosti počúvania. Označte úsek, ktorý slúži strihu, a uchovajte celú skladbu pre neskoršie zmeny. Vhodný hudobný úryvok sa posudzuje v kontexte hlasu, obrazov a tempa hotového diela.\n\nUchovajte písomný nápad, voľbu inštrumentálnej verzie, výber modelu a všetky hotové skladby spolu. Keď návrh potrebuje úpravu, určite hudobný nesúlad, napríklad aranžmán príliš hutný pod hovoreným slovom alebo úvod, ktorý sa rozvíja príliš pomaly. Zachovajte užitočné smerovanie a upravte tú časť zadania, ktorá súvisí s daným problémom.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "c6ba10ae6886fecb5e052c6afbbb5d2ded3b01caac846c8d8ef418d159e2bd24",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "sk",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">suno-api</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zavrieť\">×</button></div><div class=\"idline\"><span>Suno /</span><code>suno-api</code><button type=\"button\" id=\"copy-id\">Skopírovať ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sekcie karty modelu\"><button type=\"button\" data-card-jump=\"overview\">Úvod</button><button type=\"button\" data-card-jump=\"methods\">Vstupy a metódy</button><button type=\"button\" data-card-jump=\"pricing\">Cenník</button><button type=\"button\" data-card-jump=\"examples\">Príklady</button><button type=\"button\" data-card-jump=\"results\">Výsledky</button><button type=\"button\" data-card-jump=\"aliases\">Aliasy</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metódy API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|music|/v1/music/generations|suno-api\">Hudba</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Úvod</h3><p class=\"mdesc-full\">Suno vytvára hudbu z krátkeho písomného nápadu. Zdokumentovaný automatický postup vytvára dve skladby a zahŕňa voľbu inštrumentálnej verzie, pričom hotový zvuk a metadáta skladieb sa vracajú prostredníctvom úlohy generovania.</p><dl class=\"card-io\" data-card-io><div><dt>Povolené vstupy</dt><dd>Text</dd></div><div><dt>Výsledky</dt><dd>Audio · Obrázky · Video</dd></div></dl><details class=\"card-about\"><summary>O modeli</summary><p class=\"note-s\" data-model-method-boundary>Tento opis pokrýva možnosti modelu. Dostupné vstupy, výstupy a voľby v Ailoot sú uvedené nižšie pre vybranú metódu.</p><div class=\"mabout\" id=\"m-about\"><p>Suno je služba na generovanie hudby, ktorá premieňa písomný nápad na skladby. Zdokumentovaný automatický postup prijíma krátky opis zamýšľanej hudby a voľbu inštrumentálnej verzie a následne vygeneruje dve skladby. Pomocou zadania určite tému, náladu a hudobné smerovanie, ktoré chcete počuť v hotových skladbách.</p><p>Začnite úlohou, ktorú má hudba plniť. Pokojný podklad k vysvetľovaniu, energický úvod krátkeho videa alebo hĺbavá pieseň o ceste dávajú zadaniu konkrétny účel. V niekoľkých jasných formuláciách opíšte zamýšľanú náladu a hudobné vlastnosti, ktoré sú pre tento účel podstatné.</p><p>Pri piesni so spevom jasne určite tému a jazyk v tvorivom zadaní. Opíšte myšlienku, ktorú má skladba vyjadrovať, a tón, ktorý má interpretácia sprostredkovať. Vypočujte si hotový výsledok a posúďte, ako spolu fungujú spev, slová a aranžmán. Uchovajte vygenerované informácie o skladbe spolu so zvukom na vyhodnotenie.</p><p>Pri inštrumentálnom výsledku použite zdokumentovanú voľbu inštrumentálnej verzie a v texte opíšte hudobné smerovanie. Uveďte požadovanú atmosféru a výrazné nástroje, ak sú pre projekt podstatné. Posúďte hotovú skladbu vzhľadom na jej miesto v strihu vrátane úsekov, ktoré majú znieť pod hovoreným slovom alebo podporovať vizuálny prechod.</p><p>Automatický postup vytvára z odoslaného nápadu dve skladby. Považujte ich za samostatné návrhy a uchovajte oba hotové zvukové súbory. Vypočujte si pri každom úvod, rozvoj aj záver. Porovnajte skutočné skladby podľa rovnakého účelu vrátane ich nálady, aranžmánu a vhodnosti na plánované použitie.</p><p>Generovanie prebieha formou úlohy. Pri kontrole výsledku si uchovajte vrátené ID úlohy a odlišujte hotové skladby od položiek, ktoré sa ešte spracúvajú. Zdokumentovaný výsledok zahŕňa informácie na úrovni skladby, napríklad názov, stav, umiestnenie zvuku a trvanie. Uložte samotný hotový zvuk spolu s dostupnými metadátami a pôvodným zadaním.</p><p>Pri videu alebo prezentácii si vybranú hudbu skúšobne vypočujte spolu so skutočným materiálom. Skontrolujte úvod, prechody a záver pri zamýšľanej hlasitosti počúvania. Označte úsek, ktorý slúži strihu, a uchovajte celú skladbu pre neskoršie zmeny. Vhodný hudobný úryvok sa posudzuje v kontexte hlasu, obrazov a tempa hotového diela.</p><p>Uchovajte písomný nápad, voľbu inštrumentálnej verzie, výber modelu a všetky hotové skladby spolu. Keď návrh potrebuje úpravu, určite hudobný nesúlad, napríklad aranžmán príliš hutný pod hovoreným slovom alebo úvod, ktorý sa rozvíja príliš pomaly. Zachovajte užitočné smerovanie a upravte tú časť zadania, ktorá súvisí s daným problémom.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Dostupné v Ailoot · vstupy a metódy</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Music</b> <code>POST /v1/music/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Vstup</dt><dd><code>text</code></dd></div><div><dt>Výstup</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>Pole</th><th>Typ</th><th>Požiadavka</th><th>Hodnoty a limity</th><th>Predvolené</th></tr></thead><tbody><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Povinné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>suno-api</div><div>Podmienky: Použite presne tento smerovací selektor Ailoot.</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">gpt_description_prompt</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Povinné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>Podmienky: Opíšte hudobný nápad alebo tému piesne.</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">mv</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Povinné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>chirp-fenix, chirp-crow, chirp-bluejay, chirp-auk, chirp-v4, chirp-v3-5</div><div>Podmienky: Vyberte konkrétnu zdokumentovanú verziu Suno; príklad používa chirp-crow (v5).</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">make_instrumental</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>boolean</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Povinné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>Podmienky: Pre inštrumentálnu hudbu nastavte true, pre pieseň false.</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Parametre a životný cyklus metódy</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Špecifikácia</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>model, gpt_description_prompt, mv, make_instrumental</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span></td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>text</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>conditions</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>Použite presne tento smerovací selektor Ailoot., Opíšte hudobný nápad alebo tému piesne., Vyberte konkrétnu zdokumentovanú verziu Suno; príklad používa chirp-crow (v5)., Pre inštrumentálnu hudbu nastavte true, pre pieseň false.</td></tr></tbody></table></div><p>Životný cyklus: <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\">Cenník</h3><div class=\"card-result-process\" data-billing-basis><h5>Ako sa vypočíta konečný poplatok</h5><p class=\"note-s\">Zobrazené sadzby slúžia na odhad nákladov pred generovaním. Konečný poplatok sa vypočíta z nákladov zaznamenaných pri pôvodnom generovaní. Namerané trvanie výstupu a predpokladané množstvá nepredstavujú konečné účtované množstvo.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.</p><dl data-price-conditions><dt>Rýchly režim</dt><dd>Neuvedené <span class=\"note-s\">Keď je zvolený rýchly režim</span></dd><dt>Režim Flex</dt><dd>Neuvedené <span class=\"note-s\">Keď je zvolený režim flex</span></dd><dt>Maximálna úroveň uvažovania</dt><dd>Neuvedené <span class=\"note-s\">Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Odhadované sadzby na porovnanie</h4><h4>Ceny podľa konfigurácie</h4><p class=\"note-s\">Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurácia</th><th>Sadzobník</th><th>Odhadované množstvo</th><th>Účtovacie množstvo</th><th>Poplatok</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurácia\" scope=\"row\"><span class=\"card-cell-label\">Konfigurácia</span>Základné sadzby za tokeny</th><td data-cell-label=\"Sadzobník\"><span class=\"card-cell-label\">Sadzobník</span>Základná sadzba</td><td data-cell-label=\"Odhadované množstvo\"><span class=\"card-cell-label\">Odhadované množstvo</span>—</td><td data-cell-label=\"Účtovacie množstvo\"><span class=\"card-cell-label\">Účtovacie množstvo</span>—</td><td data-cell-label=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Vstup · Vstupné tokeny · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Výstup · Výstupné tokeny · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Vstup · Čítanie cache · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Vstup · Zápis do cache · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Vstup · Zápis do cache, 1 hod · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div></td></tr><tr><th data-cell-label=\"Konfigurácia\" scope=\"row\"><span class=\"card-cell-label\">Konfigurácia</span>Za požiadavku</th><td data-cell-label=\"Sadzobník\"><span class=\"card-cell-label\">Sadzobník</span>—</td><td data-cell-label=\"Odhadované množstvo\"><span class=\"card-cell-label\">Odhadované množstvo</span>—</td><td data-cell-label=\"Účtovacie množstvo\"><span class=\"card-cell-label\">Účtovacie množstvo</span>jedna požiadavka</td><td data-cell-label=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Vstup · Odhad iba na porovnanie</span> <b>$0.2</b> <span class=\"price-unit\">za požiadavku</span></div></td></tr><tr><th data-cell-label=\"Konfigurácia\" scope=\"row\"><span class=\"card-cell-label\">Konfigurácia</span>Odhadované náklady na generovanie</th><td data-cell-label=\"Sadzobník\"><span class=\"card-cell-label\">Sadzobník</span>—</td><td data-cell-label=\"Odhadované množstvo\"><span class=\"card-cell-label\">Odhadované množstvo</span>odhad pre jedno generovanie</td><td data-cell-label=\"Účtovacie množstvo\"><span class=\"card-cell-label\">Účtovacie množstvo</span>—</td><td data-cell-label=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Výstup · Odhadované náklady na generovanie · Odhad iba na porovnanie</span> <b>$0.2</b> <span class=\"price-unit\">odhad pred generovaním</span></div><p class=\"note-s\">Tento odhad nepredstavuje dodatočný poplatok ani pevnú sadzbu za dokončené generovanie.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. <a href=\"/docs/sk/billing/reserve/\">Ako funguje rezervácia a vyúčtovanie →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Príklady požiadaviek</h3><h4>Ailoot Ultra · Music</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianty kódu\"><button class=\"cg-tab\" id=\"model-code-2818-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2818-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · vytvoriť iba raz a uchovať potvrdenie</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\">Prečítať pôvodnú úlohu</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\">Uložiť každý hotový výstup, ktorý vám patrí</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Skopírovať kód\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-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\">Prijať a uložiť výsledky</h3><h4>Ailoot Ultra · Music</h4><p class=\"note-s\">Stiahnite každý vrátený obrázok alebo uložte jeho obsah Base64</p><ul class=\"card-result-paths\"><li><code>GET /v1/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>Uchovať všetky dokončené výsledky</h5><p class=\"note-s\">Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.</p><p class=\"note-s\">Zachovajte celú odpoveď a hlavičky, pôvodné identifikátory, každý skutočný výstup a všetky polia spotreby a účtovania. Uložte každý jedinečný súbor vo vašom vlastníctve a zachovajte každú rolu, ktorá naň odkazuje.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Ak treba overiť pôvodnú odpoveď</h5><p class=\"note-s\">Zachovajte vrátené verejné id úlohy alebo operácie a všetky hlavičky. Načítavajte iba pôvodnú úlohu; unknown ani result_pending_check neoprávňujú na ďalšie vytvorenie.</p></div><details class=\"card-about\" data-output-fields><summary>Polia odpovede</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Pole</th><th>Typ</th></tr></thead><tbody><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">polling_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">provider_task_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">data.task_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">data.status</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">data.data[].audio_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">data.data[].image_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">data.data[].image_large_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">data.data[].video_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasy</h3><h4>Aliasy modelov</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=suno-api&amp;route=Ultra&amp;caller=suno-api&amp;fmt=music\"><code>suno-api</code></a></span></p><h4>Aliasy ciest metód</h4><p class=\"note-s\">Použite cesty metód uvedené vyššie.</p><h4>Súvisiace ID na volanie</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": "Zachovajte vrátené verejné id úlohy alebo operácie a všetky hlavičky. Načítavajte iba pôvodnú úlohu; unknown ani result_pending_check neoprávňujú na ďalšie vytvorenie.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Zachovajte celú odpoveď a hlavičky, pôvodné identifikátory, každý skutočný výstup a všetky polia spotreby a účtovania. Uložte každý jedinečný súbor vo vašom vlastníctve a zachovajte každú rolu, ktorá naň odkazuje.",
              "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": "Použite presne tento smerovací selektor Ailoot.",
                "default_known": false,
                "enum": [
                  "suno-api"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Opíšte hudobný nápad alebo tému piesne.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "gpt_description_prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Vyberte konkrétnu zdokumentovanú verziu Suno; príklad používa 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": "Pre inštrumentálnu hudbu nastavte true, pre pieseň 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": [
              "Použite presne tento smerovací selektor Ailoot.",
              "Opíšte hudobný nápad alebo tému piesne.",
              "Vyberte konkrétnu zdokumentovanú verziu Suno; príklad používa chirp-crow (v5).",
              "Pre inštrumentálnu hudbu nastavte true, pre pieseň 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": "Tento odhad nepredstavuje dodatočný poplatok ani pevnú sadzbu za dokončené generovanie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Odhadované náklady na generovanie",
            "units": [
              {
                "amount": "0.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": "ae3a1002edef08c3b77b43d15d25a7684bc61bd6880c353def62a80ee0cef56c",
    "input_html_sha256": "648a41d717ebe29ded90c2a30f752d9db4f819cd0877e214d5581b34c7b8e3bd",
    "private_audit_sha256": "97d7c96163e954f1df94f431ad18b1da681d4ad2ddd3d264de0b6f13cff28a79",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sk/suno-api/",
    "description": "Suno vytvára hudbu z krátkeho písomného nápadu. Zdokumentovaný automatický postup vytvára dve skladby a zahŕňa voľbu inštrumentálnej verzie, pričom hotový zvuk a metadáta skladieb sa vracajú prostredníctvom úlohy generovania.",
    "locale": "sk",
    "md_url": "https://ailoot.ai/models/sk/suno-api/index.md",
    "title": "suno-api — Ailoot",
    "url": "https://ailoot.ai/models/sk/suno-api/"
  },
  "rawModel": {
    "about": "Suno je služba na generovanie hudby, ktorá premieňa písomný nápad na skladby. Zdokumentovaný automatický postup prijíma krátky opis zamýšľanej hudby a voľbu inštrumentálnej verzie a následne vygeneruje dve skladby. Pomocou zadania určite tému, náladu a hudobné smerovanie, ktoré chcete počuť v hotových skladbách.\n\nZačnite úlohou, ktorú má hudba plniť. Pokojný podklad k vysvetľovaniu, energický úvod krátkeho videa alebo hĺbavá pieseň o ceste dávajú zadaniu konkrétny účel. V niekoľkých jasných formuláciách opíšte zamýšľanú náladu a hudobné vlastnosti, ktoré sú pre tento účel podstatné.\n\nPri piesni so spevom jasne určite tému a jazyk v tvorivom zadaní. Opíšte myšlienku, ktorú má skladba vyjadrovať, a tón, ktorý má interpretácia sprostredkovať. Vypočujte si hotový výsledok a posúďte, ako spolu fungujú spev, slová a aranžmán. Uchovajte vygenerované informácie o skladbe spolu so zvukom na vyhodnotenie.\n\nPri inštrumentálnom výsledku použite zdokumentovanú voľbu inštrumentálnej verzie a v texte opíšte hudobné smerovanie. Uveďte požadovanú atmosféru a výrazné nástroje, ak sú pre projekt podstatné. Posúďte hotovú skladbu vzhľadom na jej miesto v strihu vrátane úsekov, ktoré majú znieť pod hovoreným slovom alebo podporovať vizuálny prechod.\n\nAutomatický postup vytvára z odoslaného nápadu dve skladby. Považujte ich za samostatné návrhy a uchovajte oba hotové zvukové súbory. Vypočujte si pri každom úvod, rozvoj aj záver. Porovnajte skutočné skladby podľa rovnakého účelu vrátane ich nálady, aranžmánu a vhodnosti na plánované použitie.\n\nGenerovanie prebieha formou úlohy. Pri kontrole výsledku si uchovajte vrátené ID úlohy a odlišujte hotové skladby od položiek, ktoré sa ešte spracúvajú. Zdokumentovaný výsledok zahŕňa informácie na úrovni skladby, napríklad názov, stav, umiestnenie zvuku a trvanie. Uložte samotný hotový zvuk spolu s dostupnými metadátami a pôvodným zadaním.\n\nPri videu alebo prezentácii si vybranú hudbu skúšobne vypočujte spolu so skutočným materiálom. Skontrolujte úvod, prechody a záver pri zamýšľanej hlasitosti počúvania. Označte úsek, ktorý slúži strihu, a uchovajte celú skladbu pre neskoršie zmeny. Vhodný hudobný úryvok sa posudzuje v kontexte hlasu, obrazov a tempa hotového diela.\n\nUchovajte písomný nápad, voľbu inštrumentálnej verzie, výber modelu a všetky hotové skladby spolu. Keď návrh potrebuje úpravu, určite hudobný nesúlad, napríklad aranžmán príliš hutný pod hovoreným slovom alebo úvod, ktorý sa rozvíja príliš pomaly. Zachovajte užitočné smerovanie a upravte tú časť zadania, ktorá súvisí s daným problémom.",
    "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": "Úplný cenník konfigurácie nájdete v podrobnostiach."
      }
    ],
    "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": "Zachovajte vrátené verejné id úlohy alebo operácie a všetky hlavičky. Načítavajte iba pôvodnú úlohu; unknown ani result_pending_check neoprávňujú na ďalšie vytvorenie.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Zachovajte celú odpoveď a hlavičky, pôvodné identifikátory, každý skutočný výstup a všetky polia spotreby a účtovania. Uložte každý jedinečný súbor vo vašom vlastníctve a zachovajte každú rolu, ktorá naň odkazuje.",
              "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": "Použite presne tento smerovací selektor Ailoot.",
                "default_known": false,
                "enum": [
                  "suno-api"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Opíšte hudobný nápad alebo tému piesne.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "gpt_description_prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Vyberte konkrétnu zdokumentovanú verziu Suno; príklad používa 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": "Pre inštrumentálnu hudbu nastavte true, pre pieseň 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": [
              "Použite presne tento smerovací selektor Ailoot.",
              "Opíšte hudobný nápad alebo tému piesne.",
              "Vyberte konkrétnu zdokumentovanú verziu Suno; príklad používa chirp-crow (v5).",
              "Pre inštrumentálnu hudbu nastavte true, pre pieseň 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": "Tento odhad nepredstavuje dodatočný poplatok ani pevnú sadzbu za dokončené generovanie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Odhadované náklady na generovanie",
            "units": [
              {
                "amount": "0.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 vytvára hudbu z krátkeho písomného nápadu. Zdokumentovaný automatický postup vytvára dve skladby a zahŕňa voľbu inštrumentálnej verzie, pričom hotový zvuk a metadáta skladieb sa vracajú prostredníctvom úlohy generovania.",
    "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 vytvára hudbu z krátkeho písomného nápadu. Zdokumentovaný automatický postup vytvára dve skladby a zahŕňa voľbu inštrumentálnej verzie, pričom hotový zvuk a metadáta skladieb sa vracajú prostredníctvom úlohy generovania.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "7b8f88ebefa40ac64ade9c2b090fb3c3997ada531b9d9668b391e53cefa61c97",
    "renderer_sha256": "94893ba0fa4d7b7d32370787b705f436a4c2569f84ec7b33063549adc74b07e0"
  },
  "sourceRevision": "5271a14e743ac17174186a8590f26948c5e72db7068c525a96295aa129622d49"
}
