{
  "aboutHtml": "<p>google/lyria mencipta muzik daripada prompt bertulis melalui /v1/music/generations. Kegunaan konkrit ialah meminta iringan instrumental terkawal untuk demonstrasi produk, dengan menerangkan instrumen utama dan ruang yang diperlukan narasi. Pilih laluan apabila klip muzik dijana ialah hasil dikehendaki.</p><p>Permintaan memerlukan model dan prompt. Kawalan n atau count menerima satu hingga lapan klip, dan kaedah memulangkan hasil penjanaan secara segerak. Simpan setiap klip dipulangkan serta metadata sebenarnya. Entri tidak menyediakan input rujukan audio, tetapan tempoh atau medan tempo, maka ia bukan kawalan boleh dipilih secara bebas. Terangkan niat muzik dalam prompt tanpa menganggapnya sifat output diukur yang dijamin.</p>",
  "aboutText": "google/lyria mencipta muzik daripada prompt bertulis melalui /v1/music/generations. Kegunaan konkrit ialah meminta iringan instrumental terkawal untuk demonstrasi produk, dengan menerangkan instrumen utama dan ruang yang diperlukan narasi. Pilih laluan apabila klip muzik dijana ialah hasil dikehendaki. Permintaan memerlukan model dan prompt. Kawalan n atau count menerima satu hingga lapan klip, dan kaedah memulangkan hasil penjanaan secara segerak. Simpan setiap klip dipulangkan serta metadata sebenarnya. Entri tidak menyediakan input rujukan audio, tetapan tempoh atau medan tempo, maka ia bukan kawalan boleh dipilih secara bebas. Terangkan niat muzik dalam prompt tanpa menganggapnya sifat output diukur yang dijamin.",
  "editorialOverlay": {
    "copy_fields": {
      "about_html": "<p>google/lyria mencipta muzik daripada prompt bertulis melalui /v1/music/generations. Kegunaan konkrit ialah meminta iringan instrumental terkawal untuk demonstrasi produk, dengan menerangkan instrumen utama dan ruang yang diperlukan narasi. Pilih laluan apabila klip muzik dijana ialah hasil dikehendaki.</p><p>Permintaan memerlukan model dan prompt. Kawalan n atau count menerima satu hingga lapan klip, dan kaedah memulangkan hasil penjanaan secara segerak. Simpan setiap klip dipulangkan serta metadata sebenarnya. Entri tidak menyediakan input rujukan audio, tetapan tempoh atau medan tempo, maka ia bukan kawalan boleh dipilih secara bebas. Terangkan niat muzik dalam prompt tanpa menganggapnya sifat output diukur yang dijamin.</p>",
      "short_text": "Penjanaan muzik daripada teks dengan satu hingga lapan klip diminta dan penghantaran hasil segerak."
    },
    "copy_sha256": "d383200d8fb4bea732f1e3e952102639bab99ddd122ac62b7e60e08fac3ca107",
    "copy_source": {
      "locale": "ms",
      "pack_sha256": "0f56d90ba41881e1134accf82e57338f246f8753ca4c0cee929aaffada5d10e7",
      "record_model_id": "google/lyria",
      "source_facts_sha256": "506c37c77e2f89f352c42529eb122f70d0712968bf18a3edf9ad88e1b5e3a7e8",
      "validation_sha256": "a2ac2f28056280fc0b2ea34a501bf156d5ce155406e57e708edf30bfdf6bfdc6"
    },
    "html_sha256": "93436d157b0500da917ffa748d38e8a11ec31ebdf47ea35c6fe23e46208a3982",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ms",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">G</span><h2 id=\"sheet-title\">Lyria</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Tutup\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/lyria</code><button type=\"button\" id=\"copy-id\">Salin ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Bahagian kad model\"><button type=\"button\" data-card-jump=\"overview\">Pengenalan</button><button type=\"button\" data-card-jump=\"methods\">Input &amp; kaedah</button><button type=\"button\" data-card-jump=\"pricing\">Pelan harga</button><button type=\"button\" data-card-jump=\"examples\">Contoh</button><button type=\"button\" data-card-jump=\"results\">Hasil</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Kaedah API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Core|music|/v1/music/generations|google%2Flyria\">Muzik</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\">Pengenalan</h3><p class=\"mdesc-full\">Penjanaan muzik daripada teks dengan satu hingga lapan klip diminta dan penghantaran hasil segerak.</p><dl class=\"card-io\" data-card-io><div><dt>Input yang diterima</dt><dd>Teks</dd></div><div><dt>Hasil</dt><dd>music</dd></div></dl><details class=\"card-about\"><summary>Tentang model</summary><p class=\"note-s\" data-model-method-boundary>Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.</p><div class=\"mabout\" id=\"m-about\"><p>google/lyria mencipta muzik daripada prompt bertulis melalui /v1/music/generations. Kegunaan konkrit ialah meminta iringan instrumental terkawal untuk demonstrasi produk, dengan menerangkan instrumen utama dan ruang yang diperlukan narasi. Pilih laluan apabila klip muzik dijana ialah hasil dikehendaki.</p><p>Permintaan memerlukan model dan prompt. Kawalan n atau count menerima satu hingga lapan klip, dan kaedah memulangkan hasil penjanaan secara segerak. Simpan setiap klip dipulangkan serta metadata sebenarnya. Entri tidak menyediakan input rujukan audio, tetapan tempoh atau medan tempo, maka ia bukan kawalan boleh dipilih secara bebas. Terangkan niat muzik dalam prompt tanpa menganggapnya sifat output diukur yang dijamin.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tersedia di Ailoot · input &amp; kaedah</h3><details class=\"card-method\" open><summary><b>Ailoot · Muzik</b> <code>POST /v1/music/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Input</dt><dd><code>text</code></dd></div><div><dt>Output</dt><dd><code>music</code></dd></div><div><dt>Format output</dt><dd>klip audio lengkap milik anda / pautan JSON</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Medan</th><th>Jenis</th><th>Keperluan</th><th>Nilai &amp; had</th><th>Lalai</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>google/lyria</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>Panjang minimum: 1</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">n</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>integer</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Pilihan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>Minimum: 1</div><div>Maksimum: 8</div></td><td data-cell-label=\"Lalai\" data-default=\"known\"><span class=\"card-cell-label\">Lalai</span>1</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">count</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>integer</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Pilihan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>Minimum: 1</div><div>Maksimum: 8</div><div>Syarat: Jika n turut diberikan, bilangannya mesti sepadan</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Gabungan bahan input</summary><p class=\"note-s\"><b>text_to_music</b> · Diperlukan: prompt</p></details><details class=\"note-s\" data-method-contract><summary>Parameter kaedah dan kitar hayat</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrak</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>text</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=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>null</td></tr></tbody></table></div><p>Kitar hayat: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · task_id sebenar yang dikembalikan atau rekod pustaka media</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">Struktur kaedah dan ID adalah tepat; keupayaan pembekal berasingan daripada penerimaan permintaan.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Pelan harga</h3><h4>Kadar kaedah Ailoot</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Muzik</b><code>POST /v1/music/generations</code></header><dl><div><dt>Output</dt><dd>USD 0.08 <em>bagi setiap klip</em></dd></div><div data-billing-reference=\"not-added\"><dt>Rujukan sahaja · tidak ditambah</dt><dd>USD 0.08 <em>bagi setiap permintaan</em></dd></div></dl><div data-music-clip-pricing=\"v1\"><p class=\"note-s\">Klip yang dihantar × kadar asas setiap klip. Kadar rujukan setiap permintaan tidak ditambah. Contoh sebelum pelarasan yang berkenaan.</p><p><code>1 × USD 0.08 = USD 0.08</code></p><p><code>4 × USD 0.08 = USD 0.32</code></p></div></section><p class=\"note-s\">Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. <a href=\"/docs/ms/billing/reserve/\">Cara rizab dan penyelesaian caj berfungsi →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Contoh permintaan</h3><h4>Ailoot · Muzik</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kod\"><button class=\"cg-tab\" id=\"model-code-354-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-354-panel-0\" aria-selected=\"true\" tabindex=\"0\">Contoh muzik</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Salin kod\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-354-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-354-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_PROMPT_FILE:?Set your actual UTF-8 music brief}&quot;\nexport AILOOT_PROMPT_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;google/lyria&quot;, &quot;prompt&quot;: &quot;&quot;}&#39;)\nf=Path(os.environ[&quot;AILOOT_PROMPT_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose your actual UTF-8 brief&quot;)\np[&#39;prompt&#39;]=f.read_text(encoding=&quot;utf-8&quot;)\nif not p[&#39;prompt&#39;].strip():raise SystemExit(&quot;Brief must contain text&quot;)\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/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\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin, urlparse\nresult=json.loads(Path(&quot;result.json&quot;).read_text(encoding=&quot;utf-8&quot;))\nprint(json.dumps(result,ensure_ascii=False,indent=2))\nfor number,clip in enumerate(result.get(&quot;data&quot;) or []):\n    u=urlparse(urljoin(&quot;https://api.ailoot.ai&quot;,clip[&quot;url&quot;]))\n    if u.scheme!=&quot;https&quot; or not u.hostname or u.username or u.password:\n        raise SystemExit(&quot;Result URL must be HTTPS without embedded credentials&quot;)\n    owned=u.netloc==&quot;api.ailoot.ai&quot; and u.path.startswith(&quot;/v1/media/assets/&quot;) and u.path.endswith(&quot;/content&quot;)\n    args=[&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u.geturl()]\n    if owned: args += [&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;]]\n    raw=subprocess.check_output(args)\n    ext=&quot;wav&quot; if raw.startswith(b&quot;RIFF&quot;) and raw[8:12]==b&quot;WAVE&quot; else &quot;flac&quot; if raw.startswith(b&quot;fLaC&quot;) else &quot;ogg&quot; if raw.startswith(b&quot;OggS&quot;) else &quot;mp3&quot; if raw.startswith(b&quot;ID3&quot;) or raw[:1]==b&quot;\\xff&quot; else &quot;bin&quot;\n    f=Path(&quot;music-&quot;+str(number)+&quot;.&quot;+ext);f.write_bytes(raw)\n    print(&quot;Saved&quot;,f,clip.get(&quot;asset_id&quot;))\n\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Terima dan simpan hasil</h3><h4>Ailoot · Muzik</h4><p class=\"note-s\">klip audio lengkap milik anda / pautan JSON</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Simpan semua hasil yang selesai</h5><p class=\"note-s\">Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.</p><p class=\"note-s\">Simpan/dapatkan setiap klip yang dikembalikan dan kekalkan ID, MIME serta metadata sebenar. Kaedah ini segerak; tiada URL semakan berkala berasingan untuk penjanaan muzik Ailoot diperkenalkan.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asal perlu disemak</h5><p class=\"note-s\">Jika hasil muzik memerlukan semakan, simpan operation_id/X-Client-Request-ID asal dan maklumat klip yang dikembalikan. Pulihkan klip sedia ada milik anda melalui pustaka media menggunakan nilai task_id atau asset_id sebenar. Jangan hantar semula permintaan muzik atau membina URL semakan berkala penjanaan daripada operation_id.</p></div><details class=\"card-about\" data-output-fields><summary>Medan respons</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Medan</th><th>Jenis</th></tr></thead><tbody><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">response_id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>owned clip record</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Ralat dan langkah seterusnya</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Respons</th><th>Syarat</th><th>Langkah seterusnya</th></tr></thead><tbody><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Medan wajib, perwakilan bahan atau nilai parameter tidak sah</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Betulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span><code>server_error</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Respons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakan</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Simpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias model</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=google%2Flyria&amp;route=Core&amp;caller=google%2Flyria&amp;fmt=music\"><code>google/lyria</code></a></span></p><h4>Alias laluan kaedah</h4><p class=\"note-s\">Gunakan laluan kaedah yang dipaparkan di atas.</p><h4>ID pemanggil berkaitan</h4><p class=\"note-s\"><a href=\"#m=google%2Flyria&amp;route=Core&amp;caller=google%2Flyria&amp;fmt=music\"><code>google/lyria</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/lyria",
        "fmt": "music",
        "http": "POST",
        "path": "/v1/music/generations",
        "request_model_id": "google/lyria",
        "route_label": "Core"
      },
      "method_key": "Core|music|/v1/music/generations|google%2Flyria",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Save/fetch every returned clip and preserve actual ID, MIME and metadata. The method is synchronous; no separate Ailoot music generationpollingURL is introduced.",
            "errors": [
              {
                "code": null,
                "condition": "Medan wajib, perwakilan bahan atau nilai parameter tidak sah",
                "http_status": 400,
                "recovery": "Betulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakan",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Jika hasil muzik memerlukan semakan, simpan operation_id/X-Client-Request-ID asal dan maklumat klip yang dikembalikan. Pulihkan klip sedia ada milik anda melalui pustaka media menggunakan nilai task_id atau asset_id sebenar. Jangan hantar semula permintaan muzik atau membina URL semakan berkala penjanaan daripada operation_id."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_music",
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_music"
            ],
            "outputs": {
              "all_results": "Simpan/dapatkan setiap klip yang dikembalikan dan kekalkan ID, MIME serta metadata sebenar. Kaedah ini segerak; tiada URL semakan berkala berasingan untuk penjanaan muzik Ailoot diperkenalkan.",
              "family": "music",
              "fields": [
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "response_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "owned clip record"
                }
              ],
              "format": "klip audio lengkap milik anda / pautan JSON"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/lyria"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": 1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 8,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Jika n turut diberikan, bilangannya mesti sepadan",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 8,
                "minimum": 1,
                "name": "count",
                "required": false,
                "type": "integer"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Struktur kaedah dan ID adalah tepat; keupayaan pembekal berasingan daripada penerimaan permintaan."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id sebenar yang dikembalikan atau rekod pustaka media",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "If a music result requires a check, keep the original operation_id/X-Client-Request-ID and returned clip information. Recover existing owned clips through the media library using actual task_id or asset_id values. Do not resubmit the music request or construct a generation polling URL from operation_id."
          },
          "method": {
            "http": "POST",
            "path": "/v1/music/generations"
          },
          "operation_modes": [
            "music"
          ],
          "output": {
            "family": [
              "music"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_PROMPT_FILE:?Set your actual UTF-8 music brief}\"\nexport AILOOT_PROMPT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"google/lyria\", \"prompt\": \"\"}')\nf=Path(os.environ[\"AILOOT_PROMPT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 brief\")\np['prompt']=f.read_text(encoding=\"utf-8\")\nif not p['prompt'].strip():raise SystemExit(\"Brief must contain text\")\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/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\nexport AILOOT_API_KEY\npython3 - <<'PY_RESULT'\nimport json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin, urlparse\nresult=json.loads(Path(\"result.json\").read_text(encoding=\"utf-8\"))\nprint(json.dumps(result,ensure_ascii=False,indent=2))\nfor number,clip in enumerate(result.get(\"data\") or []):\n    u=urlparse(urljoin(\"https://api.ailoot.ai\",clip[\"url\"]))\n    if u.scheme!=\"https\" or not u.hostname or u.username or u.password:\n        raise SystemExit(\"Result URL must be HTTPS without embedded credentials\")\n    owned=u.netloc==\"api.ailoot.ai\" and u.path.startswith(\"/v1/media/assets/\") and u.path.endswith(\"/content\")\n    args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u.geturl()]\n    if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n    raw=subprocess.check_output(args)\n    ext=\"wav\" if raw.startswith(b\"RIFF\") and raw[8:12]==b\"WAVE\" else \"flac\" if raw.startswith(b\"fLaC\") else \"ogg\" if raw.startswith(b\"OggS\") else \"mp3\" if raw.startswith(b\"ID3\") or raw[:1]==b\"\\xff\" else \"bin\"\n    f=Path(\"music-\"+str(number)+\".\"+ext);f.write_bytes(raw)\n    print(\"Saved\",f,clip.get(\"asset_id\"))\n\nPY_RESULT\n",
            "label": "Compose from your actual music brief",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "music",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Muzik",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "music"
        ],
        "path": "/v1/music/generations",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.08,
                "amount_unit": "usd_per_display_unit",
                "key": "music_output_clip",
                "label": "per clip",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_display_unit",
                "key": "per_request",
                "label": "per request",
                "side": "out"
              }
            ]
          }
        ],
        "request_model_id": "google/lyria",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "music_output_clip",
        "units": [
          {
            "key": "music_output_clip",
            "label": "per clip",
            "side": "out",
            "usd": 0.08
          },
          {
            "key": "per_request",
            "label": "per request",
            "side": "out",
            "usd": 0.08
          }
        ]
      }
    }
  ],
  "model_id": "google/lyria",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "8eb73261ec2dde5387fad67d66824adfe25ce7668cdd48b0a3ea09da3f54bdbc",
    "input_html_sha256": "6e20cb8f5b6fa2663dee458bdd8d4207e323ab9adef65cee70526f5632cacfd8",
    "private_audit_sha256": "1d066c8460b5cbd8baad713cf87296fd264d8fdd1c425529e0e9d996dc3c15ff",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ms/google-lyria/",
    "description": "Penjanaan muzik daripada teks dengan satu hingga lapan klip diminta dan penghantaran hasil segerak.",
    "locale": "ms",
    "md_url": "https://ailoot.ai/models/ms/google-lyria/index.md",
    "title": "Lyria — Ailoot",
    "url": "https://ailoot.ai/models/ms/google-lyria/"
  },
  "rawModel": {
    "about": "Lyria ialah profil penjanaan muzik yang dipaparkan di sini dengan input teks dan output muzik.\n\nTulis huraian berdasarkan perkara yang perlu didengar oleh pendengar. Nyatakan suasana, alat muzik yang mahu anda tonjolkan, tempo dan tujuan penggunaan. Huraian adegan boleh membezakan pembukaan yang tenang, bahagian tengah yang lebih bertenaga dan penutup yang terkawal.\n\nUntuk muzik latar, jelaskan sama ada trek perlu menyokong penceritaan atau menjadi tunjang adegan dengan sendirinya. Huraikan ciri muzik secara langsung, seperti permainan piano dengan sedikit nada, denyutan yang sekata atau tekstur orkestra yang hangat.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "ctx": null,
    "formats": [
      "music"
    ],
    "id": "google/lyria",
    "input": [
      "text"
    ],
    "kind": "music",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Save/fetch every returned clip and preserve actual ID, MIME and metadata. The method is synchronous; no separate Ailoot music generationpollingURL is introduced.",
            "errors": [
              {
                "code": null,
                "condition": "Medan wajib, perwakilan bahan atau nilai parameter tidak sah",
                "http_status": 400,
                "recovery": "Betulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakan",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Jika hasil muzik memerlukan semakan, simpan operation_id/X-Client-Request-ID asal dan maklumat klip yang dikembalikan. Pulihkan klip sedia ada milik anda melalui pustaka media menggunakan nilai task_id atau asset_id sebenar. Jangan hantar semula permintaan muzik atau membina URL semakan berkala penjanaan daripada operation_id."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_music",
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_music"
            ],
            "outputs": {
              "all_results": "Simpan/dapatkan setiap klip yang dikembalikan dan kekalkan ID, MIME serta metadata sebenar. Kaedah ini segerak; tiada URL semakan berkala berasingan untuk penjanaan muzik Ailoot diperkenalkan.",
              "family": "music",
              "fields": [
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "response_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "owned clip record"
                }
              ],
              "format": "klip audio lengkap milik anda / pautan JSON"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/lyria"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": 1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 8,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Jika n turut diberikan, bilangannya mesti sepadan",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 8,
                "minimum": 1,
                "name": "count",
                "required": false,
                "type": "integer"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Struktur kaedah dan ID adalah tepat; keupayaan pembekal berasingan daripada penerimaan permintaan."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id sebenar yang dikembalikan atau rekod pustaka media",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "If a music result requires a check, keep the original operation_id/X-Client-Request-ID and returned clip information. Recover existing owned clips through the media library using actual task_id or asset_id values. Do not resubmit the music request or construct a generation polling URL from operation_id."
          },
          "method": {
            "http": "POST",
            "path": "/v1/music/generations"
          },
          "operation_modes": [
            "music"
          ],
          "output": {
            "family": [
              "music"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_PROMPT_FILE:?Set your actual UTF-8 music brief}\"\nexport AILOOT_PROMPT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"google/lyria\", \"prompt\": \"\"}')\nf=Path(os.environ[\"AILOOT_PROMPT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 brief\")\np['prompt']=f.read_text(encoding=\"utf-8\")\nif not p['prompt'].strip():raise SystemExit(\"Brief must contain text\")\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/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\nexport AILOOT_API_KEY\npython3 - <<'PY_RESULT'\nimport json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin, urlparse\nresult=json.loads(Path(\"result.json\").read_text(encoding=\"utf-8\"))\nprint(json.dumps(result,ensure_ascii=False,indent=2))\nfor number,clip in enumerate(result.get(\"data\") or []):\n    u=urlparse(urljoin(\"https://api.ailoot.ai\",clip[\"url\"]))\n    if u.scheme!=\"https\" or not u.hostname or u.username or u.password:\n        raise SystemExit(\"Result URL must be HTTPS without embedded credentials\")\n    owned=u.netloc==\"api.ailoot.ai\" and u.path.startswith(\"/v1/media/assets/\") and u.path.endswith(\"/content\")\n    args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u.geturl()]\n    if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n    raw=subprocess.check_output(args)\n    ext=\"wav\" if raw.startswith(b\"RIFF\") and raw[8:12]==b\"WAVE\" else \"flac\" if raw.startswith(b\"fLaC\") else \"ogg\" if raw.startswith(b\"OggS\") else \"mp3\" if raw.startswith(b\"ID3\") or raw[:1]==b\"\\xff\" else \"bin\"\n    f=Path(\"music-\"+str(number)+\".\"+ext);f.write_bytes(raw)\n    print(\"Saved\",f,clip.get(\"asset_id\"))\n\nPY_RESULT\n",
            "label": "Compose from your actual music brief",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "music",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Muzik",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "music"
        ],
        "path": "/v1/music/generations",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.08,
                "amount_unit": "usd_per_display_unit",
                "key": "music_output_clip",
                "label": "per clip",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_display_unit",
                "key": "per_request",
                "label": "per request",
                "side": "out"
              }
            ]
          }
        ],
        "request_model_id": "google/lyria",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "music_output_clip",
        "units": [
          {
            "key": "music_output_clip",
            "label": "per clip",
            "side": "out",
            "usd": 0.08
          },
          {
            "key": "per_request",
            "label": "per request",
            "side": "out",
            "usd": 0.08
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "google/lyria",
        "request_model_id": "google/lyria",
        "route_label": "Core"
      }
    ],
    "name": "Lyria",
    "price": {
      "in": null,
      "in_label": null,
      "out": 0.08,
      "out_label": "per clip",
      "sort_in": null,
      "sort_out": null,
      "varies": false
    },
    "short": "Lyria ialah profil teks-ke-muzik. Huraikan suasana, alat muzik, irama dan adegan yang dimaksudkan untuk membentuk huraian muzik bagi video, pembentangan atau projek kreatif."
  },
  "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": "Penjanaan muzik daripada teks dengan satu hingga lapan klip diminta dan penghantaran hasil segerak.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "e3f4ca590570ed553b3f263641831941551c3c23def3545d226c594e1a65670a",
    "renderer_sha256": "1dab5ba62521e9568c8b7c82005622cabbf330a075df7cce1f83274a04009460"
  },
  "sourceRevision": "7c4842a1daa2f7260ccab8b4019fbbd32135c806b90cb92712f4e39882a4fd71"
}
