{
  "aboutHtml": "<p>Vidu Q2 viduq2 orqali tanlanadigan matndan video yaratish profilida yozma sahnadan video yaratadi. Majburiy kirishlar — modelning aniq identifikatori va sahnani tavsiflovchi prompt. Undan tashqi ko‘rinishi va harakatini so‘z bilan belgilash mumkin bo‘lgan qisqa mahsulot konsepsiyasi, joyni tanishtiruvchi umumiy ko‘rinish yoki personaj harakati uchun foydalaning. Bu sozlangan usul matndan video yaratishdir; uning tavsifi shu model tanloviga alohida tasvir referensi yoki videoni tahrirlash rejimini biriktirmaydi.</p><p>Topshiriqni ko‘rinadigan ketma-ketlik atrofida tuzing. Obyekt, joy, harakat, kadr yirikligi, kamera siljishi va yakuniy kompozitsiyani belgilang. Mahsulot konsepsiyasida stol ustidagi buyum, materiali bo‘ylab siljiydigan yorug‘lik va tanish tafsilot ustida tugaydigan sekin kamera yaqinlashuvini tavsiflang. Joy sahnasida markaziy nuqtaga o‘tishdan oldin muhitni tanishtiring. Sahna kerakli yakuniga ulgurishi uchun harakatni tanlangan klip uzunligiga mos saqlang.</p><p>Prompt chegarasi 2,000 belgi. Asosiy obyekt va harakatni birinchi o‘ringa qo‘ying, keyin kerakli natijaga ta’sir qiladigan yorug‘lik, material, muhit va kamera tafsilotlarini qo‘shing. Vizual uslubni promptda belgilang. Q2 ga xos qo‘llanma alohida style va movement_amplitude parametrlari bu modelda ta’sir qilmasligini aytadi; shuning uchun general yoki anime tayyor sozlamasi hamda harakat amplitudasi tanlovlari aniq sahna tavsifining o‘rnini bosmaydi.</p><p>Modelga xos davomiylik sozlamasi bir soniyadan o‘n soniyagacha butun sonlarni qabul qiladi. Q2 ga xos aniqlik tanlovlari 540p, 720p va 1080p; hujjatlashtirilgan standart 720p. Davomiylik va aniqlikni harakat hamda foydalanish joyiga qarab birga tanlang. Qisqa ochib ko‘rsatish va uzunroq harakat turlicha vaqt talab qiladi; so‘ralgan davomiylikni oshirish o‘zgarmagan topshiriqni shunchaki cho‘zish emas, ko‘rinadigan ketma-ketlikka xizmat qilsin. Yakuniy joylashtirishni tayyorlashda qaytgan klipning haqiqiy o‘lchamlari va uzunligini tekshiring.</p><p>Hujjatlashtirilgan aspect_ratio tanlovlari 16:9, 9:16, 3:4, 4:3 va 1:1; standart 16:9. Qo‘llanma Q2 oilasi uchun 3:4 va 4:3 ni ochiq kiritadi. Yaratishdan oldin kadrni tanlang va unga mos kompozitsiyani tavsiflang: tik ko‘rinishda asosiy obyektni ravshan saqlang yoki yotiq kadr kengligidan atrof muhitni ko‘rsatish uchun foydalaning. Yakuniy ko‘rinish kerakli sahifa, taqdimot yoki keyin matn joylash uchun yetarlicha aniq bo‘lsin.</p><p>seed maydoni variatsiyani boshqaradi. Uni bermaslik yoki 0 berish tasodifiy qiymatni tanlaydi; noldan farqli qiymat esa takrorlanuvchi yaratish uchun hujjatlashtirilgan o‘zgarmas seed tanlovini belgilaydi. Versiyalarni solishtirishda qaytarilgan seed’ni prompt va sozlamalar bilan saqlang. Umumiy amal audio va off_peak boshqaruvlarini ham aynan Q3 modellari uchun hujjatlashtiradi. O‘sha Q3 tanlovlari ushbu Q2 profiliga biriktirilgan imkoniyatlar emas; bu so‘rovni uning hujjatlashtirilgan matn kirishi va video chiqishi asosida rejalang.</p><p>Yaratish asinxron. Yuborish task_id va boshlang‘ich holatni qaytaradi; yangi yaratilgan vazifa uchun created ishlatiladi. Ishlovni kuzatishda vazifaning shu identifikatorini saqlang. Hujjatlashtirilgan natija so‘rovi muvaffaqiyatli natija uchun state=success dan foydalanadi va creations massivini qaytaradi. Har bir elementning video URL’i creations[].url da bo‘ladi; vazifada doimo aynan bitta natija bo‘ladi deb hisoblamasdan, qaytarilgan har bir videoni saqlang.</p><p>Natija hujjatlari haqiqiy videoning duration, fps hamda aniqlik eni va bo‘yini ham qaytaradi. Misoldagi kadrlar chastotasi yoki o‘lchamlarni o‘zgarmas Q2 spetsifikatsiyasi deb qabul qilmasdan, qaytarilgan shu qiymatlarni tayyor klip bilan saqlang. Vazifa yaratish javobida so‘rov konfiguratsiyasi yonida credits qiymati ham bor. Har bir video o‘z yaratish sozlamalariga bog‘liq qolishi uchun qaytarilgan shu vazifa metama’lumotlarini va tugallangan vazifaning identifikatorini natija bilan saqlang.</p><p>Butun ketma-ketlikni asl topshiriqqa solishtiring: obyekt qiyofasi, buyum shakli, harakat yo‘nalishi, kamera izchilligi va kerakli yakuniy ko‘rinish. Tuzatishda topshiriqqa mos kelmagan aniq tafsilotni belgilang va sahnaning muvaffaqiyatli qismlarini saqlang. Keyingi solishtirish haqiqiy natijalarga asoslanishi uchun prompt, aniq model tanlovi, sozlamalar, vazifa identifikatori va tugallangan videolarni birga saqlang.</p>",
  "aboutText": "Vidu Q2 viduq2 orqali tanlanadigan matndan video yaratish profilida yozma sahnadan video yaratadi. Majburiy kirishlar — modelning aniq identifikatori va sahnani tavsiflovchi prompt. Undan tashqi ko‘rinishi va harakatini so‘z bilan belgilash mumkin bo‘lgan qisqa mahsulot konsepsiyasi, joyni tanishtiruvchi umumiy ko‘rinish yoki personaj harakati uchun foydalaning. Bu sozlangan usul matndan video yaratishdir; uning tavsifi shu model tanloviga alohida tasvir referensi yoki videoni tahrirlash rejimini biriktirmaydi.\n\nTopshiriqni ko‘rinadigan ketma-ketlik atrofida tuzing. Obyekt, joy, harakat, kadr yirikligi, kamera siljishi va yakuniy kompozitsiyani belgilang. Mahsulot konsepsiyasida stol ustidagi buyum, materiali bo‘ylab siljiydigan yorug‘lik va tanish tafsilot ustida tugaydigan sekin kamera yaqinlashuvini tavsiflang. Joy sahnasida markaziy nuqtaga o‘tishdan oldin muhitni tanishtiring. Sahna kerakli yakuniga ulgurishi uchun harakatni tanlangan klip uzunligiga mos saqlang.\n\nPrompt chegarasi 2,000 belgi. Asosiy obyekt va harakatni birinchi o‘ringa qo‘ying, keyin kerakli natijaga ta’sir qiladigan yorug‘lik, material, muhit va kamera tafsilotlarini qo‘shing. Vizual uslubni promptda belgilang. Q2 ga xos qo‘llanma alohida style va movement_amplitude parametrlari bu modelda ta’sir qilmasligini aytadi; shuning uchun general yoki anime tayyor sozlamasi hamda harakat amplitudasi tanlovlari aniq sahna tavsifining o‘rnini bosmaydi.\n\nModelga xos davomiylik sozlamasi bir soniyadan o‘n soniyagacha butun sonlarni qabul qiladi. Q2 ga xos aniqlik tanlovlari 540p, 720p va 1080p; hujjatlashtirilgan standart 720p. Davomiylik va aniqlikni harakat hamda foydalanish joyiga qarab birga tanlang. Qisqa ochib ko‘rsatish va uzunroq harakat turlicha vaqt talab qiladi; so‘ralgan davomiylikni oshirish o‘zgarmagan topshiriqni shunchaki cho‘zish emas, ko‘rinadigan ketma-ketlikka xizmat qilsin. Yakuniy joylashtirishni tayyorlashda qaytgan klipning haqiqiy o‘lchamlari va uzunligini tekshiring.\n\nHujjatlashtirilgan aspect_ratio tanlovlari 16:9, 9:16, 3:4, 4:3 va 1:1; standart 16:9. Qo‘llanma Q2 oilasi uchun 3:4 va 4:3 ni ochiq kiritadi. Yaratishdan oldin kadrni tanlang va unga mos kompozitsiyani tavsiflang: tik ko‘rinishda asosiy obyektni ravshan saqlang yoki yotiq kadr kengligidan atrof muhitni ko‘rsatish uchun foydalaning. Yakuniy ko‘rinish kerakli sahifa, taqdimot yoki keyin matn joylash uchun yetarlicha aniq bo‘lsin.\n\nseed maydoni variatsiyani boshqaradi. Uni bermaslik yoki 0 berish tasodifiy qiymatni tanlaydi; noldan farqli qiymat esa takrorlanuvchi yaratish uchun hujjatlashtirilgan o‘zgarmas seed tanlovini belgilaydi. Versiyalarni solishtirishda qaytarilgan seed’ni prompt va sozlamalar bilan saqlang. Umumiy amal audio va off_peak boshqaruvlarini ham aynan Q3 modellari uchun hujjatlashtiradi. O‘sha Q3 tanlovlari ushbu Q2 profiliga biriktirilgan imkoniyatlar emas; bu so‘rovni uning hujjatlashtirilgan matn kirishi va video chiqishi asosida rejalang.\n\nYaratish asinxron. Yuborish task_id va boshlang‘ich holatni qaytaradi; yangi yaratilgan vazifa uchun created ishlatiladi. Ishlovni kuzatishda vazifaning shu identifikatorini saqlang. Hujjatlashtirilgan natija so‘rovi muvaffaqiyatli natija uchun state=success dan foydalanadi va creations massivini qaytaradi. Har bir elementning video URL’i creations[].url da bo‘ladi; vazifada doimo aynan bitta natija bo‘ladi deb hisoblamasdan, qaytarilgan har bir videoni saqlang.\n\nNatija hujjatlari haqiqiy videoning duration, fps hamda aniqlik eni va bo‘yini ham qaytaradi. Misoldagi kadrlar chastotasi yoki o‘lchamlarni o‘zgarmas Q2 spetsifikatsiyasi deb qabul qilmasdan, qaytarilgan shu qiymatlarni tayyor klip bilan saqlang. Vazifa yaratish javobida so‘rov konfiguratsiyasi yonida credits qiymati ham bor. Har bir video o‘z yaratish sozlamalariga bog‘liq qolishi uchun qaytarilgan shu vazifa metama’lumotlarini va tugallangan vazifaning identifikatorini natija bilan saqlang.\n\nButun ketma-ketlikni asl topshiriqqa solishtiring: obyekt qiyofasi, buyum shakli, harakat yo‘nalishi, kamera izchilligi va kerakli yakuniy ko‘rinish. Tuzatishda topshiriqqa mos kelmagan aniq tafsilotni belgilang va sahnaning muvaffaqiyatli qismlarini saqlang. Keyingi solishtirish haqiqiy natijalarga asoslanishi uchun prompt, aniq model tanlovi, sozlamalar, vazifa identifikatori va tugallangan videolarni birga saqlang.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "b55be65018ec095b28e6e60e551f783f3b97ee52af8f358fb4eec90c6d8e93b9",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "uz",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Vidu: Q2 Text-to-Video</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Yopish\">×</button></div><div class=\"idline\"><span>Vidu /</span><code>viduq2</code><button type=\"button\" id=\"copy-id\">ID ni nusxalash</button></div><nav class=\"card-jump-nav\" aria-label=\"Model kartochkasi bo‘limlari\"><button type=\"button\" data-card-jump=\"overview\">Boshlash</button><button type=\"button\" data-card-jump=\"methods\">Kirish ma’lumotlari va usullar</button><button type=\"button\" data-card-jump=\"pricing\">Tariflar</button><button type=\"button\" data-card-jump=\"examples\">Namunalar</button><button type=\"button\" data-card-jump=\"results\">Natijalar</button><button type=\"button\" data-card-jump=\"aliases\">Taxalluslar</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API usullari\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|viduq2\">Video</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\">Boshlash</h3><p class=\"mdesc-full\">Vidu Q2 yozma sahna topshirig‘idan video yaratadi: davomiylik 1–10 soniya, chiqish aniqligi 540p, 720p yoki 1080p va beshta tomon nisbati mavjud. Aynan shu viduq2 profili uslub va harakat uchun promptdan foydalanadi hamda natijani asinxron vazifa orqali qaytaradi.</p><dl class=\"card-io\" data-card-io><div><dt>Qabul qilinadigan kirish ma’lumotlari</dt><dd>Matn</dd></div><div><dt>Natijalar</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>Model haqida</summary><p class=\"note-s\" data-model-method-boundary>Bu tavsif model imkoniyatlarini yoritadi. Ailoot da tanlangan usul uchun mavjud kirish, chiqish va parametrlar quyida keltirilgan.</p><div class=\"mabout\" id=\"m-about\"><p>Vidu Q2 viduq2 orqali tanlanadigan matndan video yaratish profilida yozma sahnadan video yaratadi. Majburiy kirishlar — modelning aniq identifikatori va sahnani tavsiflovchi prompt. Undan tashqi ko‘rinishi va harakatini so‘z bilan belgilash mumkin bo‘lgan qisqa mahsulot konsepsiyasi, joyni tanishtiruvchi umumiy ko‘rinish yoki personaj harakati uchun foydalaning. Bu sozlangan usul matndan video yaratishdir; uning tavsifi shu model tanloviga alohida tasvir referensi yoki videoni tahrirlash rejimini biriktirmaydi.</p><p>Topshiriqni ko‘rinadigan ketma-ketlik atrofida tuzing. Obyekt, joy, harakat, kadr yirikligi, kamera siljishi va yakuniy kompozitsiyani belgilang. Mahsulot konsepsiyasida stol ustidagi buyum, materiali bo‘ylab siljiydigan yorug‘lik va tanish tafsilot ustida tugaydigan sekin kamera yaqinlashuvini tavsiflang. Joy sahnasida markaziy nuqtaga o‘tishdan oldin muhitni tanishtiring. Sahna kerakli yakuniga ulgurishi uchun harakatni tanlangan klip uzunligiga mos saqlang.</p><p>Prompt chegarasi 2,000 belgi. Asosiy obyekt va harakatni birinchi o‘ringa qo‘ying, keyin kerakli natijaga ta’sir qiladigan yorug‘lik, material, muhit va kamera tafsilotlarini qo‘shing. Vizual uslubni promptda belgilang. Q2 ga xos qo‘llanma alohida style va movement_amplitude parametrlari bu modelda ta’sir qilmasligini aytadi; shuning uchun general yoki anime tayyor sozlamasi hamda harakat amplitudasi tanlovlari aniq sahna tavsifining o‘rnini bosmaydi.</p><p>Modelga xos davomiylik sozlamasi bir soniyadan o‘n soniyagacha butun sonlarni qabul qiladi. Q2 ga xos aniqlik tanlovlari 540p, 720p va 1080p; hujjatlashtirilgan standart 720p. Davomiylik va aniqlikni harakat hamda foydalanish joyiga qarab birga tanlang. Qisqa ochib ko‘rsatish va uzunroq harakat turlicha vaqt talab qiladi; so‘ralgan davomiylikni oshirish o‘zgarmagan topshiriqni shunchaki cho‘zish emas, ko‘rinadigan ketma-ketlikka xizmat qilsin. Yakuniy joylashtirishni tayyorlashda qaytgan klipning haqiqiy o‘lchamlari va uzunligini tekshiring.</p><p>Hujjatlashtirilgan aspect_ratio tanlovlari 16:9, 9:16, 3:4, 4:3 va 1:1; standart 16:9. Qo‘llanma Q2 oilasi uchun 3:4 va 4:3 ni ochiq kiritadi. Yaratishdan oldin kadrni tanlang va unga mos kompozitsiyani tavsiflang: tik ko‘rinishda asosiy obyektni ravshan saqlang yoki yotiq kadr kengligidan atrof muhitni ko‘rsatish uchun foydalaning. Yakuniy ko‘rinish kerakli sahifa, taqdimot yoki keyin matn joylash uchun yetarlicha aniq bo‘lsin.</p><p>seed maydoni variatsiyani boshqaradi. Uni bermaslik yoki 0 berish tasodifiy qiymatni tanlaydi; noldan farqli qiymat esa takrorlanuvchi yaratish uchun hujjatlashtirilgan o‘zgarmas seed tanlovini belgilaydi. Versiyalarni solishtirishda qaytarilgan seed’ni prompt va sozlamalar bilan saqlang. Umumiy amal audio va off_peak boshqaruvlarini ham aynan Q3 modellari uchun hujjatlashtiradi. O‘sha Q3 tanlovlari ushbu Q2 profiliga biriktirilgan imkoniyatlar emas; bu so‘rovni uning hujjatlashtirilgan matn kirishi va video chiqishi asosida rejalang.</p><p>Yaratish asinxron. Yuborish task_id va boshlang‘ich holatni qaytaradi; yangi yaratilgan vazifa uchun created ishlatiladi. Ishlovni kuzatishda vazifaning shu identifikatorini saqlang. Hujjatlashtirilgan natija so‘rovi muvaffaqiyatli natija uchun state=success dan foydalanadi va creations massivini qaytaradi. Har bir elementning video URL’i creations[].url da bo‘ladi; vazifada doimo aynan bitta natija bo‘ladi deb hisoblamasdan, qaytarilgan har bir videoni saqlang.</p><p>Natija hujjatlari haqiqiy videoning duration, fps hamda aniqlik eni va bo‘yini ham qaytaradi. Misoldagi kadrlar chastotasi yoki o‘lchamlarni o‘zgarmas Q2 spetsifikatsiyasi deb qabul qilmasdan, qaytarilgan shu qiymatlarni tayyor klip bilan saqlang. Vazifa yaratish javobida so‘rov konfiguratsiyasi yonida credits qiymati ham bor. Har bir video o‘z yaratish sozlamalariga bog‘liq qolishi uchun qaytarilgan shu vazifa metama’lumotlarini va tugallangan vazifaning identifikatorini natija bilan saqlang.</p><p>Butun ketma-ketlikni asl topshiriqqa solishtiring: obyekt qiyofasi, buyum shakli, harakat yo‘nalishi, kamera izchilligi va kerakli yakuniy ko‘rinish. Tuzatishda topshiriqqa mos kelmagan aniq tafsilotni belgilang va sahnaning muvaffaqiyatli qismlarini saqlang. Keyingi solishtirish haqiqiy natijalarga asoslanishi uchun prompt, aniq model tanlovi, sozlamalar, vazifa identifikatori va tugallangan videolarni birga saqlang.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Ailoot da mavjud · kirish ma’lumotlari va usullar</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Video yaratish</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Kirish</dt><dd><code>text</code></dd></div><div><dt>Chiqish</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Maydon</th><th>Tur</th><th>Talab</th><th>Qiymatlar va cheklovlar</th><th>Standart</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span><code>string</code></td><td data-cell-label=\"Talab\"><span class=\"card-cell-label\">Talab</span>Majburiy</td><td data-cell-label=\"Qiymatlar va cheklovlar\"><span class=\"card-cell-label\">Qiymatlar va cheklovlar</span><div>viduq2</div></td><td data-cell-label=\"Standart\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standart</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span><code>string</code></td><td data-cell-label=\"Talab\"><span class=\"card-cell-label\">Talab</span>Majburiy</td><td data-cell-label=\"Qiymatlar va cheklovlar\"><span class=\"card-cell-label\">Qiymatlar va cheklovlar</span><div>Shartlar: Yaratiladigan sahnani tasvirlang. Hujjatdagi limit 2000 belgi; Ailoot bo‘sh bo‘lmagan satrni tekshiradi va matnni saqlaydi.</div></td><td data-cell-label=\"Standart\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standart</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span><code>integer</code></td><td data-cell-label=\"Talab\"><span class=\"card-cell-label\">Talab</span>Ixtiyoriy</td><td data-cell-label=\"Qiymatlar va cheklovlar\"><span class=\"card-cell-label\">Qiymatlar va cheklovlar</span><div>Eng kam: 1</div><div>Eng ko‘p: 10</div><div>Shartlar: Modelga xos viduq2 tavsifida 1–10 butun soniya ko‘rsatilgan. Modelga xos standart davomiylik hujjatlashtirilmagan.</div><div>Birlik: soniya</div></td><td data-cell-label=\"Standart\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standart</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">seed</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span><code>string</code></td><td data-cell-label=\"Talab\"><span class=\"card-cell-label\">Talab</span>Ixtiyoriy</td><td data-cell-label=\"Qiymatlar va cheklovlar\"><span class=\"card-cell-label\">Qiymatlar va cheklovlar</span><div>Shartlar: Tasodifiylik uchun bermang yoki &quot;0&quot; satrini yuboring. Nol bo‘lmagan seed berilsa, hujjatdagi belgilangan seed bilan ishlash rejimi tanlanadi; sonli oraliq ko‘rsatilmagan.</div></td><td data-cell-label=\"Standart\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standart</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span><code>string</code></td><td data-cell-label=\"Talab\"><span class=\"card-cell-label\">Talab</span>Ixtiyoriy</td><td data-cell-label=\"Qiymatlar va cheklovlar\"><span class=\"card-cell-label\">Qiymatlar va cheklovlar</span><div>16:9, 9:16, 3:4, 4:3, 1:1</div></td><td data-cell-label=\"Standart\" data-default=\"known\"><span class=\"card-cell-label\">Standart</span>16:9</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span><code>string</code></td><td data-cell-label=\"Talab\"><span class=\"card-cell-label\">Talab</span>Ixtiyoriy</td><td data-cell-label=\"Qiymatlar va cheklovlar\"><span class=\"card-cell-label\">Qiymatlar va cheklovlar</span><div>540p, 720p, 1080p</div><div>Shartlar: Modelga xos viduq2 ro‘yxati bu darajalarni 1–10 soniya uchun hujjatlashtiradi. Umumiy enum va jadvalda 360p ham keltirilgan; uning qo‘llanishi shu ro‘yxatga zid va bu yerda tasdiqlanmaydi.</div></td><td data-cell-label=\"Standart\" data-default=\"known\"><span class=\"card-cell-label\">Standart</span>720p</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">style</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span><code>string</code></td><td data-cell-label=\"Talab\"><span class=\"card-cell-label\">Talab</span>Ixtiyoriy</td><td data-cell-label=\"Qiymatlar va cheklovlar\"><span class=\"card-cell-label\">Qiymatlar va cheklovlar</span><div>general, anime</div><div>Shartlar: Umumiy so‘rov bu maydonni qabul qiladi, ammo hujjatda viduq2 uchun uning ta’siri yo‘qligi aniq ko‘rsatilgan.</div></td><td data-cell-label=\"Standart\" data-default=\"known\"><span class=\"card-cell-label\">Standart</span>general</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">movement_amplitude</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span><code>string</code></td><td data-cell-label=\"Talab\"><span class=\"card-cell-label\">Talab</span>Ixtiyoriy</td><td data-cell-label=\"Qiymatlar va cheklovlar\"><span class=\"card-cell-label\">Qiymatlar va cheklovlar</span><div>auto, small, medium, large</div><div>Shartlar: Umumiy so‘rov bu maydonni qabul qiladi, ammo hujjatda q2 modellari uchun uning ta’siri yo‘qligi aniq ko‘rsatilgan.</div></td><td data-cell-label=\"Standart\" data-default=\"known\"><span class=\"card-cell-label\">Standart</span>auto</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kirish materiallari birikmalari</summary><p class=\"note-s\"><b></b></p></details><details class=\"note-s\" data-method-contract><summary>Usul parametrlari va hayot sikli</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametr</th><th>Parametr talablari</th></tr></thead><tbody><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>content_type</code></th><td data-cell-label=\"Parametr talablari\"><span class=\"card-cell-label\">Parametr talablari</span>application/json</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>required</code></th><td data-cell-label=\"Parametr talablari\"><span class=\"card-cell-label\">Parametr talablari</span>model, prompt</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>optional</code></th><td data-cell-label=\"Parametr talablari\"><span class=\"card-cell-label\">Parametr talablari</span>duration, seed, aspect_ratio, resolution, style, movement_amplitude</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>material_types</code></th><td data-cell-label=\"Parametr talablari\"><span class=\"card-cell-label\">Parametr talablari</span>text</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>additional_properties</code></th><td data-cell-label=\"Parametr talablari\"><span class=\"card-cell-label\">Parametr talablari</span>true</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>validation_scope</code></th><td data-cell-label=\"Parametr talablari\"><span class=\"card-cell-label\">Parametr talablari</span>Ailoot bo‘sh bo‘lmagan model/prompt satrlarini tekshiradi. Quyidagi ixtiyoriy turlar va limitlar hujjatdagi so‘rov shartnomasidir; boshqa so‘rov maydonlari tanlangan model uchun saqlanadi.</td></tr></tbody></table></div><p>Usul taxalluslari: <code>/v1/videos/generations</code></p><p>Hayot sikli: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}/content</code></p><p class=\"note-s\">Bir marta yarating va qaytarilgan ochiq id hamda polling_url ni saqlang.</p><p class=\"note-s\">Dastlabki operatsiya holatini so‘rab tekshiring; success va egalik qilinadigan creations[].url natijasi yakunlanganlik mezonidir.</p><p class=\"note-s\">Qaytarilgan, egalik qilinadigan barcha video URL larini yuklab oling; misoldan chiqishlar soni, davomiyligi yoki kadrlar tezligi o‘zgarmas degan xulosa chiqarmang.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tariflar</h3><div class=\"card-result-process\" data-billing-basis><h5>Yakuniy to‘lov qanday hisoblanadi</h5><p class=\"note-s\">Ko‘rsatilgan tariflar xarajatni generatsiyadan oldin taxminiy hisoblash uchun xizmat qiladi. Yakuniy to‘lov dastlabki generatsiya uchun qayd etilgan xarajat asosida hisoblanadi. Natijaning o‘lchangan davomiyligi va oldindan taxmin qilingan miqdorlar haq undiriladigan yakuniy miqdor hisoblanmaydi.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarif ma’lumotlari so‘rov imkoniyatlarini qo‘shmaydi. Qo‘llab-quvvatlanadigan parametrlar tanlangan usulda ko‘rsatilgan.</p><dl data-price-conditions><dt>Tezkor rejim</dt><dd>Ko‘rsatilmagan <span class=\"note-s\">Tezkor rejim tanlanganda</span></dd><dt>Flex rejimi</dt><dd>Ko‘rsatilmagan <span class=\"note-s\">flex rejimi tanlanganda</span></dd><dt>Maksimal fikrlash darajasi</dt><dd>Ko‘rsatilmagan <span class=\"note-s\">Maksimal fikrlash darajasi uchun standart (default) tuzatish qo‘llanganda</span></dd></dl></div><div data-declared-tariff-pricing><h4>Taqqoslash uchun taxminiy tariflar</h4><h4>Sozlamalar bo‘yicha narxlar</h4><p class=\"note-s\">Har bir to‘lovni ko‘rsatilgan shartlarga moslang. Har bir muqobil sozlamalar to‘plami uchun bitta tarifdan foydalaning.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Sozlama</th><th>Tariflar jadvali</th><th>Prognoz miqdori</th><th>To‘lov</th></tr></thead><tbody><tr><th data-cell-label=\"Sozlama\" scope=\"row\"><span class=\"card-cell-label\">Sozlama</span>Tokenlar uchun bazaviy tariflar</th><td data-cell-label=\"Tariflar jadvali\"><span class=\"card-cell-label\">Tariflar jadvali</span>Asosiy tarif</td><td data-cell-label=\"Prognoz miqdori\"><span class=\"card-cell-label\">Prognoz miqdori</span>—</td><td data-cell-label=\"To‘lov\"><span class=\"card-cell-label\">To‘lov</span><div><span>Kirish · Kirish tokenlari · Faqat taqqoslash uchun taxmin</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Chiqish · Chiqish tokenlari · Faqat taqqoslash uchun taxmin</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Kirish · Keshdan o‘qish · Faqat taqqoslash uchun taxmin</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Kirish · Keshga yozish · Faqat taqqoslash uchun taxmin</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Kirish · Keshga yozish, 1 soat · Faqat taqqoslash uchun taxmin</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Sozlama\" scope=\"row\"><span class=\"card-cell-label\">Sozlama</span>Yaratishning taxminiy qiymati</th><td data-cell-label=\"Tariflar jadvali\"><span class=\"card-cell-label\">Tariflar jadvali</span>—</td><td data-cell-label=\"Prognoz miqdori\"><span class=\"card-cell-label\">Prognoz miqdori</span>bir generatsiya uchun taxmin</td><td data-cell-label=\"To‘lov\"><span class=\"card-cell-label\">To‘lov</span><div><span>Chiqish · Yaratishning taxminiy narxi · Faqat taqqoslash uchun taxmin</span> <b>$5.12</b> <span class=\"price-unit\">yaratishdan oldingi taxmin</span></div><p class=\"note-s\">Bu taxmin qo‘shimcha to‘lov ham, tugallangan generatsiya uchun qat’iy tarif ham emas.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. <a href=\"/docs/uz/billing/reserve/\">Summani band qilish va to‘lovni hisoblash tartibi →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">So‘rov namunalari</h3><h4>Ailoot Ultra · Video yaratish</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kod variantlari\"><button class=\"cg-tab\" id=\"model-code-2782-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2782-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · Video yarating</button><button class=\"cg-tab\" id=\"model-code-2782-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2782-panel-1\" aria-selected=\"false\" tabindex=\"-1\">curl · Asl vazifa ma’lumotlarini o‘qing</button><button class=\"cg-tab\" id=\"model-code-2782-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2782-panel-2\" aria-selected=\"false\" tabindex=\"-1\">curl · O‘zingizga tegishli har bir videoni yuklab oling</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kodni nusxalash\"><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-2782-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2782-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_REQUEST&#39;\n{&quot;model&quot;:&quot;viduq2&quot;,&quot;prompt&quot;:&quot;In an ultra-realistic fashion photography style featuring light blue and pale amber tones, an astronaut in a spacesuit walks through the fog. The background consists of enchanting white and golden lights, creating a minimalist still life and an impressive panoramic scene.&quot;}\nJSON_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\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</code></pre></div><div class=\"cg-pane\" id=\"model-code-2782-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2782-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_POLL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\ni=r.get(&quot;id&quot;)\nif not isinstance(i,str) or not i:raise SystemExit(&quot;Keep original response/headers/id; do not resubmit creation.&quot;)\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r.get(&quot;polling_url&quot;) or &quot;/v1/videos/&quot;+quote(i,safe=&quot;&quot;))\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/videos/&quot;):raise SystemExit(&quot;Use the actual Ailoot lookup path.&quot;)\nPath(&quot;poll-url.txt&quot;).write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error &quot;$(cat poll-url.txt)&quot; -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2782-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2782-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nif r.get(&quot;state&quot;)!=&quot;success&quot;:raise SystemExit(&quot;Poll the same original job until its owned result is returned.&quot;)\ncreations=r.get(&quot;creations&quot;)\nif not isinstance(creations,list) or not creations:raise SystemExit(&quot;No completed video creations.&quot;)\nurls=[]\nfor item in creations:\n    value=item.get(&quot;url&quot;) if isinstance(item,dict) else None\n    values=[value] if isinstance(value,str) else value\n    if not isinstance(values,list) or not values:raise SystemExit(&quot;No completed video URL.&quot;)\n    for u in values:\n        if not isinstance(u,str):raise SystemExit(&quot;Invalid returned URL.&quot;)\n        p=urlsplit(u)\n        if p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/media/assets/&quot;) or not p.path.endswith(&quot;/content&quot;) or not p.query:raise SystemExit(&quot;Wait for the actual Ailoot-owned signed result.&quot;)\n        urls.append(u)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; -o &quot;video-${index}.bin&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Natijalarni olish va saqlash</h3><h4>Ailoot Ultra · Video yaratish</h4><p class=\"note-s\">JSON asl holat va creations massivini saqlaydi, ularga ochiq id/provider_task_id/polling_url qo‘shiladi. Tanlangan video URL lari e’lon qilinishidan oldin bo‘sh bo‘ladi va yakunlangach Ailoot egaligidagi imzolangan URL larga aylanadi.</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/videos/generations/{request_id}/content</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Barcha tayyor natijalarni saqlash</h5><p class=\"note-s\">Har bir tayyor video yoki qaytarilgan faylni saqlang; har bir haqiqatan qaytarilgan material URL dan kontentni oling.</p><p class=\"note-s\">creations[].url ichida haqiqatda qaytarilgan har bir URL ni yuklab oling; mazmun indeksi haqiqatda qaytarilgan bitta chiqishni belgilaydi.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Asl javobni tekshirish kerak bo‘lsa</h5><p class=\"note-s\">Belgilangan deklaratsiyada yakuniy xato holati sanalmagan. Har qanday tanilmagan holat yoki result_pending_check xatosida dastlabki javob/sarlavhalar/id ni saqlang va ayni operatsiyani tekshiring; natijasi noma’lum yaratish so‘rovini hech qachon qayta yubormang.</p></div><details class=\"card-about\" data-output-fields><summary>Javob maydonlari</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Maydon</th><th>Tur</th><th>Ma’nosi</th></tr></thead><tbody><tr><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span>string</td><td data-cell-label=\"Ma’nosi\"><span class=\"card-cell-label\">Ma’nosi</span>Qaytarilgan ochiq Ailoot vazifasi yoki operatsiyasi identifikatori.</td></tr><tr><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">provider_task_id</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span>string</td><td data-cell-label=\"Ma’nosi\"><span class=\"card-cell-label\">Ma’nosi</span>Ochiq id dan alohida bo‘lgan dastlabki vazifa identifikatori.</td></tr><tr><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">polling_url</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span>string</td><td data-cell-label=\"Ma’nosi\"><span class=\"card-cell-label\">Ma’nosi</span>Dastlabki vazifa uchun qaytarilgan Ailoot qidiruv yo‘li.</td></tr><tr><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">task_id</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span>string when supplied</td><td data-cell-label=\"Ma’nosi\"><span class=\"card-cell-label\">Ma’nosi</span>Yaratish javobida mavjud dastlabki identifikator.</td></tr><tr><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">state</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span>string when supplied</td><td data-cell-label=\"Ma’nosi\"><span class=\"card-cell-label\">Ma’nosi</span>Asl vazifa holati: belgilangan kutilayotgan holat uchun created, yakunlanish uchun success.</td></tr><tr><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">err_code</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span>string when supplied</td><td data-cell-label=\"Ma’nosi\"><span class=\"card-cell-label\">Ma’nosi</span>Vazifa diagnostikasi; saqlangan spetsifikatsiyada xato kodlarining sanab berilgan ro‘yxati e’lon qilinmagan.</td></tr><tr><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">creations[].url</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span>string|string[]</td><td data-cell-label=\"Ma’nosi\"><span class=\"card-cell-label\">Ma’nosi</span>Tanlangan har bir yakunlangan video URL i Ailoot egaligidagi imzolangan URL bilan almashtiriladi.</td></tr><tr><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">creations[].video.duration</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span>number when supplied</td><td data-cell-label=\"Ma’nosi\"><span class=\"card-cell-label\">Ma’nosi</span>Qaytarilgan video davomiyligi; haqiqiy yakunlangan natijani tekshiring.</td></tr><tr><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">creations[].video.fps</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span>integer when supplied</td><td data-cell-label=\"Ma’nosi\"><span class=\"card-cell-label\">Ma’nosi</span>Qaytarilgan kadrlar tezligi; o‘zgarmas kadrlar tezligi va’da qilinmaydi.</td></tr><tr><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">creations[].video.resolution.width</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span>integer when supplied</td><td data-cell-label=\"Ma’nosi\"><span class=\"card-cell-label\">Ma’nosi</span>Qaytarilgan chiqishning piksellardagi eni.</td></tr><tr><th data-cell-label=\"Maydon\" scope=\"row\"><span class=\"card-cell-label\">Maydon</span><code class=\"card-field-name\">creations[].video.resolution.height</code></th><td data-cell-label=\"Tur\" data-field-type><span class=\"card-cell-label\">Tur</span>integer when supplied</td><td data-cell-label=\"Ma’nosi\"><span class=\"card-cell-label\">Ma’nosi</span>Qaytarilgan chiqishning piksellardagi bo‘yi.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Xatolar va keyingi qadamlar</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Javob</th><th>Shart</th><th>Keyingi qadam</th></tr></thead><tbody><tr><th data-cell-label=\"Javob\" scope=\"row\"><span class=\"card-cell-label\">Javob</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Shart\"><span class=\"card-cell-label\">Shart</span>JSON/model yaroqsiz, majburiy satrlar yo‘q yoki bo‘sh yoxud mazmun indeksi yaroqsiz.</td><td data-cell-label=\"Keyingi qadam\"><span class=\"card-cell-label\">Keyingi qadam</span></td></tr><tr><th data-cell-label=\"Javob\" scope=\"row\"><span class=\"card-cell-label\">Javob</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Shart\"><span class=\"card-cell-label\">Shart</span>Ailoot API kaliti yaroqsiz.</td><td data-cell-label=\"Keyingi qadam\"><span class=\"card-cell-label\">Keyingi qadam</span></td></tr><tr><th data-cell-label=\"Javob\" scope=\"row\"><span class=\"card-cell-label\">Javob</span>403 · <code>permission_error</code></th><td data-cell-label=\"Shart\"><span class=\"card-cell-label\">Shart</span>API kaliti guruhi ushbu media yo‘nalishiga qo‘yilmagan.</td><td data-cell-label=\"Keyingi qadam\"><span class=\"card-cell-label\">Keyingi qadam</span></td></tr><tr><th data-cell-label=\"Javob\" scope=\"row\"><span class=\"card-cell-label\">Javob</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Shart\"><span class=\"card-cell-label\">Shart</span>Dastlabki vazifa yoki so‘ralgan chiqish mavjud emas yoxud ayni foydalanuvchi/API kaliti/guruhiga tegishli emas.</td><td data-cell-label=\"Keyingi qadam\"><span class=\"card-cell-label\">Keyingi qadam</span></td></tr><tr><th data-cell-label=\"Javob\" scope=\"row\"><span class=\"card-cell-label\">Javob</span>502 · <code>result_pending_check</code></th><td data-cell-label=\"Shart\"><span class=\"card-cell-label\">Shart</span>Dastlabki yuborish yoki holat ma’lumoti to‘liq emas yoxud ularni o‘zaro solishtirib tasdiqlab bo‘lmaydi; dastlabki ID ni saqlang va qayta yubormang.</td><td data-cell-label=\"Keyingi qadam\"><span class=\"card-cell-label\">Keyingi qadam</span></td></tr><tr><th data-cell-label=\"Javob\" scope=\"row\"><span class=\"card-cell-label\">Javob</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Shart\"><span class=\"card-cell-label\">Shart</span>Dastlabki bog‘lanish, yo‘nalish yoki egalik qilinadigan media hali tekshirilmoqda; shu dastlabki operatsiyani tekshirishni davom ettiring.</td><td data-cell-label=\"Keyingi qadam\"><span class=\"card-cell-label\">Keyingi qadam</span></td></tr><tr><th data-cell-label=\"Javob\" scope=\"row\"><span class=\"card-cell-label\">Javob</span>503 · <code>server_error</code></th><td data-cell-label=\"Shart\"><span class=\"card-cell-label\">Shart</span>Media xizmati yoki dastlabki vazifalar saqlovi mavjud emas.</td><td data-cell-label=\"Keyingi qadam\"><span class=\"card-cell-label\">Keyingi qadam</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Taxalluslar</h3><h4>Model taxalluslari</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=viduq2&amp;route=Ultra&amp;caller=viduq2&amp;fmt=videos\"><code>viduq2</code></a></span></p><h4>Usul yo‘llari taxalluslari</h4><p class=\"note-s\"><code>/v1/videos/generations</code></p><h4>Chaqirish uchun tegishli ID lar</h4><p class=\"note-s\"><a href=\"#m=viduq2&amp;route=Ultra&amp;caller=viduq2&amp;fmt=videos\"><code>viduq2</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "viduq2",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "viduq2",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|viduq2",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Ko‘rsatilgan tariflar xarajatni generatsiyadan oldin taxminiy hisoblash uchun xizmat qiladi. Yakuniy to‘lov dastlabki generatsiya uchun qayd etilgan xarajat asosida hisoblanadi. Natijaning o‘lchangan davomiyligi va oldindan taxmin qilingan miqdorlar haq undiriladigan yakuniy miqdor hisoblanmaydi.",
          "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": {
            "errors": [
              {
                "condition": "JSON/model yaroqsiz, majburiy satrlar yo‘q yoki bo‘sh yoxud mazmun indeksi yaroqsiz.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Ailoot API kaliti yaroqsiz.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "API kaliti guruhi ushbu media yo‘nalishiga qo‘yilmagan.",
                "http_status": 403,
                "type": "permission_error"
              },
              {
                "condition": "Dastlabki vazifa yoki so‘ralgan chiqish mavjud emas yoxud ayni foydalanuvchi/API kaliti/guruhiga tegishli emas.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Dastlabki yuborish yoki holat ma’lumoti to‘liq emas yoxud ularni o‘zaro solishtirib tasdiqlab bo‘lmaydi; dastlabki ID ni saqlang va qayta yubormang.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Dastlabki bog‘lanish, yo‘nalish yoki egalik qilinadigan media hali tekshirilmoqda; shu dastlabki operatsiyani tekshirishni davom ettiring.",
                "http_status": 503,
                "type": "result_pending_check"
              },
              {
                "condition": "Media xizmati yoki dastlabki vazifalar saqlovi mavjud emas.",
                "http_status": 503,
                "type": "server_error"
              }
            ],
            "ignored_fields": [
              "style",
              "movement_amplitude"
            ],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "success"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "id_source": "Use the actual returned public id or X-Ailoot-Task-Id and polling_url. Keep task_id/provider_task_id separate; status lookup can retain the original task identity when the native fetch omits it.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "created"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "state_field": "state",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Belgilangan deklaratsiyada yakuniy xato holati sanalmagan. Har qanday tanilmagan holat yoki result_pending_check xatosida dastlabki javob/sarlavhalar/id ni saqlang va ayni operatsiyani tekshiring; natijasi noma’lum yaratish so‘rovini hech qachon qayta yubormang.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ]
            ],
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "additional_media_boundary": "Only creations[].url is selected for owned video delivery. No owned cover-image or callback result flow is established.",
              "all_results": "creations[].url ichida haqiqatda qaytarilgan har bir URL ni yuklab oling; mazmun indeksi haqiqatda qaytarilgan bitta chiqishni belgilaydi.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": "Qaytarilgan ochiq Ailoot vazifasi yoki operatsiyasi identifikatori.",
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": "Ochiq id dan alohida bo‘lgan dastlabki vazifa identifikatori.",
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": "Dastlabki vazifa uchun qaytarilgan Ailoot qidiruv yo‘li.",
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": "Yaratish javobida mavjud dastlabki identifikator.",
                  "name": "task_id",
                  "type": "string when supplied"
                },
                {
                  "description": "Asl vazifa holati: belgilangan kutilayotgan holat uchun created, yakunlanish uchun success.",
                  "name": "state",
                  "type": "string when supplied"
                },
                {
                  "description": "Vazifa diagnostikasi; saqlangan spetsifikatsiyada xato kodlarining sanab berilgan ro‘yxati e’lon qilinmagan.",
                  "name": "err_code",
                  "type": "string when supplied"
                },
                {
                  "description": "Tanlangan har bir yakunlangan video URL i Ailoot egaligidagi imzolangan URL bilan almashtiriladi.",
                  "name": "creations[].url",
                  "type": "string|string[]"
                },
                {
                  "description": "Qaytarilgan video davomiyligi; haqiqiy yakunlangan natijani tekshiring.",
                  "name": "creations[].video.duration",
                  "type": "number when supplied"
                },
                {
                  "description": "Qaytarilgan kadrlar tezligi; o‘zgarmas kadrlar tezligi va’da qilinmaydi.",
                  "name": "creations[].video.fps",
                  "type": "integer when supplied"
                },
                {
                  "description": "Qaytarilgan chiqishning piksellardagi eni.",
                  "name": "creations[].video.resolution.width",
                  "type": "integer when supplied"
                },
                {
                  "description": "Qaytarilgan chiqishning piksellardagi bo‘yi.",
                  "name": "creations[].video.resolution.height",
                  "type": "integer when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Selected video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "JSON asl holat va creations massivini saqlaydi, ularga ochiq id/provider_task_id/polling_url qo‘shiladi. Tanlangan video URL lari e’lon qilinishidan oldin bo‘sh bo‘ladi va yakunlangach Ailoot egaligidagi imzolangan URL larga aylanadi."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "viduq2"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Yaratiladigan sahnani tasvirlang. Hujjatdagi limit 2000 belgi; Ailoot bo‘sh bo‘lmagan satrni tekshiradi va matnni saqlaydi.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 2000,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Modelga xos viduq2 tavsifida 1–10 butun soniya ko‘rsatilgan. Modelga xos standart davomiylik hujjatlashtirilmagan.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 10,
                "minimum": 1,
                "name": "duration",
                "required": false,
                "type": "integer",
                "unit": "soniya"
              },
              {
                "availability": "source_interface",
                "conditions": "Tasodifiylik uchun bermang yoki \"0\" satrini yuboring. Nol bo‘lmagan seed berilsa, hujjatdagi belgilangan seed bilan ishlash rejimi tanlanadi; sonli oraliq ko‘rsatilmagan.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "seed",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "16:9",
                "default_known": true,
                "enum": [
                  "16:9",
                  "9:16",
                  "3:4",
                  "4:3",
                  "1:1"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Modelga xos viduq2 ro‘yxati bu darajalarni 1–10 soniya uchun hujjatlashtiradi. Umumiy enum va jadvalda 360p ham keltirilgan; uning qo‘llanishi shu ro‘yxatga zid va bu yerda tasdiqlanmaydi.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "540p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Umumiy so‘rov bu maydonni qabul qiladi, ammo hujjatda viduq2 uchun uning ta’siri yo‘qligi aniq ko‘rsatilgan.",
                "default": "general",
                "default_known": true,
                "enum": [
                  "general",
                  "anime"
                ],
                "enum_known": true,
                "name": "style",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Umumiy so‘rov bu maydonni qabul qiladi, ammo hujjatda q2 modellari uchun uning ta’siri yo‘qligi aniq ko‘rsatilgan.",
                "default": "auto",
                "default_known": true,
                "enum": [
                  "auto",
                  "small",
                  "medium",
                  "large"
                ],
                "enum_known": true,
                "name": "movement_amplitude",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Literal viduq2 model with the documented Ailoot videos interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "default": "16:9",
                  "enum": [
                    "16:9",
                    "9:16",
                    "3:4",
                    "4:3",
                    "1:1"
                  ],
                  "type": "string"
                },
                "duration": {
                  "maximum": 10,
                  "minimum": 1,
                  "type": "integer"
                },
                "model": {
                  "const": "viduq2",
                  "minLength": 1,
                  "type": "string"
                },
                "movement_amplitude": {
                  "default": "auto",
                  "enum": [
                    "auto",
                    "small",
                    "medium",
                    "large"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 2000,
                  "minLength": 1,
                  "type": "string"
                },
                "resolution": {
                  "default": "720p",
                  "enum": [
                    "540p",
                    "720p",
                    "1080p"
                  ],
                  "type": "string"
                },
                "seed": {
                  "type": "string"
                },
                "style": {
                  "default": "general",
                  "enum": [
                    "general",
                    "anime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "The shared enum and table mention 360p, while the model-specific viduq2 resolution description lists 540p/720p/1080p. The method asserts only the explicit model-specific list.",
              "The shared duration example uses a quoted string despite an integer schema. The copyable viduq2 example omits that optional field; an explicit duration follows the documented integer type.",
              "No model-specific default duration, maximum output count, generated-file retention period, cancellation endpoint or terminal failure-state list is established by these saved documents.",
              "The documented fetch uses an id path parameter; the pinned declaration names that same substituted value task_id. The fetch example has no task_id field, which the current client accepts only by retaining the original task identity."
            ],
            "unsupported": [
              "Image-guided input, video editing and extension are not part of this text-to-video method.",
              "The audio and off_peak parameters are documented only for other model selectors, not viduq2.",
              "No live streaming, callback completion or owned cover-image result contract is established here."
            ]
          },
          "hints": [
            "Bir marta yarating va qaytarilgan ochiq id hamda polling_url ni saqlang.",
            "Dastlabki operatsiya holatini so‘rab tekshiring; success va egalik qilinadigan creations[].url natijasi yakunlanganlik mezonidir.",
            "Qaytarilgan, egalik qilinadigan barcha video URL larini yuklab oling; misoldan chiqishlar soni, davomiyligi yoki kadrlar tezligi o‘zgarmas degan xulosa chiqarmang."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "duration",
              "seed",
              "aspect_ratio",
              "resolution",
              "style",
              "movement_amplitude"
            ],
            "required": [
              "model",
              "prompt"
            ],
            "validation_scope": "Ailoot bo‘sh bo‘lmagan model/prompt satrlarini tekshiradi. Quyidagi ixtiyoriy turlar va limitlar hujjatdagi so‘rov shartnomasidir; boshqa so‘rov maydonlari tanlangan model uchun saqlanadi."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "success"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "id_source": "Use the actual returned public id or X-Ailoot-Task-Id and polling_url. Keep task_id/provider_task_id separate; status lookup can retain the original task identity when the native fetch omits it.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "created"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "state_field": "state",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "The pinned declaration enumerates no terminal failure state. Preserve original response/headers/id and check that same operation for any unrecognized state or result_pending_check error; never resubmit an unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "additional_media_boundary": "Only creations[].url is selected for owned video delivery. No owned cover-image or callback result flow is established.",
            "all_results": "Download every actual returned URL in creations[].url; a content index identifies one real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": "Returned public Ailoot task or operation identifier.",
                "name": "id",
                "type": "string"
              },
              {
                "description": "Original task identifier, separate from the public id.",
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": "Returned Ailoot lookup path for the original task.",
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": "Original identifier present in the creation response.",
                "name": "task_id",
                "type": "string when supplied"
              },
              {
                "description": "Native task state: created for the pinned pending state and success for completion.",
                "name": "state",
                "type": "string when supplied"
              },
              {
                "description": "Task diagnostic; the saved specification declares no enumerated error-code list.",
                "name": "err_code",
                "type": "string when supplied"
              },
              {
                "description": "Every selected completed video URL is replaced with an Ailoot-owned signed URL.",
                "name": "creations[].url",
                "type": "string|string[]"
              },
              {
                "description": "Returned video duration; inspect the actual completed result.",
                "name": "creations[].video.duration",
                "type": "number when supplied"
              },
              {
                "description": "Returned frame rate; no fixed frame rate is promised.",
                "name": "creations[].video.fps",
                "type": "integer when supplied"
              },
              {
                "description": "Returned output width in pixels.",
                "name": "creations[].video.resolution.width",
                "type": "integer when supplied"
              },
              {
                "description": "Returned output height in pixels.",
                "name": "creations[].video.resolution.height",
                "type": "integer when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Selected video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "JSON retains the native state and creations array, with public id/provider_task_id/polling_url added. Selected video URLs are blank before publication and become Ailoot-owned signed URLs after completion."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "Bu taxmin qo‘shimcha to‘lov ham, tugallangan generatsiya uchun qat’iy tarif ham emas.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Yaratishning taxminiy qiymati",
            "units": [
              {
                "amount": "5.12",
                "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": "5.12",
                "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_REQUEST'\n{\"model\":\"viduq2\",\"prompt\":\"In an ultra-realistic fashion photography style featuring light blue and pale amber tones, an astronaut in a spacesuit walks through the fog. The background consists of enchanting white and golden lights, creating a minimalist still life and an impressive panoramic scene.\"}\nJSON_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\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",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i:raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use the actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"state\")!=\"success\":raise SystemExit(\"Poll the same original job until its owned result is returned.\")\ncreations=r.get(\"creations\")\nif not isinstance(creations,list) or not creations:raise SystemExit(\"No completed video creations.\")\nurls=[]\nfor item in creations:\n    value=item.get(\"url\") if isinstance(item,dict) else None\n    values=[value] if isinstance(value,str) else value\n    if not isinstance(values,list) or not values:raise SystemExit(\"No completed video URL.\")\n    for u in values:\n        if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n        p=urlsplit(u)\n        if p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/media/assets/\") or not p.path.endswith(\"/content\") or not p.query:raise SystemExit(\"Wait for the actual Ailoot-owned signed result.\")\n        urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download every owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain the returned public id and polling_url.",
          "Poll the original operation and read state; success and an owned creations[].url result are the completion boundary.",
          "Download every returned owned video URL; do not infer a fixed output count, duration or frame rate from the example."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Video yaratish",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "5.12",
                "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": "5.12",
                "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": "viduq2",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "5.12",
            "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": "5.12",
            "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": "viduq2",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "3b36af28193733d4d8b2113af7c0ba4aed5aca56f7578310a5bf972cf102d999",
    "input_html_sha256": "213162879ede32f8df0104f987d7e930201eac0bc4ad5974cd2873e42ea2d1f5",
    "private_audit_sha256": "c1590a2aea54c01b1407e645f62850eb51f2073a61cbf38208df6af394769e5b",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/uz/viduq2/",
    "description": "Vidu Q2 yozma sahna topshirig‘idan video yaratadi: davomiylik 1–10 soniya, chiqish aniqligi 540p, 720p yoki 1080p va beshta tomon nisbati mavjud. Aynan shu viduq2 profili uslub va harakat uchun promptdan foydalanadi hamda natijani asinxron vazifa orqali qaytaradi.",
    "locale": "uz",
    "md_url": "https://ailoot.ai/models/uz/viduq2/index.md",
    "title": "Vidu: Q2 Text-to-Video — Ailoot",
    "url": "https://ailoot.ai/models/uz/viduq2/"
  },
  "rawModel": {
    "about": "Vidu Q2 viduq2 orqali tanlanadigan matndan video yaratish profilida yozma sahnadan video yaratadi. Majburiy kirishlar — modelning aniq identifikatori va sahnani tavsiflovchi prompt. Undan tashqi ko‘rinishi va harakatini so‘z bilan belgilash mumkin bo‘lgan qisqa mahsulot konsepsiyasi, joyni tanishtiruvchi umumiy ko‘rinish yoki personaj harakati uchun foydalaning. Bu sozlangan usul matndan video yaratishdir; uning tavsifi shu model tanloviga alohida tasvir referensi yoki videoni tahrirlash rejimini biriktirmaydi.\n\nTopshiriqni ko‘rinadigan ketma-ketlik atrofida tuzing. Obyekt, joy, harakat, kadr yirikligi, kamera siljishi va yakuniy kompozitsiyani belgilang. Mahsulot konsepsiyasida stol ustidagi buyum, materiali bo‘ylab siljiydigan yorug‘lik va tanish tafsilot ustida tugaydigan sekin kamera yaqinlashuvini tavsiflang. Joy sahnasida markaziy nuqtaga o‘tishdan oldin muhitni tanishtiring. Sahna kerakli yakuniga ulgurishi uchun harakatni tanlangan klip uzunligiga mos saqlang.\n\nPrompt chegarasi 2,000 belgi. Asosiy obyekt va harakatni birinchi o‘ringa qo‘ying, keyin kerakli natijaga ta’sir qiladigan yorug‘lik, material, muhit va kamera tafsilotlarini qo‘shing. Vizual uslubni promptda belgilang. Q2 ga xos qo‘llanma alohida style va movement_amplitude parametrlari bu modelda ta’sir qilmasligini aytadi; shuning uchun general yoki anime tayyor sozlamasi hamda harakat amplitudasi tanlovlari aniq sahna tavsifining o‘rnini bosmaydi.\n\nModelga xos davomiylik sozlamasi bir soniyadan o‘n soniyagacha butun sonlarni qabul qiladi. Q2 ga xos aniqlik tanlovlari 540p, 720p va 1080p; hujjatlashtirilgan standart 720p. Davomiylik va aniqlikni harakat hamda foydalanish joyiga qarab birga tanlang. Qisqa ochib ko‘rsatish va uzunroq harakat turlicha vaqt talab qiladi; so‘ralgan davomiylikni oshirish o‘zgarmagan topshiriqni shunchaki cho‘zish emas, ko‘rinadigan ketma-ketlikka xizmat qilsin. Yakuniy joylashtirishni tayyorlashda qaytgan klipning haqiqiy o‘lchamlari va uzunligini tekshiring.\n\nHujjatlashtirilgan aspect_ratio tanlovlari 16:9, 9:16, 3:4, 4:3 va 1:1; standart 16:9. Qo‘llanma Q2 oilasi uchun 3:4 va 4:3 ni ochiq kiritadi. Yaratishdan oldin kadrni tanlang va unga mos kompozitsiyani tavsiflang: tik ko‘rinishda asosiy obyektni ravshan saqlang yoki yotiq kadr kengligidan atrof muhitni ko‘rsatish uchun foydalaning. Yakuniy ko‘rinish kerakli sahifa, taqdimot yoki keyin matn joylash uchun yetarlicha aniq bo‘lsin.\n\nseed maydoni variatsiyani boshqaradi. Uni bermaslik yoki 0 berish tasodifiy qiymatni tanlaydi; noldan farqli qiymat esa takrorlanuvchi yaratish uchun hujjatlashtirilgan o‘zgarmas seed tanlovini belgilaydi. Versiyalarni solishtirishda qaytarilgan seed’ni prompt va sozlamalar bilan saqlang. Umumiy amal audio va off_peak boshqaruvlarini ham aynan Q3 modellari uchun hujjatlashtiradi. O‘sha Q3 tanlovlari ushbu Q2 profiliga biriktirilgan imkoniyatlar emas; bu so‘rovni uning hujjatlashtirilgan matn kirishi va video chiqishi asosida rejalang.\n\nYaratish asinxron. Yuborish task_id va boshlang‘ich holatni qaytaradi; yangi yaratilgan vazifa uchun created ishlatiladi. Ishlovni kuzatishda vazifaning shu identifikatorini saqlang. Hujjatlashtirilgan natija so‘rovi muvaffaqiyatli natija uchun state=success dan foydalanadi va creations massivini qaytaradi. Har bir elementning video URL’i creations[].url da bo‘ladi; vazifada doimo aynan bitta natija bo‘ladi deb hisoblamasdan, qaytarilgan har bir videoni saqlang.\n\nNatija hujjatlari haqiqiy videoning duration, fps hamda aniqlik eni va bo‘yini ham qaytaradi. Misoldagi kadrlar chastotasi yoki o‘lchamlarni o‘zgarmas Q2 spetsifikatsiyasi deb qabul qilmasdan, qaytarilgan shu qiymatlarni tayyor klip bilan saqlang. Vazifa yaratish javobida so‘rov konfiguratsiyasi yonida credits qiymati ham bor. Har bir video o‘z yaratish sozlamalariga bog‘liq qolishi uchun qaytarilgan shu vazifa metama’lumotlarini va tugallangan vazifaning identifikatorini natija bilan saqlang.\n\nButun ketma-ketlikni asl topshiriqqa solishtiring: obyekt qiyofasi, buyum shakli, harakat yo‘nalishi, kamera izchilligi va kerakli yakuniy ko‘rinish. Tuzatishda topshiriqqa mos kelmagan aniq tafsilotni belgilang va sahnaning muvaffaqiyatli qismlarini saqlang. Keyingi solishtirish haqiqiy natijalarga asoslanishi uchun prompt, aniq model tanlovi, sozlamalar, vazifa identifikatori va tugallangan videolarni birga saqlang.",
    "alias_of": null,
    "aliases": [],
    "author": "Vidu",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "5.12",
            "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": "5.12",
            "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": "Konfiguratsiya narxlari tafsilotlarda to‘liq ko‘rsatilgan."
      }
    ],
    "ctx": null,
    "display_name": "Vidu: Q2 Text-to-Video",
    "formats": [
      "videos"
    ],
    "id": "viduq2",
    "input": [
      "text"
    ],
    "kind": "video",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Ko‘rsatilgan tariflar xarajatni generatsiyadan oldin taxminiy hisoblash uchun xizmat qiladi. Yakuniy to‘lov dastlabki generatsiya uchun qayd etilgan xarajat asosida hisoblanadi. Natijaning o‘lchangan davomiyligi va oldindan taxmin qilingan miqdorlar haq undiriladigan yakuniy miqdor hisoblanmaydi.",
          "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": {
            "errors": [
              {
                "condition": "JSON/model yaroqsiz, majburiy satrlar yo‘q yoki bo‘sh yoxud mazmun indeksi yaroqsiz.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Ailoot API kaliti yaroqsiz.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "API kaliti guruhi ushbu media yo‘nalishiga qo‘yilmagan.",
                "http_status": 403,
                "type": "permission_error"
              },
              {
                "condition": "Dastlabki vazifa yoki so‘ralgan chiqish mavjud emas yoxud ayni foydalanuvchi/API kaliti/guruhiga tegishli emas.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Dastlabki yuborish yoki holat ma’lumoti to‘liq emas yoxud ularni o‘zaro solishtirib tasdiqlab bo‘lmaydi; dastlabki ID ni saqlang va qayta yubormang.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Dastlabki bog‘lanish, yo‘nalish yoki egalik qilinadigan media hali tekshirilmoqda; shu dastlabki operatsiyani tekshirishni davom ettiring.",
                "http_status": 503,
                "type": "result_pending_check"
              },
              {
                "condition": "Media xizmati yoki dastlabki vazifalar saqlovi mavjud emas.",
                "http_status": 503,
                "type": "server_error"
              }
            ],
            "ignored_fields": [
              "style",
              "movement_amplitude"
            ],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "success"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "id_source": "Use the actual returned public id or X-Ailoot-Task-Id and polling_url. Keep task_id/provider_task_id separate; status lookup can retain the original task identity when the native fetch omits it.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "created"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "state_field": "state",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Belgilangan deklaratsiyada yakuniy xato holati sanalmagan. Har qanday tanilmagan holat yoki result_pending_check xatosida dastlabki javob/sarlavhalar/id ni saqlang va ayni operatsiyani tekshiring; natijasi noma’lum yaratish so‘rovini hech qachon qayta yubormang.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ]
            ],
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "additional_media_boundary": "Only creations[].url is selected for owned video delivery. No owned cover-image or callback result flow is established.",
              "all_results": "creations[].url ichida haqiqatda qaytarilgan har bir URL ni yuklab oling; mazmun indeksi haqiqatda qaytarilgan bitta chiqishni belgilaydi.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": "Qaytarilgan ochiq Ailoot vazifasi yoki operatsiyasi identifikatori.",
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": "Ochiq id dan alohida bo‘lgan dastlabki vazifa identifikatori.",
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": "Dastlabki vazifa uchun qaytarilgan Ailoot qidiruv yo‘li.",
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": "Yaratish javobida mavjud dastlabki identifikator.",
                  "name": "task_id",
                  "type": "string when supplied"
                },
                {
                  "description": "Asl vazifa holati: belgilangan kutilayotgan holat uchun created, yakunlanish uchun success.",
                  "name": "state",
                  "type": "string when supplied"
                },
                {
                  "description": "Vazifa diagnostikasi; saqlangan spetsifikatsiyada xato kodlarining sanab berilgan ro‘yxati e’lon qilinmagan.",
                  "name": "err_code",
                  "type": "string when supplied"
                },
                {
                  "description": "Tanlangan har bir yakunlangan video URL i Ailoot egaligidagi imzolangan URL bilan almashtiriladi.",
                  "name": "creations[].url",
                  "type": "string|string[]"
                },
                {
                  "description": "Qaytarilgan video davomiyligi; haqiqiy yakunlangan natijani tekshiring.",
                  "name": "creations[].video.duration",
                  "type": "number when supplied"
                },
                {
                  "description": "Qaytarilgan kadrlar tezligi; o‘zgarmas kadrlar tezligi va’da qilinmaydi.",
                  "name": "creations[].video.fps",
                  "type": "integer when supplied"
                },
                {
                  "description": "Qaytarilgan chiqishning piksellardagi eni.",
                  "name": "creations[].video.resolution.width",
                  "type": "integer when supplied"
                },
                {
                  "description": "Qaytarilgan chiqishning piksellardagi bo‘yi.",
                  "name": "creations[].video.resolution.height",
                  "type": "integer when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Selected video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "JSON asl holat va creations massivini saqlaydi, ularga ochiq id/provider_task_id/polling_url qo‘shiladi. Tanlangan video URL lari e’lon qilinishidan oldin bo‘sh bo‘ladi va yakunlangach Ailoot egaligidagi imzolangan URL larga aylanadi."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "viduq2"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Yaratiladigan sahnani tasvirlang. Hujjatdagi limit 2000 belgi; Ailoot bo‘sh bo‘lmagan satrni tekshiradi va matnni saqlaydi.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 2000,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Modelga xos viduq2 tavsifida 1–10 butun soniya ko‘rsatilgan. Modelga xos standart davomiylik hujjatlashtirilmagan.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 10,
                "minimum": 1,
                "name": "duration",
                "required": false,
                "type": "integer",
                "unit": "soniya"
              },
              {
                "availability": "source_interface",
                "conditions": "Tasodifiylik uchun bermang yoki \"0\" satrini yuboring. Nol bo‘lmagan seed berilsa, hujjatdagi belgilangan seed bilan ishlash rejimi tanlanadi; sonli oraliq ko‘rsatilmagan.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "seed",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "16:9",
                "default_known": true,
                "enum": [
                  "16:9",
                  "9:16",
                  "3:4",
                  "4:3",
                  "1:1"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Modelga xos viduq2 ro‘yxati bu darajalarni 1–10 soniya uchun hujjatlashtiradi. Umumiy enum va jadvalda 360p ham keltirilgan; uning qo‘llanishi shu ro‘yxatga zid va bu yerda tasdiqlanmaydi.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "540p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Umumiy so‘rov bu maydonni qabul qiladi, ammo hujjatda viduq2 uchun uning ta’siri yo‘qligi aniq ko‘rsatilgan.",
                "default": "general",
                "default_known": true,
                "enum": [
                  "general",
                  "anime"
                ],
                "enum_known": true,
                "name": "style",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Umumiy so‘rov bu maydonni qabul qiladi, ammo hujjatda q2 modellari uchun uning ta’siri yo‘qligi aniq ko‘rsatilgan.",
                "default": "auto",
                "default_known": true,
                "enum": [
                  "auto",
                  "small",
                  "medium",
                  "large"
                ],
                "enum_known": true,
                "name": "movement_amplitude",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Literal viduq2 model with the documented Ailoot videos interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "default": "16:9",
                  "enum": [
                    "16:9",
                    "9:16",
                    "3:4",
                    "4:3",
                    "1:1"
                  ],
                  "type": "string"
                },
                "duration": {
                  "maximum": 10,
                  "minimum": 1,
                  "type": "integer"
                },
                "model": {
                  "const": "viduq2",
                  "minLength": 1,
                  "type": "string"
                },
                "movement_amplitude": {
                  "default": "auto",
                  "enum": [
                    "auto",
                    "small",
                    "medium",
                    "large"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 2000,
                  "minLength": 1,
                  "type": "string"
                },
                "resolution": {
                  "default": "720p",
                  "enum": [
                    "540p",
                    "720p",
                    "1080p"
                  ],
                  "type": "string"
                },
                "seed": {
                  "type": "string"
                },
                "style": {
                  "default": "general",
                  "enum": [
                    "general",
                    "anime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "The shared enum and table mention 360p, while the model-specific viduq2 resolution description lists 540p/720p/1080p. The method asserts only the explicit model-specific list.",
              "The shared duration example uses a quoted string despite an integer schema. The copyable viduq2 example omits that optional field; an explicit duration follows the documented integer type.",
              "No model-specific default duration, maximum output count, generated-file retention period, cancellation endpoint or terminal failure-state list is established by these saved documents.",
              "The documented fetch uses an id path parameter; the pinned declaration names that same substituted value task_id. The fetch example has no task_id field, which the current client accepts only by retaining the original task identity."
            ],
            "unsupported": [
              "Image-guided input, video editing and extension are not part of this text-to-video method.",
              "The audio and off_peak parameters are documented only for other model selectors, not viduq2.",
              "No live streaming, callback completion or owned cover-image result contract is established here."
            ]
          },
          "hints": [
            "Bir marta yarating va qaytarilgan ochiq id hamda polling_url ni saqlang.",
            "Dastlabki operatsiya holatini so‘rab tekshiring; success va egalik qilinadigan creations[].url natijasi yakunlanganlik mezonidir.",
            "Qaytarilgan, egalik qilinadigan barcha video URL larini yuklab oling; misoldan chiqishlar soni, davomiyligi yoki kadrlar tezligi o‘zgarmas degan xulosa chiqarmang."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "duration",
              "seed",
              "aspect_ratio",
              "resolution",
              "style",
              "movement_amplitude"
            ],
            "required": [
              "model",
              "prompt"
            ],
            "validation_scope": "Ailoot bo‘sh bo‘lmagan model/prompt satrlarini tekshiradi. Quyidagi ixtiyoriy turlar va limitlar hujjatdagi so‘rov shartnomasidir; boshqa so‘rov maydonlari tanlangan model uchun saqlanadi."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "success"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "id_source": "Use the actual returned public id or X-Ailoot-Task-Id and polling_url. Keep task_id/provider_task_id separate; status lookup can retain the original task identity when the native fetch omits it.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "created"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "state_field": "state",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "The pinned declaration enumerates no terminal failure state. Preserve original response/headers/id and check that same operation for any unrecognized state or result_pending_check error; never resubmit an unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "additional_media_boundary": "Only creations[].url is selected for owned video delivery. No owned cover-image or callback result flow is established.",
            "all_results": "Download every actual returned URL in creations[].url; a content index identifies one real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": "Returned public Ailoot task or operation identifier.",
                "name": "id",
                "type": "string"
              },
              {
                "description": "Original task identifier, separate from the public id.",
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": "Returned Ailoot lookup path for the original task.",
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": "Original identifier present in the creation response.",
                "name": "task_id",
                "type": "string when supplied"
              },
              {
                "description": "Native task state: created for the pinned pending state and success for completion.",
                "name": "state",
                "type": "string when supplied"
              },
              {
                "description": "Task diagnostic; the saved specification declares no enumerated error-code list.",
                "name": "err_code",
                "type": "string when supplied"
              },
              {
                "description": "Every selected completed video URL is replaced with an Ailoot-owned signed URL.",
                "name": "creations[].url",
                "type": "string|string[]"
              },
              {
                "description": "Returned video duration; inspect the actual completed result.",
                "name": "creations[].video.duration",
                "type": "number when supplied"
              },
              {
                "description": "Returned frame rate; no fixed frame rate is promised.",
                "name": "creations[].video.fps",
                "type": "integer when supplied"
              },
              {
                "description": "Returned output width in pixels.",
                "name": "creations[].video.resolution.width",
                "type": "integer when supplied"
              },
              {
                "description": "Returned output height in pixels.",
                "name": "creations[].video.resolution.height",
                "type": "integer when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Selected video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "JSON retains the native state and creations array, with public id/provider_task_id/polling_url added. Selected video URLs are blank before publication and become Ailoot-owned signed URLs after completion."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "Bu taxmin qo‘shimcha to‘lov ham, tugallangan generatsiya uchun qat’iy tarif ham emas.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Yaratishning taxminiy qiymati",
            "units": [
              {
                "amount": "5.12",
                "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": "5.12",
                "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_REQUEST'\n{\"model\":\"viduq2\",\"prompt\":\"In an ultra-realistic fashion photography style featuring light blue and pale amber tones, an astronaut in a spacesuit walks through the fog. The background consists of enchanting white and golden lights, creating a minimalist still life and an impressive panoramic scene.\"}\nJSON_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\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",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i:raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use the actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"state\")!=\"success\":raise SystemExit(\"Poll the same original job until its owned result is returned.\")\ncreations=r.get(\"creations\")\nif not isinstance(creations,list) or not creations:raise SystemExit(\"No completed video creations.\")\nurls=[]\nfor item in creations:\n    value=item.get(\"url\") if isinstance(item,dict) else None\n    values=[value] if isinstance(value,str) else value\n    if not isinstance(values,list) or not values:raise SystemExit(\"No completed video URL.\")\n    for u in values:\n        if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n        p=urlsplit(u)\n        if p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/media/assets/\") or not p.path.endswith(\"/content\") or not p.query:raise SystemExit(\"Wait for the actual Ailoot-owned signed result.\")\n        urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download every owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain the returned public id and polling_url.",
          "Poll the original operation and read state; success and an owned creations[].url result are the completion boundary.",
          "Download every returned owned video URL; do not infer a fixed output count, duration or frame rate from the example."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Video yaratish",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "5.12",
                "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": "5.12",
                "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": "viduq2",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "5.12",
            "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": "5.12",
            "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": "viduq2",
        "request_model_id": "viduq2",
        "route_label": "Ultra"
      }
    ],
    "name": "Vidu: Q2 Text-to-Video",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 5.12,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 5.12,
      "varies": false
    },
    "short": "Vidu Q2 yozma sahna topshirig‘idan video yaratadi: davomiylik 1–10 soniya, chiqish aniqligi 540p, 720p yoki 1080p va beshta tomon nisbati mavjud. Aynan shu viduq2 profili uslub va harakat uchun promptdan foydalanadi hamda natijani asinxron vazifa orqali qaytaradi."
  },
  "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": "Vidu Q2 yozma sahna topshirig‘idan video yaratadi: davomiylik 1–10 soniya, chiqish aniqligi 540p, 720p yoki 1080p va beshta tomon nisbati mavjud. Aynan shu viduq2 profili uslub va harakat uchun promptdan foydalanadi hamda natijani asinxron vazifa orqali qaytaradi.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "06d126e21926035f2fc64cdbabdb792acb3a65eb0f1875255d1fa981c62e08f5",
    "renderer_sha256": "aa8a0fca1bd770c042b64987512b6187fca2067aea3ddc877f68b163d80e7df6"
  },
  "sourceRevision": "f9209ed7d899f1c9f0a5215b76957ea057fef30a3b3642389bff23502b95d685"
}
