{
  "aboutHtml": "<p>FLUX Video Upscale เป็นเวิร์กโฟลว์เพิ่มความละเอียดวิดีโอด้วย FLUX 3 ของ Black Forest Labs รับคลิปเดิมและคืน MP4 ที่ขยาย โดยคงกรอบภาพและเสียงต้นฉบับ ใช้คำอธิบายสั้นเพิ่มเติมกำกับรายละเอียดภาพได้ สองโหมดให้เลือกระหว่างการรักษารูปลักษณ์เดิมกับสร้างรายละเอียดมากขึ้น ไม่ใช่ถือว่าภาพใหญ่ทุกภาพฟื้นต้นฉบับได้ตรงกันเท่า ๆ กัน</p><h4>เลือกเพิ่มรายละเอียดแบบแม่นยำหรือสร้างสรรค์</h4><p>ค่า creativity เลือกโหมด ค่า 0 คือแบบแม่นยำที่รักษาต้นฉบับ ผู้ผลิตแนะนำเมื่อใบหน้า สินค้า หรือสื่อแบรนด์ต้องคงอัตลักษณ์ ค่า 1 เปิดการเพิ่มรายละเอียดเชิงสร้างสรรค์และเป็นค่าเริ่มต้น ฟื้นหรือสร้างพื้นผิวได้มากกว่า เหมาะกับฟุตเทจที่สร้างขึ้น ทิวทัศน์ ฝูงชน หรือพื้นผิวที่ปรับอย่างสร้างสรรค์ได้</p><p>ผู้ผลิตเตือนชัดว่าโหมดสร้างสรรค์รักษาใบหน้าและสินค้าไม่เคร่งครัดเท่า ตรวจสิ่งที่ต้องยังระบุได้ เช่น ใบหน้า โครงร่างสินค้า ตัวอักษร ลายวัสดุ หรือโลโก้ ภาพคมขึ้นอาจมีรายละเอียดเปลี่ยนหรือสร้างใหม่ สำหรับสาธิตสินค้าให้ใช้รูปลักษณ์สินค้าที่ต้องการเป็นเกณฑ์ แทนเลือกเพียงเพราะพื้นผิวละเอียดกว่า</p><p>พรอมป์ต์เสริมบรรยายเนื้อหาคลิปเพื่อกำกับการเพิ่มรายละเอียด หากว่างจะขยายแบบเป็นกลาง บรีฟฉากตัวอย่างอาจระบุกำแพงหินมีมอส แสงกลางวันนุ่ม และรายละเอียดใบไม้ เน้นวัสดุที่จะปรับ คำขอเปลี่ยนวัตถุ สร้างสถานที่ใหม่ หรือเปลี่ยนบทสนทนาเป็นการตัดสินใจด้านการแก้ไข ขณะที่โปรไฟล์นี้คงเสียงต้นฉบับ</p><h4>ตัวคูณและพื้นที่เฟรมเอาต์พุต</h4><p>upscale_factor ที่ระบุอยู่ระหว่าง 1.5 ถึง 3 ค่าเริ่มต้น 2 ขยายความละเอียดโดยรักษาอัตราส่วน ตัวคูณกับขนาดอินพุตกำหนดเอาต์พุตที่ตั้งใจ จึงต้องวางแผนคลิปแนวนอนและแนวตั้งจากเฟรมจริง เตรียมขนาดแสดงเป้าหมายก่อนเลือกว่าขยายเท่าใดจึงมีประโยชน์</p><p>ข้อกำหนดตรงตัวจำกัดเฟรมเอาต์พุตที่ 13.75 หน่วยเมกะพิกเซลของผู้ผลิต หนึ่งหน่วยเท่ากับ 1,048,576 พิกเซล จึงสูงสุด 14,417,920 พิกเซล หรือประมาณ 14.4 ล้าน อธิบายที่มาของคำว่า 14.4 เมกะพิกเซลแบบปัดเศษในคู่มือ ต้นฉบับใหญ่จึงอาจขยายได้น้อยกว่าตัวคูณที่ขอ ตรวจขนาดส่งมอบ แทนถือว่าคำขอ 3× ทำให้แต่ละด้านเป็นสามเท่าเสมอ</p><p>เพดานความละเอียดต้นฉบับที่เผยแพร่คือ 2560×1440 เวิร์กโฟลว์นี้เพิ่มแหล่งที่เข้าเกณฑ์ไปสู่ 4K และสูงกว่า ไม่รับต้นฉบับที่ใหญ่กว่าอยู่แล้วเพียงเพราะต้องการผลลัพธ์สูงขึ้น ลดขนาดหรือเตรียมสำเนาทำงานที่เหมาะก่อนใช้โปรไฟล์นี้ เก็บไฟล์บันทึกเดิมแยก เพื่อไม่ให้การเปรียบเทียบสุดท้ายมีเพียงไฟล์กลางที่ย่อแล้ว</p><h4>เตรียมต้นฉบับสั้นและอ่านรายละเอียดได้</h4><p>แนวทางทั่วไปจำกัดต้นฉบับยี่สิบวินาทีและห้าสิบ MB ส่งผ่าน URL วิดีโอหรือ MP4 ที่เข้ารหัส ข้ออ้างอิงละเอียดระบุว่าประมวลผลยี่สิบวินาทีแรก หากยาวเกินเล็กน้อยอาจประมวลผลถึงจุดนั้นเท่านั้น แต่ถ้ายาวเกินมากจะปฏิเสธ ไม่มีค่าความเผื่อเชิงตัวเลขเผยแพร่ จึงตัดช่วงที่ต้องการให้ไม่เกินยี่สิบวินาที แทนพึ่งพาพฤติกรรมขอบเขตที่ไม่ระบุ</p><p>เลือกเวอร์ชันที่บีบอัดน้อยที่สุด อาร์ติแฟกต์การบีบอัดจำกัดรายละเอียดจริงที่กู้คืนได้ และโหมดสร้างสรรค์อาจสร้างพื้นผิวสมเหตุผลโดยไม่พิสูจน์ว่าฉากเดิมมีอะไร ตัดต่อและเลือกช่วงให้เสร็จก่อนขยาย เช่น ทำช็อตสินค้าเสร็จ เลือกช่วงการกระทำที่ใช้ แล้วขยายเฉพาะส่วนนั้น โดยเก็บต้นฉบับไม่แก้ไว้เปรียบเทียบ</p><p>ผลลัพธ์คงเสียงต้นฉบับ ตรวจจังหวะกับภาพ โดยเฉพาะต้นและท้ายช่วงที่เลือก โปรไฟล์นี้ไม่มีตัวเลือกเฟรมเรตอิสระ การสร้างบทสนทนาใหม่ หรือการแก้ด้วยภาพอ้างอิง จุดประสงค์คือวิดีโอใหญ่ขึ้นพร้อมแนวรายละเอียดที่เลือก โดยคงข้อมูลเวลาและเสียงในช่วงที่ประมวลผล</p><h4>เก็บและตรวจคลิปที่ส่งมอบ</h4><p>เวิร์กโฟลว์เป็นแบบอะซิงโครนัส งานที่ส่งมีตัวระบุและตำแหน่งสถานะ เมื่อสำเร็จจะมีลิงก์ MP4 แบบลงนามที่หมดอายุประมาณหนึ่งชั่วโมง เก็บคลิปจริง ต้นฉบับ ตัวคูณ โหมด creativity และคำอธิบายเนื้อหา แทนพึ่งพาตำแหน่งชั่วคราว แยกสถานะล้มเหลวหรือถูกกลั่นกรองออกจากวิดีโอที่เสร็จแล้ว</p><p>ตรวจเฟรมเดี่ยวเรื่องใบหน้า เครื่องหมาย และการเปลี่ยนพื้นผิว แล้วดูทั้งลำดับเรื่องความต่อเนื่อง การเคลื่อนไหว และเสียงตรงภาพ โหมดแม่นยำและสร้างสรรค์ตอบโจทย์ภาพต่างกัน สิ่งส่งมอบที่ใช้ได้คือคลิปขยายที่ตรงเป้าหมายความเหมือนต้นฉบับ ณ ขนาดแสดงที่ต้องการ ความละเอียดสูงกว่าอย่างเดียวไม่พิสูจน์ว่าอัตลักษณ์ ข้อความ หรือรายละเอียดเล็กยังถูกต้อง</p>",
  "aboutText": "FLUX Video Upscale เป็นเวิร์กโฟลว์เพิ่มความละเอียดวิดีโอด้วย FLUX 3 ของ Black Forest Labs รับคลิปเดิมและคืน MP4 ที่ขยาย โดยคงกรอบภาพและเสียงต้นฉบับ ใช้คำอธิบายสั้นเพิ่มเติมกำกับรายละเอียดภาพได้ สองโหมดให้เลือกระหว่างการรักษารูปลักษณ์เดิมกับสร้างรายละเอียดมากขึ้น ไม่ใช่ถือว่าภาพใหญ่ทุกภาพฟื้นต้นฉบับได้ตรงกันเท่า ๆ กัน\n\n### เลือกเพิ่มรายละเอียดแบบแม่นยำหรือสร้างสรรค์\n\nค่า creativity เลือกโหมด ค่า 0 คือแบบแม่นยำที่รักษาต้นฉบับ ผู้ผลิตแนะนำเมื่อใบหน้า สินค้า หรือสื่อแบรนด์ต้องคงอัตลักษณ์ ค่า 1 เปิดการเพิ่มรายละเอียดเชิงสร้างสรรค์และเป็นค่าเริ่มต้น ฟื้นหรือสร้างพื้นผิวได้มากกว่า เหมาะกับฟุตเทจที่สร้างขึ้น ทิวทัศน์ ฝูงชน หรือพื้นผิวที่ปรับอย่างสร้างสรรค์ได้\n\nผู้ผลิตเตือนชัดว่าโหมดสร้างสรรค์รักษาใบหน้าและสินค้าไม่เคร่งครัดเท่า ตรวจสิ่งที่ต้องยังระบุได้ เช่น ใบหน้า โครงร่างสินค้า ตัวอักษร ลายวัสดุ หรือโลโก้ ภาพคมขึ้นอาจมีรายละเอียดเปลี่ยนหรือสร้างใหม่ สำหรับสาธิตสินค้าให้ใช้รูปลักษณ์สินค้าที่ต้องการเป็นเกณฑ์ แทนเลือกเพียงเพราะพื้นผิวละเอียดกว่า\n\nพรอมป์ต์เสริมบรรยายเนื้อหาคลิปเพื่อกำกับการเพิ่มรายละเอียด หากว่างจะขยายแบบเป็นกลาง บรีฟฉากตัวอย่างอาจระบุกำแพงหินมีมอส แสงกลางวันนุ่ม และรายละเอียดใบไม้ เน้นวัสดุที่จะปรับ คำขอเปลี่ยนวัตถุ สร้างสถานที่ใหม่ หรือเปลี่ยนบทสนทนาเป็นการตัดสินใจด้านการแก้ไข ขณะที่โปรไฟล์นี้คงเสียงต้นฉบับ\n\n### ตัวคูณและพื้นที่เฟรมเอาต์พุต\n\nupscale_factor ที่ระบุอยู่ระหว่าง 1.5 ถึง 3 ค่าเริ่มต้น 2 ขยายความละเอียดโดยรักษาอัตราส่วน ตัวคูณกับขนาดอินพุตกำหนดเอาต์พุตที่ตั้งใจ จึงต้องวางแผนคลิปแนวนอนและแนวตั้งจากเฟรมจริง เตรียมขนาดแสดงเป้าหมายก่อนเลือกว่าขยายเท่าใดจึงมีประโยชน์\n\nข้อกำหนดตรงตัวจำกัดเฟรมเอาต์พุตที่ 13.75 หน่วยเมกะพิกเซลของผู้ผลิต หนึ่งหน่วยเท่ากับ 1,048,576 พิกเซล จึงสูงสุด 14,417,920 พิกเซล หรือประมาณ 14.4 ล้าน อธิบายที่มาของคำว่า 14.4 เมกะพิกเซลแบบปัดเศษในคู่มือ ต้นฉบับใหญ่จึงอาจขยายได้น้อยกว่าตัวคูณที่ขอ ตรวจขนาดส่งมอบ แทนถือว่าคำขอ 3× ทำให้แต่ละด้านเป็นสามเท่าเสมอ\n\nเพดานความละเอียดต้นฉบับที่เผยแพร่คือ 2560×1440 เวิร์กโฟลว์นี้เพิ่มแหล่งที่เข้าเกณฑ์ไปสู่ 4K และสูงกว่า ไม่รับต้นฉบับที่ใหญ่กว่าอยู่แล้วเพียงเพราะต้องการผลลัพธ์สูงขึ้น ลดขนาดหรือเตรียมสำเนาทำงานที่เหมาะก่อนใช้โปรไฟล์นี้ เก็บไฟล์บันทึกเดิมแยก เพื่อไม่ให้การเปรียบเทียบสุดท้ายมีเพียงไฟล์กลางที่ย่อแล้ว\n\n### เตรียมต้นฉบับสั้นและอ่านรายละเอียดได้\n\nแนวทางทั่วไปจำกัดต้นฉบับยี่สิบวินาทีและห้าสิบ MB ส่งผ่าน URL วิดีโอหรือ MP4 ที่เข้ารหัส ข้ออ้างอิงละเอียดระบุว่าประมวลผลยี่สิบวินาทีแรก หากยาวเกินเล็กน้อยอาจประมวลผลถึงจุดนั้นเท่านั้น แต่ถ้ายาวเกินมากจะปฏิเสธ ไม่มีค่าความเผื่อเชิงตัวเลขเผยแพร่ จึงตัดช่วงที่ต้องการให้ไม่เกินยี่สิบวินาที แทนพึ่งพาพฤติกรรมขอบเขตที่ไม่ระบุ\n\nเลือกเวอร์ชันที่บีบอัดน้อยที่สุด อาร์ติแฟกต์การบีบอัดจำกัดรายละเอียดจริงที่กู้คืนได้ และโหมดสร้างสรรค์อาจสร้างพื้นผิวสมเหตุผลโดยไม่พิสูจน์ว่าฉากเดิมมีอะไร ตัดต่อและเลือกช่วงให้เสร็จก่อนขยาย เช่น ทำช็อตสินค้าเสร็จ เลือกช่วงการกระทำที่ใช้ แล้วขยายเฉพาะส่วนนั้น โดยเก็บต้นฉบับไม่แก้ไว้เปรียบเทียบ\n\nผลลัพธ์คงเสียงต้นฉบับ ตรวจจังหวะกับภาพ โดยเฉพาะต้นและท้ายช่วงที่เลือก โปรไฟล์นี้ไม่มีตัวเลือกเฟรมเรตอิสระ การสร้างบทสนทนาใหม่ หรือการแก้ด้วยภาพอ้างอิง จุดประสงค์คือวิดีโอใหญ่ขึ้นพร้อมแนวรายละเอียดที่เลือก โดยคงข้อมูลเวลาและเสียงในช่วงที่ประมวลผล\n\n### เก็บและตรวจคลิปที่ส่งมอบ\n\nเวิร์กโฟลว์เป็นแบบอะซิงโครนัส งานที่ส่งมีตัวระบุและตำแหน่งสถานะ เมื่อสำเร็จจะมีลิงก์ MP4 แบบลงนามที่หมดอายุประมาณหนึ่งชั่วโมง เก็บคลิปจริง ต้นฉบับ ตัวคูณ โหมด creativity และคำอธิบายเนื้อหา แทนพึ่งพาตำแหน่งชั่วคราว แยกสถานะล้มเหลวหรือถูกกลั่นกรองออกจากวิดีโอที่เสร็จแล้ว\n\nตรวจเฟรมเดี่ยวเรื่องใบหน้า เครื่องหมาย และการเปลี่ยนพื้นผิว แล้วดูทั้งลำดับเรื่องความต่อเนื่อง การเคลื่อนไหว และเสียงตรงภาพ โหมดแม่นยำและสร้างสรรค์ตอบโจทย์ภาพต่างกัน สิ่งส่งมอบที่ใช้ได้คือคลิปขยายที่ตรงเป้าหมายความเหมือนต้นฉบับ ณ ขนาดแสดงที่ต้องการ ความละเอียดสูงกว่าอย่างเดียวไม่พิสูจน์ว่าอัตลักษณ์ ข้อความ หรือรายละเอียดเล็กยังถูกต้อง",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "36d1a804839700dd416e9774a734ec2ca268a89922e48f8fd39277a6d476f337",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "th",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Black Forest Labs: FLUX Video Upscale</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>Black Forest Labs /</span><code>black-forest-labs/flux-video-upscale</code><button type=\"button\" id=\"copy-id\">คัดลอก ID</button></div><nav class=\"card-jump-nav\" aria-label=\"ส่วนต่าง ๆ ของการ์ดโมเดล\"><button type=\"button\" data-card-jump=\"overview\">เริ่มต้น</button><button type=\"button\" data-card-jump=\"methods\">อินพุตและเมธอด</button><button type=\"button\" data-card-jump=\"pricing\">ราคา</button><button type=\"button\" data-card-jump=\"examples\">ตัวอย่าง</button><button type=\"button\" data-card-jump=\"results\">ผลลัพธ์</button><button type=\"button\" data-card-jump=\"aliases\">ชื่ออื่น</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"เมธอด API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|black-forest-labs%2Fflux-video-upscale\">วิดีโอ</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\">เริ่มต้น</h3><p class=\"mdesc-full\">FLUX Video Upscale ขยายคลิปเดิมด้วยการเพิ่มรายละเอียดแบบรักษาต้นฉบับหรือเชิงสร้างสรรค์ โปรไฟล์ที่ระบุให้ขยาย 1.5×–3× คงเสียงและกรอบภาพเดิม พร้อมจำกัดความยาวต้นฉบับ ความละเอียดอินพุต และพื้นที่เฟรมเอาต์พุต</p><dl class=\"card-io\" data-card-io><div><dt>อินพุตที่รองรับ</dt><dd>ข้อความ · รูปภาพ · เสียง · วิดีโอ</dd></div><div><dt>ผลลัพธ์</dt><dd>วิดีโอ</dd></div></dl><details class=\"card-about\"><summary>เกี่ยวกับโมเดล</summary><p class=\"note-s\" data-model-method-boundary>คำอธิบายนี้ครอบคลุมความสามารถของโมเดล อินพุต เอาต์พุต และตัวเลือกที่ใช้ได้ใน Ailoot แสดงด้านล่างตามเมธอดที่เลือก</p><div class=\"mabout\" id=\"m-about\"><p>FLUX Video Upscale เป็นเวิร์กโฟลว์เพิ่มความละเอียดวิดีโอด้วย FLUX 3 ของ Black Forest Labs รับคลิปเดิมและคืน MP4 ที่ขยาย โดยคงกรอบภาพและเสียงต้นฉบับ ใช้คำอธิบายสั้นเพิ่มเติมกำกับรายละเอียดภาพได้ สองโหมดให้เลือกระหว่างการรักษารูปลักษณ์เดิมกับสร้างรายละเอียดมากขึ้น ไม่ใช่ถือว่าภาพใหญ่ทุกภาพฟื้นต้นฉบับได้ตรงกันเท่า ๆ กัน</p><h4>เลือกเพิ่มรายละเอียดแบบแม่นยำหรือสร้างสรรค์</h4><p>ค่า creativity เลือกโหมด ค่า 0 คือแบบแม่นยำที่รักษาต้นฉบับ ผู้ผลิตแนะนำเมื่อใบหน้า สินค้า หรือสื่อแบรนด์ต้องคงอัตลักษณ์ ค่า 1 เปิดการเพิ่มรายละเอียดเชิงสร้างสรรค์และเป็นค่าเริ่มต้น ฟื้นหรือสร้างพื้นผิวได้มากกว่า เหมาะกับฟุตเทจที่สร้างขึ้น ทิวทัศน์ ฝูงชน หรือพื้นผิวที่ปรับอย่างสร้างสรรค์ได้</p><p>ผู้ผลิตเตือนชัดว่าโหมดสร้างสรรค์รักษาใบหน้าและสินค้าไม่เคร่งครัดเท่า ตรวจสิ่งที่ต้องยังระบุได้ เช่น ใบหน้า โครงร่างสินค้า ตัวอักษร ลายวัสดุ หรือโลโก้ ภาพคมขึ้นอาจมีรายละเอียดเปลี่ยนหรือสร้างใหม่ สำหรับสาธิตสินค้าให้ใช้รูปลักษณ์สินค้าที่ต้องการเป็นเกณฑ์ แทนเลือกเพียงเพราะพื้นผิวละเอียดกว่า</p><p>พรอมป์ต์เสริมบรรยายเนื้อหาคลิปเพื่อกำกับการเพิ่มรายละเอียด หากว่างจะขยายแบบเป็นกลาง บรีฟฉากตัวอย่างอาจระบุกำแพงหินมีมอส แสงกลางวันนุ่ม และรายละเอียดใบไม้ เน้นวัสดุที่จะปรับ คำขอเปลี่ยนวัตถุ สร้างสถานที่ใหม่ หรือเปลี่ยนบทสนทนาเป็นการตัดสินใจด้านการแก้ไข ขณะที่โปรไฟล์นี้คงเสียงต้นฉบับ</p><h4>ตัวคูณและพื้นที่เฟรมเอาต์พุต</h4><p>upscale_factor ที่ระบุอยู่ระหว่าง 1.5 ถึง 3 ค่าเริ่มต้น 2 ขยายความละเอียดโดยรักษาอัตราส่วน ตัวคูณกับขนาดอินพุตกำหนดเอาต์พุตที่ตั้งใจ จึงต้องวางแผนคลิปแนวนอนและแนวตั้งจากเฟรมจริง เตรียมขนาดแสดงเป้าหมายก่อนเลือกว่าขยายเท่าใดจึงมีประโยชน์</p><p>ข้อกำหนดตรงตัวจำกัดเฟรมเอาต์พุตที่ 13.75 หน่วยเมกะพิกเซลของผู้ผลิต หนึ่งหน่วยเท่ากับ 1,048,576 พิกเซล จึงสูงสุด 14,417,920 พิกเซล หรือประมาณ 14.4 ล้าน อธิบายที่มาของคำว่า 14.4 เมกะพิกเซลแบบปัดเศษในคู่มือ ต้นฉบับใหญ่จึงอาจขยายได้น้อยกว่าตัวคูณที่ขอ ตรวจขนาดส่งมอบ แทนถือว่าคำขอ 3× ทำให้แต่ละด้านเป็นสามเท่าเสมอ</p><p>เพดานความละเอียดต้นฉบับที่เผยแพร่คือ 2560×1440 เวิร์กโฟลว์นี้เพิ่มแหล่งที่เข้าเกณฑ์ไปสู่ 4K และสูงกว่า ไม่รับต้นฉบับที่ใหญ่กว่าอยู่แล้วเพียงเพราะต้องการผลลัพธ์สูงขึ้น ลดขนาดหรือเตรียมสำเนาทำงานที่เหมาะก่อนใช้โปรไฟล์นี้ เก็บไฟล์บันทึกเดิมแยก เพื่อไม่ให้การเปรียบเทียบสุดท้ายมีเพียงไฟล์กลางที่ย่อแล้ว</p><h4>เตรียมต้นฉบับสั้นและอ่านรายละเอียดได้</h4><p>แนวทางทั่วไปจำกัดต้นฉบับยี่สิบวินาทีและห้าสิบ MB ส่งผ่าน URL วิดีโอหรือ MP4 ที่เข้ารหัส ข้ออ้างอิงละเอียดระบุว่าประมวลผลยี่สิบวินาทีแรก หากยาวเกินเล็กน้อยอาจประมวลผลถึงจุดนั้นเท่านั้น แต่ถ้ายาวเกินมากจะปฏิเสธ ไม่มีค่าความเผื่อเชิงตัวเลขเผยแพร่ จึงตัดช่วงที่ต้องการให้ไม่เกินยี่สิบวินาที แทนพึ่งพาพฤติกรรมขอบเขตที่ไม่ระบุ</p><p>เลือกเวอร์ชันที่บีบอัดน้อยที่สุด อาร์ติแฟกต์การบีบอัดจำกัดรายละเอียดจริงที่กู้คืนได้ และโหมดสร้างสรรค์อาจสร้างพื้นผิวสมเหตุผลโดยไม่พิสูจน์ว่าฉากเดิมมีอะไร ตัดต่อและเลือกช่วงให้เสร็จก่อนขยาย เช่น ทำช็อตสินค้าเสร็จ เลือกช่วงการกระทำที่ใช้ แล้วขยายเฉพาะส่วนนั้น โดยเก็บต้นฉบับไม่แก้ไว้เปรียบเทียบ</p><p>ผลลัพธ์คงเสียงต้นฉบับ ตรวจจังหวะกับภาพ โดยเฉพาะต้นและท้ายช่วงที่เลือก โปรไฟล์นี้ไม่มีตัวเลือกเฟรมเรตอิสระ การสร้างบทสนทนาใหม่ หรือการแก้ด้วยภาพอ้างอิง จุดประสงค์คือวิดีโอใหญ่ขึ้นพร้อมแนวรายละเอียดที่เลือก โดยคงข้อมูลเวลาและเสียงในช่วงที่ประมวลผล</p><h4>เก็บและตรวจคลิปที่ส่งมอบ</h4><p>เวิร์กโฟลว์เป็นแบบอะซิงโครนัส งานที่ส่งมีตัวระบุและตำแหน่งสถานะ เมื่อสำเร็จจะมีลิงก์ MP4 แบบลงนามที่หมดอายุประมาณหนึ่งชั่วโมง เก็บคลิปจริง ต้นฉบับ ตัวคูณ โหมด creativity และคำอธิบายเนื้อหา แทนพึ่งพาตำแหน่งชั่วคราว แยกสถานะล้มเหลวหรือถูกกลั่นกรองออกจากวิดีโอที่เสร็จแล้ว</p><p>ตรวจเฟรมเดี่ยวเรื่องใบหน้า เครื่องหมาย และการเปลี่ยนพื้นผิว แล้วดูทั้งลำดับเรื่องความต่อเนื่อง การเคลื่อนไหว และเสียงตรงภาพ โหมดแม่นยำและสร้างสรรค์ตอบโจทย์ภาพต่างกัน สิ่งส่งมอบที่ใช้ได้คือคลิปขยายที่ตรงเป้าหมายความเหมือนต้นฉบับ ณ ขนาดแสดงที่ต้องการ ความละเอียดสูงกว่าอย่างเดียวไม่พิสูจน์ว่าอัตลักษณ์ ข้อความ หรือรายละเอียดเล็กยังถูกต้อง</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">ใช้งานได้ใน Ailoot · อินพุตและเมธอด</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · วิดีโอ</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>ขาเข้า</dt><dd><code>text</code>, <code>image</code>, <code>audio</code>, <code>video</code></dd></div><div><dt>ขาออก</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th><th>ข้อกำหนด</th><th>ค่าและข้อจำกัด</th><th>ค่าเริ่มต้น</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>black-forest-labs/flux-video-upscale</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>array</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>จำนวนรายการขั้นต่ำ: 1</div><div>จำนวนรายการสูงสุด: 1</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">upscale_factor</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>number</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>ขั้นต่ำ: 1.5</div><div>สูงสุด: 3</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">creativity</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>integer</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>0, 1</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>พารามิเตอร์และวงจรการทำงานของเมธอด</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>พารามิเตอร์</th><th>ข้อกำหนด</th></tr></thead><tbody><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>content_type</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>application/json</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>required</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>model, input_references, upscale_factor, creativity</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>material_types</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>text, image, audio, video</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>material_conditions</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ใช้ URL เนื้อหาแอสเซ็ตวิดีโอจริงที่เสร็จสมบูรณ์และเป็นของคุณเพียงหนึ่งรายการ พร้อมลายเซ็นที่ส่งกลับ เจ้าของแอสเซ็ต ชนิด และหลักฐานไบต์ที่จัดเก็บต้องตรงกับคำขอ</td></tr></tbody></table></div><p>วงจรการทำงาน: <code>asynchronous_job_then_owned_outputs</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code> · id หรือ polling_url จริงที่ส่งกลับ</p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">ราคา</h3><div class=\"card-result-process\" data-billing-basis><h5>วิธีคำนวณค่าบริการสุดท้าย</h5><p class=\"note-s\">อัตราที่แสดงใช้ประมาณการค่าใช้จ่ายก่อนการสร้างผลลัพธ์ ยอดเรียกเก็บสุดท้ายคำนวณจากค่าใช้จ่ายที่บันทึกไว้สำหรับการสร้างผลลัพธ์ครั้งเดิม ระยะเวลาของผลลัพธ์ที่วัดได้และปริมาณที่คาดการณ์ไว้ไม่ใช่ปริมาณสุดท้ายที่ใช้คิดค่าบริการ</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก</p><dl data-price-conditions><dt>โหมดรวดเร็ว</dt><dd>ไม่ได้ระบุ <span class=\"note-s\">เมื่อเลือกโหมดรวดเร็ว</span></dd><dt>โหมดยืดหยุ่น</dt><dd>ไม่ได้ระบุ <span class=\"note-s\">เมื่อเลือกโหมด flex</span></dd><dt>ระดับการใช้เหตุผลสูงสุด</dt><dd>ไม่ได้ระบุ <span class=\"note-s\">เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด</span></dd></dl></div><div data-declared-tariff-pricing><h4>อัตราประมาณการเพื่อเปรียบเทียบ</h4><h4>ราคาตามการตั้งค่า</h4><p class=\"note-s\">เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>การตั้งค่า</th><th>ตารางอัตราค่าบริการ</th><th>ปริมาณคาดการณ์</th><th>หน่วยคิดค่าบริการ</th><th>เงื่อนไขคิดค่าบริการ</th><th>จำนวนพิกเซลต่อเมกะพิกเซล</th><th>ค่าบริการ</th></tr></thead><tbody><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>อัตราค่าบริการโทเคนพื้นฐาน</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>อัตราพื้นฐาน</td><td data-cell-label=\"ปริมาณคาดการณ์\"><span class=\"card-cell-label\">ปริมาณคาดการณ์</span>—</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>—</td><td data-cell-label=\"เงื่อนไขคิดค่าบริการ\"><span class=\"card-cell-label\">เงื่อนไขคิดค่าบริการ</span>—</td><td data-cell-label=\"จำนวนพิกเซลต่อเมกะพิกเซล\"><span class=\"card-cell-label\">จำนวนพิกเซลต่อเมกะพิกเซล</span>—</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาเข้า · โทเค็นอินพุต · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาออก · โทเค็นเอาต์พุต · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การอ่านแคช · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การเขียนแคช · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การเขียนแคช, 1 ชั่วโมง · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div></td></tr><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>ราคาวิดีโอ</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>—</td><td data-cell-label=\"ปริมาณคาดการณ์\"><span class=\"card-cell-label\">ปริมาณคาดการณ์</span>—</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>ต่อเมกะพิกเซล-วินาที</td><td data-cell-label=\"เงื่อนไขคิดค่าบริการ\"><span class=\"card-cell-label\">เงื่อนไขคิดค่าบริการ</span>คุณภาพ: creative</td><td data-cell-label=\"จำนวนพิกเซลต่อเมกะพิกเซล\"><span class=\"card-cell-label\">จำนวนพิกเซลต่อเมกะพิกเซล</span>1,048,576</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาออก · ราคาวิดีโอ · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>$0.21</b> <span class=\"price-unit\">ต่อเมกะพิกเซล-วินาที</span></div></td></tr><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>ราคาวิดีโอ</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>—</td><td data-cell-label=\"ปริมาณคาดการณ์\"><span class=\"card-cell-label\">ปริมาณคาดการณ์</span>—</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>ต่อเมกะพิกเซล-วินาที</td><td data-cell-label=\"เงื่อนไขคิดค่าบริการ\"><span class=\"card-cell-label\">เงื่อนไขคิดค่าบริการ</span>quality: precise</td><td data-cell-label=\"จำนวนพิกเซลต่อเมกะพิกเซล\"><span class=\"card-cell-label\">จำนวนพิกเซลต่อเมกะพิกเซล</span>1,048,576</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาออก · ราคาวิดีโอ · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>$0.15</b> <span class=\"price-unit\">ต่อเมกะพิกเซล-วินาที</span></div></td></tr><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>ต้นทุนการสร้างโดยประมาณ</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>—</td><td data-cell-label=\"ปริมาณคาดการณ์\"><span class=\"card-cell-label\">ปริมาณคาดการณ์</span>ค่าประมาณสำหรับการสร้างหนึ่งครั้ง</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>—</td><td data-cell-label=\"เงื่อนไขคิดค่าบริการ\"><span class=\"card-cell-label\">เงื่อนไขคิดค่าบริการ</span>—</td><td data-cell-label=\"จำนวนพิกเซลต่อเมกะพิกเซล\"><span class=\"card-cell-label\">จำนวนพิกเซลต่อเมกะพิกเซล</span>—</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาออก · ค่าใช้จ่ายในการสร้างโดยประมาณ · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>$0.15</b> <span class=\"price-unit\">ประมาณการก่อนสร้าง</span></div><p class=\"note-s\">ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย <a href=\"/docs/th/billing/reserve/\">วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">ตัวอย่างคำขอ</h3><h4>Ailoot Ultra · วิดีโอ</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"ตัวเลือกโค้ด\"><button class=\"cg-tab\" id=\"model-code-1097-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1097-panel-0\" aria-selected=\"true\" tabindex=\"0\">ใช้ข้อมูลเข้าจริงและเก็บผลลัพธ์ไว้ให้ครบถ้วน</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"คัดลอกโค้ด\"><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-1097-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1097-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_REFERENCES_JSON\n: &quot;${AILOOT_UPSCALE_FACTOR:?Set the actual documented input value}&quot;\nexport AILOOT_UPSCALE_FACTOR\n: &quot;${AILOOT_CREATIVITY:?Set the actual documented input value}&quot;\nexport AILOOT_CREATIVITY\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;black-forest-labs/flux-video-upscale&#39;, &#39;input_references&#39;: &#39;${ACTUAL_OWNED_INPUT_REFERENCES}&#39;, &#39;upscale_factor&#39;: &#39;${ACTUAL_UPSCALE_FACTOR}&#39;, &#39;creativity&#39;: &#39;${ACTUAL_CREATIVITY}&#39;}\nrequest[&#39;input_references&#39;]=json.loads(os.environ[&#39;AILOOT_INPUT_REFERENCES_JSON&#39;])\nrequest[&#39;upscale_factor&#39;]=float(os.environ[&#39;AILOOT_UPSCALE_FACTOR&#39;])\nrequest[&#39;creativity&#39;]=int(os.environ[&#39;AILOOT_CREATIVITY&#39;])\nPath(&#39;request.json&#39;).write_text(json.dumps(request,ensure_ascii=False),encoding=&#39;utf-8&#39;)\nPY_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 response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">รับและบันทึกผลลัพธ์</h3><h4>Ailoot Ultra · วิดีโอ</h4><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li></ul><h5>บันทึกไฟล์ที่สร้างเสร็จทั้งหมด</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"ตัวเลือกโค้ด\"><button class=\"cg-tab\" id=\"model-code-1098-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1098-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET · ดึงไฟล์สื่อที่เสร็จสมบูรณ์ทั้งหมด</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"คัดลอกโค้ด\"><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-1098-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1098-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}&quot;\nexport AILOOT_STATUS_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[&quot;AILOOT_STATUS_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose the actual completed status file&quot;)\nr=json.loads(f.read_text())\nif r.get(&quot;status&quot;)!=&quot;completed&quot; or not isinstance(r.get(&quot;data&quot;),list) or not r[&quot;data&quot;]:raise SystemExit(&quot;Wait for a completed status with asset paths&quot;)\nurls=[]\nfor x in r[&quot;data&quot;]:\n    if not isinstance(x,str) or &quot;\\n&quot; in x or &quot;\\r&quot; in x:raise SystemExit(&quot;Invalid asset path&quot;)\n    u=urljoin(&quot;https://api.ailoot.ai&quot;,x)\n    z=urlsplit(u)\n    if z.scheme!=&quot;https&quot; or z.netloc!=&quot;api.ailoot.ai&quot; or z.username or z.password:raise SystemExit(&quot;Use the actual Ailoot asset paths from status&quot;)\n    urls.append(u)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; \\\n    -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o &quot;video-${index}.mp4&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\n</code></pre></div></div></div><div class=\"card-result-process\" data-all-results><h5>เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด</h5><p class=\"note-s\">บันทึกวิดีโอที่สร้างเสร็จหรือไฟล์ที่ส่งกลับมาทุกไฟล์ และดึงไฟล์สื่อจากทุก URL ที่ส่งกลับมาจริง</p><p class=\"note-s\">เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ</h5><p class=\"note-s\">เก็บ X-Client-Request-ID, X-Ailoot-Task-Id และ id/polling_url จริงที่ส่งกลับ ดำเนินงานเดิมต่อ อย่าส่งคำขอสร้างซ้ำ</p></div><details class=\"card-about\" data-output-fields><summary>ฟิลด์การตอบกลับ</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">outputs[]</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">ชื่ออื่น</h3><h4>ชื่ออื่นของโมเดล</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=black-forest-labs%2Fflux-video-upscale&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-video-upscale&amp;fmt=videos\"><code>black-forest-labs/flux-video-upscale</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=black-forest-labs%2Fflux-video-upscale&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-video-upscale&amp;fmt=videos\"><code>black-forest-labs/flux-video-upscale</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "black-forest-labs/flux-video-upscale",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "black-forest-labs/flux-video-upscale",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|black-forest-labs%2Fflux-video-upscale",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "อัตราที่แสดงใช้ประมาณการค่าใช้จ่ายก่อนการสร้างผลลัพธ์ ยอดเรียกเก็บสุดท้ายคำนวณจากค่าใช้จ่ายที่บันทึกไว้สำหรับการสร้างผลลัพธ์ครั้งเดิม ระยะเวลาของผลลัพธ์ที่วัดได้และปริมาณที่คาดการณ์ไว้ไม่ใช่ปริมาณสุดท้ายที่ใช้คิดค่าบริการ",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "เก็บ X-Client-Request-ID, X-Ailoot-Task-Id และ id/polling_url จริงที่ส่งกลับ ดำเนินงานเดิมต่อ อย่าส่งคำขอสร้างซ้ำ"
            },
            "outputs": {
              "all_results": "เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux-video-upscale"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "const": "video_url"
                    },
                    "video_url": {
                      "additionalProperties": false,
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "type",
                    "video_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 1,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "maximum": 3,
                "minimum": 1.5,
                "name": "upscale_factor",
                "required": true,
                "type": "number"
              },
              {
                "enum": [
                  0,
                  1
                ],
                "enum_known": true,
                "name": "creativity",
                "required": true,
                "type": "integer"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "creativity": {
                  "enum": [
                    0,
                    1
                  ],
                  "type": "integer"
                },
                "input_references": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "const": "video_url"
                      },
                      "video_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "type",
                      "video_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-video-upscale"
                  ],
                  "type": "string"
                },
                "upscale_factor": {
                  "maximum": 3,
                  "minimum": 1.5,
                  "type": "number"
                }
              },
              "required": [
                "model",
                "input_references",
                "upscale_factor",
                "creativity"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "creativity": "${ACTUAL_CREATIVITY}",
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "black-forest-labs/flux-video-upscale",
                "upscale_factor": "${ACTUAL_UPSCALE_FACTOR}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "ใช้ URL เนื้อหาแอสเซ็ตวิดีโอจริงที่เสร็จสมบูรณ์และเป็นของคุณเพียงหนึ่งรายการ พร้อมลายเซ็นที่ส่งกลับ เจ้าของแอสเซ็ต ชนิด และหลักฐานไบต์ที่จัดเก็บต้องตรงกับคำขอ"
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "upscale_factor",
              "creativity"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "id หรือ polling_url จริงที่ส่งกลับ",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "คุณภาพ: creative",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "ราคาวิดีโอ",
            "units": [
              {
                "amount": "0.21",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_creative",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.21",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "quality: precise",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_precise",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.15",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "basis": "ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "ต้นทุนการสร้างโดยประมาณ",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.15",
                "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}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\n: \"${AILOOT_UPSCALE_FACTOR:?Set the actual documented input value}\"\nexport AILOOT_UPSCALE_FACTOR\n: \"${AILOOT_CREATIVITY:?Set the actual documented input value}\"\nexport AILOOT_CREATIVITY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'black-forest-labs/flux-video-upscale', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'upscale_factor': '${ACTUAL_UPSCALE_FACTOR}', 'creativity': '${ACTUAL_CREATIVITY}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['upscale_factor']=float(os.environ['AILOOT_UPSCALE_FACTOR'])\nrequest['creativity']=int(os.environ['AILOOT_CREATIVITY'])\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_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 response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "วิดีโอ",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "quality: creative",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.21",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_creative",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.21",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "quality: precise",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_precise",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.15",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.15",
                "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": "black-forest-labs/flux-video-upscale",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.21",
            "amount_unit": "usd_per_megapixel_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_megapixel_second_creative",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.21",
            "native_quantity": 1,
            "public_unit_label": "per megapixel-second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "megapixel_second"
          },
          {
            "amount": "0.15",
            "amount_unit": "usd_per_megapixel_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_megapixel_second_precise",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.15",
            "native_quantity": 1,
            "public_unit_label": "per megapixel-second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "megapixel_second"
          },
          {
            "amount": "0.15",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.15",
            "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": "black-forest-labs/flux-video-upscale",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "ee1f14c9fbbc73588c952610f97609e83fdaf4e3028786e8b6a2a64f03917966",
    "input_html_sha256": "0b03cdc1e7b108d28af1baabbda90003b5f18f08f7bf5e6eb7cff060fdaa054a",
    "private_audit_sha256": "56c9b3c2cc54da1169292ea5f45aab06ee03e9b1bc251c39d13cb6fca6088ecd",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/black-forest-labs-flux-video-upscale/",
    "description": "FLUX Video Upscale ขยายคลิปเดิมด้วยการเพิ่มรายละเอียดแบบรักษาต้นฉบับหรือเชิงสร้างสรรค์ โปรไฟล์ที่ระบุให้ขยาย 1.5×–3× คงเสียงและกรอบภาพเดิม พร้อมจำกัดความยาวต้นฉบับ ความละเอียดอินพุต และพื้นที่เฟรมเอาต์พุต",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/black-forest-labs-flux-video-upscale/index.md",
    "title": "Black Forest Labs: FLUX Video Upscale — Ailoot",
    "url": "https://ailoot.ai/models/th/black-forest-labs-flux-video-upscale/"
  },
  "rawModel": {
    "about": "FLUX Video Upscale เป็นเวิร์กโฟลว์เพิ่มความละเอียดวิดีโอด้วย FLUX 3 ของ Black Forest Labs รับคลิปเดิมและคืน MP4 ที่ขยาย โดยคงกรอบภาพและเสียงต้นฉบับ ใช้คำอธิบายสั้นเพิ่มเติมกำกับรายละเอียดภาพได้ สองโหมดให้เลือกระหว่างการรักษารูปลักษณ์เดิมกับสร้างรายละเอียดมากขึ้น ไม่ใช่ถือว่าภาพใหญ่ทุกภาพฟื้นต้นฉบับได้ตรงกันเท่า ๆ กัน\n\n### เลือกเพิ่มรายละเอียดแบบแม่นยำหรือสร้างสรรค์\n\nค่า creativity เลือกโหมด ค่า 0 คือแบบแม่นยำที่รักษาต้นฉบับ ผู้ผลิตแนะนำเมื่อใบหน้า สินค้า หรือสื่อแบรนด์ต้องคงอัตลักษณ์ ค่า 1 เปิดการเพิ่มรายละเอียดเชิงสร้างสรรค์และเป็นค่าเริ่มต้น ฟื้นหรือสร้างพื้นผิวได้มากกว่า เหมาะกับฟุตเทจที่สร้างขึ้น ทิวทัศน์ ฝูงชน หรือพื้นผิวที่ปรับอย่างสร้างสรรค์ได้\n\nผู้ผลิตเตือนชัดว่าโหมดสร้างสรรค์รักษาใบหน้าและสินค้าไม่เคร่งครัดเท่า ตรวจสิ่งที่ต้องยังระบุได้ เช่น ใบหน้า โครงร่างสินค้า ตัวอักษร ลายวัสดุ หรือโลโก้ ภาพคมขึ้นอาจมีรายละเอียดเปลี่ยนหรือสร้างใหม่ สำหรับสาธิตสินค้าให้ใช้รูปลักษณ์สินค้าที่ต้องการเป็นเกณฑ์ แทนเลือกเพียงเพราะพื้นผิวละเอียดกว่า\n\nพรอมป์ต์เสริมบรรยายเนื้อหาคลิปเพื่อกำกับการเพิ่มรายละเอียด หากว่างจะขยายแบบเป็นกลาง บรีฟฉากตัวอย่างอาจระบุกำแพงหินมีมอส แสงกลางวันนุ่ม และรายละเอียดใบไม้ เน้นวัสดุที่จะปรับ คำขอเปลี่ยนวัตถุ สร้างสถานที่ใหม่ หรือเปลี่ยนบทสนทนาเป็นการตัดสินใจด้านการแก้ไข ขณะที่โปรไฟล์นี้คงเสียงต้นฉบับ\n\n### ตัวคูณและพื้นที่เฟรมเอาต์พุต\n\nupscale_factor ที่ระบุอยู่ระหว่าง 1.5 ถึง 3 ค่าเริ่มต้น 2 ขยายความละเอียดโดยรักษาอัตราส่วน ตัวคูณกับขนาดอินพุตกำหนดเอาต์พุตที่ตั้งใจ จึงต้องวางแผนคลิปแนวนอนและแนวตั้งจากเฟรมจริง เตรียมขนาดแสดงเป้าหมายก่อนเลือกว่าขยายเท่าใดจึงมีประโยชน์\n\nข้อกำหนดตรงตัวจำกัดเฟรมเอาต์พุตที่ 13.75 หน่วยเมกะพิกเซลของผู้ผลิต หนึ่งหน่วยเท่ากับ 1,048,576 พิกเซล จึงสูงสุด 14,417,920 พิกเซล หรือประมาณ 14.4 ล้าน อธิบายที่มาของคำว่า 14.4 เมกะพิกเซลแบบปัดเศษในคู่มือ ต้นฉบับใหญ่จึงอาจขยายได้น้อยกว่าตัวคูณที่ขอ ตรวจขนาดส่งมอบ แทนถือว่าคำขอ 3× ทำให้แต่ละด้านเป็นสามเท่าเสมอ\n\nเพดานความละเอียดต้นฉบับที่เผยแพร่คือ 2560×1440 เวิร์กโฟลว์นี้เพิ่มแหล่งที่เข้าเกณฑ์ไปสู่ 4K และสูงกว่า ไม่รับต้นฉบับที่ใหญ่กว่าอยู่แล้วเพียงเพราะต้องการผลลัพธ์สูงขึ้น ลดขนาดหรือเตรียมสำเนาทำงานที่เหมาะก่อนใช้โปรไฟล์นี้ เก็บไฟล์บันทึกเดิมแยก เพื่อไม่ให้การเปรียบเทียบสุดท้ายมีเพียงไฟล์กลางที่ย่อแล้ว\n\n### เตรียมต้นฉบับสั้นและอ่านรายละเอียดได้\n\nแนวทางทั่วไปจำกัดต้นฉบับยี่สิบวินาทีและห้าสิบ MB ส่งผ่าน URL วิดีโอหรือ MP4 ที่เข้ารหัส ข้ออ้างอิงละเอียดระบุว่าประมวลผลยี่สิบวินาทีแรก หากยาวเกินเล็กน้อยอาจประมวลผลถึงจุดนั้นเท่านั้น แต่ถ้ายาวเกินมากจะปฏิเสธ ไม่มีค่าความเผื่อเชิงตัวเลขเผยแพร่ จึงตัดช่วงที่ต้องการให้ไม่เกินยี่สิบวินาที แทนพึ่งพาพฤติกรรมขอบเขตที่ไม่ระบุ\n\nเลือกเวอร์ชันที่บีบอัดน้อยที่สุด อาร์ติแฟกต์การบีบอัดจำกัดรายละเอียดจริงที่กู้คืนได้ และโหมดสร้างสรรค์อาจสร้างพื้นผิวสมเหตุผลโดยไม่พิสูจน์ว่าฉากเดิมมีอะไร ตัดต่อและเลือกช่วงให้เสร็จก่อนขยาย เช่น ทำช็อตสินค้าเสร็จ เลือกช่วงการกระทำที่ใช้ แล้วขยายเฉพาะส่วนนั้น โดยเก็บต้นฉบับไม่แก้ไว้เปรียบเทียบ\n\nผลลัพธ์คงเสียงต้นฉบับ ตรวจจังหวะกับภาพ โดยเฉพาะต้นและท้ายช่วงที่เลือก โปรไฟล์นี้ไม่มีตัวเลือกเฟรมเรตอิสระ การสร้างบทสนทนาใหม่ หรือการแก้ด้วยภาพอ้างอิง จุดประสงค์คือวิดีโอใหญ่ขึ้นพร้อมแนวรายละเอียดที่เลือก โดยคงข้อมูลเวลาและเสียงในช่วงที่ประมวลผล\n\n### เก็บและตรวจคลิปที่ส่งมอบ\n\nเวิร์กโฟลว์เป็นแบบอะซิงโครนัส งานที่ส่งมีตัวระบุและตำแหน่งสถานะ เมื่อสำเร็จจะมีลิงก์ MP4 แบบลงนามที่หมดอายุประมาณหนึ่งชั่วโมง เก็บคลิปจริง ต้นฉบับ ตัวคูณ โหมด creativity และคำอธิบายเนื้อหา แทนพึ่งพาตำแหน่งชั่วคราว แยกสถานะล้มเหลวหรือถูกกลั่นกรองออกจากวิดีโอที่เสร็จแล้ว\n\nตรวจเฟรมเดี่ยวเรื่องใบหน้า เครื่องหมาย และการเปลี่ยนพื้นผิว แล้วดูทั้งลำดับเรื่องความต่อเนื่อง การเคลื่อนไหว และเสียงตรงภาพ โหมดแม่นยำและสร้างสรรค์ตอบโจทย์ภาพต่างกัน สิ่งส่งมอบที่ใช้ได้คือคลิปขยายที่ตรงเป้าหมายความเหมือนต้นฉบับ ณ ขนาดแสดงที่ต้องการ ความละเอียดสูงกว่าอย่างเดียวไม่พิสูจน์ว่าอัตลักษณ์ ข้อความ หรือรายละเอียดเล็กยังถูกต้อง",
    "alias_of": null,
    "aliases": [],
    "author": "Black Forest Labs",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "video"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.15",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.15",
            "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": "ดูราคาตามการกำหนดค่าแบบครบถ้วนในรายละเอียด"
      }
    ],
    "ctx": null,
    "formats": [
      "videos"
    ],
    "id": "black-forest-labs/flux-video-upscale",
    "input": [
      "text",
      "image",
      "audio",
      "video"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "อัตราที่แสดงใช้ประมาณการค่าใช้จ่ายก่อนการสร้างผลลัพธ์ ยอดเรียกเก็บสุดท้ายคำนวณจากค่าใช้จ่ายที่บันทึกไว้สำหรับการสร้างผลลัพธ์ครั้งเดิม ระยะเวลาของผลลัพธ์ที่วัดได้และปริมาณที่คาดการณ์ไว้ไม่ใช่ปริมาณสุดท้ายที่ใช้คิดค่าบริการ",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "เก็บ X-Client-Request-ID, X-Ailoot-Task-Id และ id/polling_url จริงที่ส่งกลับ ดำเนินงานเดิมต่อ อย่าส่งคำขอสร้างซ้ำ"
            },
            "outputs": {
              "all_results": "เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux-video-upscale"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "const": "video_url"
                    },
                    "video_url": {
                      "additionalProperties": false,
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "type",
                    "video_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 1,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "maximum": 3,
                "minimum": 1.5,
                "name": "upscale_factor",
                "required": true,
                "type": "number"
              },
              {
                "enum": [
                  0,
                  1
                ],
                "enum_known": true,
                "name": "creativity",
                "required": true,
                "type": "integer"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "creativity": {
                  "enum": [
                    0,
                    1
                  ],
                  "type": "integer"
                },
                "input_references": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "const": "video_url"
                      },
                      "video_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "type",
                      "video_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-video-upscale"
                  ],
                  "type": "string"
                },
                "upscale_factor": {
                  "maximum": 3,
                  "minimum": 1.5,
                  "type": "number"
                }
              },
              "required": [
                "model",
                "input_references",
                "upscale_factor",
                "creativity"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "creativity": "${ACTUAL_CREATIVITY}",
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "black-forest-labs/flux-video-upscale",
                "upscale_factor": "${ACTUAL_UPSCALE_FACTOR}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "ใช้ URL เนื้อหาแอสเซ็ตวิดีโอจริงที่เสร็จสมบูรณ์และเป็นของคุณเพียงหนึ่งรายการ พร้อมลายเซ็นที่ส่งกลับ เจ้าของแอสเซ็ต ชนิด และหลักฐานไบต์ที่จัดเก็บต้องตรงกับคำขอ"
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "upscale_factor",
              "creativity"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "id หรือ polling_url จริงที่ส่งกลับ",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "คุณภาพ: creative",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "ราคาวิดีโอ",
            "units": [
              {
                "amount": "0.21",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_creative",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.21",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "quality: precise",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_precise",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.15",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "basis": "ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "ต้นทุนการสร้างโดยประมาณ",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.15",
                "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}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\n: \"${AILOOT_UPSCALE_FACTOR:?Set the actual documented input value}\"\nexport AILOOT_UPSCALE_FACTOR\n: \"${AILOOT_CREATIVITY:?Set the actual documented input value}\"\nexport AILOOT_CREATIVITY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'black-forest-labs/flux-video-upscale', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'upscale_factor': '${ACTUAL_UPSCALE_FACTOR}', 'creativity': '${ACTUAL_CREATIVITY}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['upscale_factor']=float(os.environ['AILOOT_UPSCALE_FACTOR'])\nrequest['creativity']=int(os.environ['AILOOT_CREATIVITY'])\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_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 response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "วิดีโอ",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "quality: creative",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.21",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_creative",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.21",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "quality: precise",
              "pixels_per_megapixel": 1048576,
              "quoted_unit": "per megapixel-second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_megapixel_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_megapixel_second_precise",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.15",
                "native_quantity": 1,
                "public_unit_label": "per megapixel-second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "megapixel_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.15",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.15",
                "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": "black-forest-labs/flux-video-upscale",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.21",
            "amount_unit": "usd_per_megapixel_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_megapixel_second_creative",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.21",
            "native_quantity": 1,
            "public_unit_label": "per megapixel-second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "megapixel_second"
          },
          {
            "amount": "0.15",
            "amount_unit": "usd_per_megapixel_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_megapixel_second_precise",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.15",
            "native_quantity": 1,
            "public_unit_label": "per megapixel-second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "megapixel_second"
          },
          {
            "amount": "0.15",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.15",
            "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": "black-forest-labs/flux-video-upscale",
        "request_model_id": "black-forest-labs/flux-video-upscale",
        "route_label": "Ultra"
      }
    ],
    "name": "Black Forest Labs: FLUX Video Upscale",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.15,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.15,
      "varies": false
    },
    "short": "FLUX Video Upscale ขยายคลิปเดิมด้วยการเพิ่มรายละเอียดแบบรักษาต้นฉบับหรือเชิงสร้างสรรค์ โปรไฟล์ที่ระบุให้ขยาย 1.5×–3× คงเสียงและกรอบภาพเดิม พร้อมจำกัดความยาวต้นฉบับ ความละเอียดอินพุต และพื้นที่เฟรมเอาต์พุต"
  },
  "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": "FLUX Video Upscale ขยายคลิปเดิมด้วยการเพิ่มรายละเอียดแบบรักษาต้นฉบับหรือเชิงสร้างสรรค์ โปรไฟล์ที่ระบุให้ขยาย 1.5×–3× คงเสียงและกรอบภาพเดิม พร้อมจำกัดความยาวต้นฉบับ ความละเอียดอินพุต และพื้นที่เฟรมเอาต์พุต",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "1e7a4c3e1f1cb33a0d863f3a78dd441badf19589dacbd694cdf9db6bf2b9912c",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "072621e108120ef937fb97bec81ade715175bf432b11fa46b0f7e16a09a3853c"
}
