{
  "aboutHtml": "<p>Seedance 2.0 Mini เป็นโมเดลชื่อแยกในตระกูลภาพพร้อมเสียง Seedance 2.0 ของ ByteDance ผู้ผลิตระบุการสร้างวิดีโอจากข้อความ จากภาพเฟรมแรก จากภาพเฟรมแรกและสุดท้าย การสร้างด้วยสื่ออ้างอิงหลายรูปแบบ การแก้ไข และการต่อวิดีโอ สร้างเสียงร่วมกับภาพได้ เลือกโหมดตามสิ่งที่มีอยู่ ได้แก่ บรีฟข้อความ ภาพเปิดที่กำหนดไว้ ภาพสองปลายทาง หรือคลิปที่ต้องแก้หรือต่อ</p><p>Mini มีข้อกำหนดเอาต์พุตของตนเอง ผู้ผลิตระบุวิดีโอ 480p และ 720p สี 8 บิต 24 เฟรมต่อวินาที และ MP4 อัตราส่วนที่รองรับคือ 21:9, 16:9, 4:3, 1:1, 3:4 และ 9:16 ระยะเวลาที่ระบุคือ 4–15 วินาที และเลือกความยาวอัตโนมัติภายในช่วงนี้ได้ ตัวเลือก 1080p และ 4K ของ Seedance 2.0 รุ่นเต็มเป็นของอีกโมเดล ไม่ใช่การตั้งค่า Mini ตารางความสามารถของตระกูลระบุการส่งคืนเฟรมสุดท้ายที่สร้าง แต่ไม่รองรับโหมด Draft</p><p>Omni reference สร้างฉากใหม่โดยเลือกข้อมูลจากสื่อที่ให้ ภาพกำหนดรูปลักษณ์ตัวแบบ องค์ประกอบ หรือแนวภาพ วิดีโอกำหนดการกระทำ กล้อง หรือเอฟเฟกต์ เสียงกำหนดเนื้อเสียง ทำนอง หรือถ้อยคำ บอกว่าจะนำอะไรจากแต่ละแหล่งมาใช้ แทนการให้คัดลอกทุกคุณสมบัติ เช่น ใช้ภาพสินค้าสำหรับรูปทรงและสี คลิปกล้องสั้นสำหรับแนวเข้าหา และเสียงอ้างอิงสำหรับบรรยากาศ</p><p>เวิร์กโฟลว์ตระกูลนี้ใช้ภาพอ้างอิงได้สูงสุดเก้าภาพ วิดีโอสามคลิป และเสียงสามคลิป วิดีโอแต่ละคลิปยาว 2–15 วินาที และรวมไม่เกิน 15 วินาที เสียงใช้ขีดจำกัดต่อคลิปและรวมเช่นเดียวกัน ไม่รองรับเสียงอย่างเดียวหรือข้อความร่วมกับเสียงโดยไม่มีภาพอ้างอิง การสร้างจากข้อความอย่างเดียวเป็นอีกโหมดที่รองรับ สำหรับงานเป็นลำดับ ให้ส่งสื่อตามลำดับที่ต้องการและอ้างเป็น Image 1, Video 1 หรือ Audio 1 อย่างสม่ำเสมอ โดยนับแยกตามประเภทสื่อ อย่าใช้รหัสสินทรัพย์แทนหมายเลขอ้างอิงในพรอมป์ต์</p><p>ภาพเฟรมแรกกำหนดตอนเปิดของช็อตที่นำด้วยภาพ ส่วนโหมดเฟรมแรกและสุดท้ายกำหนดทั้งสองขอบเขต หากภาพขอบเขตที่แน่นอนสำคัญ ให้ใช้โหมดเฉพาะ แทนการบรรยายว่าภาพอ้างอิงเป็นตอนเปิดและจบในพรอมป์ต์ omni-reference วิธีหลังเป็นผลที่กำกับด้วยข้อความ ไม่เท่ากับการเลือกเฟรมขอบเขตแบบเคร่งครัด เตรียมภาพให้ตรงองค์ประกอบเอาต์พุตและระบุการกระทำที่เชื่อมสถานการณ์เริ่มกับจบ</p><p>การแก้วิดีโอปรับคลิปเดิม แทนการใช้เป็นแรงบันดาลใจเท่านั้น ระบุวิดีโอ วัตถุหรือบริเวณที่จะเปลี่ยน เวลาที่ปรากฏ ตำแหน่ง และสิ่งที่จะรักษา ตัวอย่างบรีฟที่ใช้ได้คือ “ใน Video 1 เปลี่ยนแก้วมัคเป็นภาชนะใน Image 1 โดยรักษาการเคลื่อนไหวมือ กรอบภาพ แสง และการจัดโต๊ะ” สำหรับการลบ ให้ระบุวัตถุที่ไม่ต้องการและสิ่งรอบข้างที่ต้องคงไว้ ผู้ผลิตแนะนำให้เรียกวิดีโอเป้าหมายโดยตรงเมื่อต้องแก้หรือต่อ การเรียกว่าเป็นสื่ออ้างอิงอาจสื่อว่าต้องการฉากใหม่แทน</p><p>การต่อวิดีโอเพิ่มเหตุการณ์ก่อนหรือหลังคลิปเดิม ระบุทิศทางและสิ่งที่จะเกิดถัดไปหรือก่อนหน้า เวิร์กโฟลว์ที่ระบุยังเชื่อมสองหรือสามคลิปด้วยช่วงเปลี่ยนที่สร้างขึ้นได้ โดยวิดีโออินพุตทั้งสามรวมกันยังต้องอยู่ภายในขีดจำกัดอ้างอิง 15 วินาที บทสอนแยกการต่อที่เน้นฟุตเทจบริเวณขอบคลิปเดิมออกจากคำขอที่ระบุให้คงเนื้อหาเดิมทั้งหมด ระบุผลลัพธ์ที่ต้องการให้ชัดว่าเอาเฉพาะส่วนต่อ หรือฉากที่มีทั้งคลิปต้นฉบับและการกระทำใหม่</p><p>เพื่อกำกับให้ชัด ให้แยกคำอธิบายฉากคงที่ออกจากลำดับเหตุการณ์ กำหนดตัวแบบแต่ละรายด้วยลักษณะเด่นสองหรือสามอย่างและป้ายชื่อที่สม่ำเสมอ แล้วบรรยายการกระทำ สถานที่ แสง กล้อง สไตล์ และเงื่อนไข สำหรับบทสนทนา ผูกแต่ละประโยคกับผู้พูดและการกระทำ ใช้ชื่อช็อตตามลำดับแทนการถือว่าเวลาที่แน่นอนเป็นตัวควบคุมที่เชื่อถือได้ เพราะผู้ผลิตระบุว่าจังหวะละเอียดอาจไม่นิ่ง ตัวอย่างบรีฟสินค้าที่แบ่งช่วงคือ “Image 1 กำหนดสินค้า A ช็อต 1: เคลื่อนเข้าหาสินค้า A บนเคาน์เตอร์ช้า ๆ ช็อต 2: มือหมุนสินค้าเข้าหาแสง ช็อต 3: หยุดที่ฉลากด้านหน้า ใช้เสียงบรรยากาศห้องเบา ๆ และรักษาตัวอักษรที่พิมพ์ไว้”</p><p>เตรียมสื่อตามกฎอินพุตของตระกูล รูปแบบภาพที่รองรับคือ JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC และ HEIF แต่ละภาพต้องเล็กกว่า 30 MB คู่มือกำหนดความกว้างและสูงมากกว่า 300 แต่น้อยกว่า 6,000 พิกเซล และอัตราส่วนมากกว่า 0.4 แต่น้อยกว่า 2.5 วิดีโออ้างอิงใช้ MP4 หรือ MOV พร้อมวิดีโอ H.264 หรือ H.265 และเสียง AAC หรือ MP3 ขนาดไม่เกิน 200 MB ต่อคลิป ที่ 24–60 เฟรมต่อวินาที ความกว้างและสูง 300–6,000 พิกเซล อัตราส่วน 0.4–2.5 และพื้นที่ภาพรวม 407,696–8,295,044 พิกเซล เสียงใช้ WAV หรือ MP3 ไม่เกิน 15 MB ต่อคลิป เหล่านี้เป็นข้อกำหนดเตรียมอินพุตของผู้ผลิต แยกจากตัวควบคุมอัปโหลดของแต่ละแอป</p><p>เวิร์กโฟลว์ภาพบุคคลของผู้ผลิตต้องเตรียมภาพหรือวิดีโอที่มีใบหน้าคนจริงเป็นพิเศษ การอัปโหลดสื่ออ้างอิงโดยตรงไม่ใช่เส้นทางมาตรฐานที่รองรับ เอกสารแยกผลลัพธ์โมเดลที่เชื่อถือได้ ตัวละครดิจิทัลที่ตั้งไว้ และเวิร์กโฟลว์สินทรัพย์บุคคลจริงที่ได้รับอนุญาตเป็นคนละวิธี ต้องตรวจการตรงกันของเสียง การออกเสียง และเสียงที่ขอบคลิปด้วย คู่มือพรอมป์ต์แนะนำให้บรรยายลักษณะเสียงที่ต้องการและใช้สไตล์บทสนทนาใกล้เคียงเสียงอ้างอิง ตรวจผลลัพธ์เรื่องความสม่ำเสมอของตัวแบบ ถ้อยคำที่พูด จังหวะการกระทำ รอยต่อเฟรม และเสียงตอนจบ แล้วปรับเฉพาะส่วนที่ต่างจากบรีฟ</p>",
  "aboutText": "Seedance 2.0 Mini เป็นโมเดลชื่อแยกในตระกูลภาพพร้อมเสียง Seedance 2.0 ของ ByteDance ผู้ผลิตระบุการสร้างวิดีโอจากข้อความ จากภาพเฟรมแรก จากภาพเฟรมแรกและสุดท้าย การสร้างด้วยสื่ออ้างอิงหลายรูปแบบ การแก้ไข และการต่อวิดีโอ สร้างเสียงร่วมกับภาพได้ เลือกโหมดตามสิ่งที่มีอยู่ ได้แก่ บรีฟข้อความ ภาพเปิดที่กำหนดไว้ ภาพสองปลายทาง หรือคลิปที่ต้องแก้หรือต่อ\n\nMini มีข้อกำหนดเอาต์พุตของตนเอง ผู้ผลิตระบุวิดีโอ 480p และ 720p สี 8 บิต 24 เฟรมต่อวินาที และ MP4 อัตราส่วนที่รองรับคือ 21:9, 16:9, 4:3, 1:1, 3:4 และ 9:16 ระยะเวลาที่ระบุคือ 4–15 วินาที และเลือกความยาวอัตโนมัติภายในช่วงนี้ได้ ตัวเลือก 1080p และ 4K ของ Seedance 2.0 รุ่นเต็มเป็นของอีกโมเดล ไม่ใช่การตั้งค่า Mini ตารางความสามารถของตระกูลระบุการส่งคืนเฟรมสุดท้ายที่สร้าง แต่ไม่รองรับโหมด Draft\n\nOmni reference สร้างฉากใหม่โดยเลือกข้อมูลจากสื่อที่ให้ ภาพกำหนดรูปลักษณ์ตัวแบบ องค์ประกอบ หรือแนวภาพ วิดีโอกำหนดการกระทำ กล้อง หรือเอฟเฟกต์ เสียงกำหนดเนื้อเสียง ทำนอง หรือถ้อยคำ บอกว่าจะนำอะไรจากแต่ละแหล่งมาใช้ แทนการให้คัดลอกทุกคุณสมบัติ เช่น ใช้ภาพสินค้าสำหรับรูปทรงและสี คลิปกล้องสั้นสำหรับแนวเข้าหา และเสียงอ้างอิงสำหรับบรรยากาศ\n\nเวิร์กโฟลว์ตระกูลนี้ใช้ภาพอ้างอิงได้สูงสุดเก้าภาพ วิดีโอสามคลิป และเสียงสามคลิป วิดีโอแต่ละคลิปยาว 2–15 วินาที และรวมไม่เกิน 15 วินาที เสียงใช้ขีดจำกัดต่อคลิปและรวมเช่นเดียวกัน ไม่รองรับเสียงอย่างเดียวหรือข้อความร่วมกับเสียงโดยไม่มีภาพอ้างอิง การสร้างจากข้อความอย่างเดียวเป็นอีกโหมดที่รองรับ สำหรับงานเป็นลำดับ ให้ส่งสื่อตามลำดับที่ต้องการและอ้างเป็น Image 1, Video 1 หรือ Audio 1 อย่างสม่ำเสมอ โดยนับแยกตามประเภทสื่อ อย่าใช้รหัสสินทรัพย์แทนหมายเลขอ้างอิงในพรอมป์ต์\n\nภาพเฟรมแรกกำหนดตอนเปิดของช็อตที่นำด้วยภาพ ส่วนโหมดเฟรมแรกและสุดท้ายกำหนดทั้งสองขอบเขต หากภาพขอบเขตที่แน่นอนสำคัญ ให้ใช้โหมดเฉพาะ แทนการบรรยายว่าภาพอ้างอิงเป็นตอนเปิดและจบในพรอมป์ต์ omni-reference วิธีหลังเป็นผลที่กำกับด้วยข้อความ ไม่เท่ากับการเลือกเฟรมขอบเขตแบบเคร่งครัด เตรียมภาพให้ตรงองค์ประกอบเอาต์พุตและระบุการกระทำที่เชื่อมสถานการณ์เริ่มกับจบ\n\nการแก้วิดีโอปรับคลิปเดิม แทนการใช้เป็นแรงบันดาลใจเท่านั้น ระบุวิดีโอ วัตถุหรือบริเวณที่จะเปลี่ยน เวลาที่ปรากฏ ตำแหน่ง และสิ่งที่จะรักษา ตัวอย่างบรีฟที่ใช้ได้คือ “ใน Video 1 เปลี่ยนแก้วมัคเป็นภาชนะใน Image 1 โดยรักษาการเคลื่อนไหวมือ กรอบภาพ แสง และการจัดโต๊ะ” สำหรับการลบ ให้ระบุวัตถุที่ไม่ต้องการและสิ่งรอบข้างที่ต้องคงไว้ ผู้ผลิตแนะนำให้เรียกวิดีโอเป้าหมายโดยตรงเมื่อต้องแก้หรือต่อ การเรียกว่าเป็นสื่ออ้างอิงอาจสื่อว่าต้องการฉากใหม่แทน\n\nการต่อวิดีโอเพิ่มเหตุการณ์ก่อนหรือหลังคลิปเดิม ระบุทิศทางและสิ่งที่จะเกิดถัดไปหรือก่อนหน้า เวิร์กโฟลว์ที่ระบุยังเชื่อมสองหรือสามคลิปด้วยช่วงเปลี่ยนที่สร้างขึ้นได้ โดยวิดีโออินพุตทั้งสามรวมกันยังต้องอยู่ภายในขีดจำกัดอ้างอิง 15 วินาที บทสอนแยกการต่อที่เน้นฟุตเทจบริเวณขอบคลิปเดิมออกจากคำขอที่ระบุให้คงเนื้อหาเดิมทั้งหมด ระบุผลลัพธ์ที่ต้องการให้ชัดว่าเอาเฉพาะส่วนต่อ หรือฉากที่มีทั้งคลิปต้นฉบับและการกระทำใหม่\n\nเพื่อกำกับให้ชัด ให้แยกคำอธิบายฉากคงที่ออกจากลำดับเหตุการณ์ กำหนดตัวแบบแต่ละรายด้วยลักษณะเด่นสองหรือสามอย่างและป้ายชื่อที่สม่ำเสมอ แล้วบรรยายการกระทำ สถานที่ แสง กล้อง สไตล์ และเงื่อนไข สำหรับบทสนทนา ผูกแต่ละประโยคกับผู้พูดและการกระทำ ใช้ชื่อช็อตตามลำดับแทนการถือว่าเวลาที่แน่นอนเป็นตัวควบคุมที่เชื่อถือได้ เพราะผู้ผลิตระบุว่าจังหวะละเอียดอาจไม่นิ่ง ตัวอย่างบรีฟสินค้าที่แบ่งช่วงคือ “Image 1 กำหนดสินค้า A ช็อต 1: เคลื่อนเข้าหาสินค้า A บนเคาน์เตอร์ช้า ๆ ช็อต 2: มือหมุนสินค้าเข้าหาแสง ช็อต 3: หยุดที่ฉลากด้านหน้า ใช้เสียงบรรยากาศห้องเบา ๆ และรักษาตัวอักษรที่พิมพ์ไว้”\n\nเตรียมสื่อตามกฎอินพุตของตระกูล รูปแบบภาพที่รองรับคือ JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC และ HEIF แต่ละภาพต้องเล็กกว่า 30 MB คู่มือกำหนดความกว้างและสูงมากกว่า 300 แต่น้อยกว่า 6,000 พิกเซล และอัตราส่วนมากกว่า 0.4 แต่น้อยกว่า 2.5 วิดีโออ้างอิงใช้ MP4 หรือ MOV พร้อมวิดีโอ H.264 หรือ H.265 และเสียง AAC หรือ MP3 ขนาดไม่เกิน 200 MB ต่อคลิป ที่ 24–60 เฟรมต่อวินาที ความกว้างและสูง 300–6,000 พิกเซล อัตราส่วน 0.4–2.5 และพื้นที่ภาพรวม 407,696–8,295,044 พิกเซล เสียงใช้ WAV หรือ MP3 ไม่เกิน 15 MB ต่อคลิป เหล่านี้เป็นข้อกำหนดเตรียมอินพุตของผู้ผลิต แยกจากตัวควบคุมอัปโหลดของแต่ละแอป\n\nเวิร์กโฟลว์ภาพบุคคลของผู้ผลิตต้องเตรียมภาพหรือวิดีโอที่มีใบหน้าคนจริงเป็นพิเศษ การอัปโหลดสื่ออ้างอิงโดยตรงไม่ใช่เส้นทางมาตรฐานที่รองรับ เอกสารแยกผลลัพธ์โมเดลที่เชื่อถือได้ ตัวละครดิจิทัลที่ตั้งไว้ และเวิร์กโฟลว์สินทรัพย์บุคคลจริงที่ได้รับอนุญาตเป็นคนละวิธี ต้องตรวจการตรงกันของเสียง การออกเสียง และเสียงที่ขอบคลิปด้วย คู่มือพรอมป์ต์แนะนำให้บรรยายลักษณะเสียงที่ต้องการและใช้สไตล์บทสนทนาใกล้เคียงเสียงอ้างอิง ตรวจผลลัพธ์เรื่องความสม่ำเสมอของตัวแบบ ถ้อยคำที่พูด จังหวะการกระทำ รอยต่อเฟรม และเสียงตอนจบ แล้วปรับเฉพาะส่วนที่ต่างจากบรีฟ",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "f7ac78de2ccca58efbbbebbaab30a4f0ba5a91337ffd69790a539750477f60fd",
    "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\">ByteDance: Seedance 2.0 Mini</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>ByteDance /</span><code>bytedance/seedance-2.0-mini</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|bytedance%2Fseedance-2.0-mini\">วิดีโอ</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\">Seedance 2.0 Mini สร้างวิดีโอสั้นจากข้อความและสื่ออ้างอิงภาพ วิดีโอ และเสียง พร้อมเลือกสร้างเสียงได้ รองรับการสร้างฉาก การแก้วิดีโอเฉพาะจุด และการต่อคลิป โดยเอกสารระบุเอาต์พุต 480p หรือ 720p</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>Seedance 2.0 Mini เป็นโมเดลชื่อแยกในตระกูลภาพพร้อมเสียง Seedance 2.0 ของ ByteDance ผู้ผลิตระบุการสร้างวิดีโอจากข้อความ จากภาพเฟรมแรก จากภาพเฟรมแรกและสุดท้าย การสร้างด้วยสื่ออ้างอิงหลายรูปแบบ การแก้ไข และการต่อวิดีโอ สร้างเสียงร่วมกับภาพได้ เลือกโหมดตามสิ่งที่มีอยู่ ได้แก่ บรีฟข้อความ ภาพเปิดที่กำหนดไว้ ภาพสองปลายทาง หรือคลิปที่ต้องแก้หรือต่อ</p><p>Mini มีข้อกำหนดเอาต์พุตของตนเอง ผู้ผลิตระบุวิดีโอ 480p และ 720p สี 8 บิต 24 เฟรมต่อวินาที และ MP4 อัตราส่วนที่รองรับคือ 21:9, 16:9, 4:3, 1:1, 3:4 และ 9:16 ระยะเวลาที่ระบุคือ 4–15 วินาที และเลือกความยาวอัตโนมัติภายในช่วงนี้ได้ ตัวเลือก 1080p และ 4K ของ Seedance 2.0 รุ่นเต็มเป็นของอีกโมเดล ไม่ใช่การตั้งค่า Mini ตารางความสามารถของตระกูลระบุการส่งคืนเฟรมสุดท้ายที่สร้าง แต่ไม่รองรับโหมด Draft</p><p>Omni reference สร้างฉากใหม่โดยเลือกข้อมูลจากสื่อที่ให้ ภาพกำหนดรูปลักษณ์ตัวแบบ องค์ประกอบ หรือแนวภาพ วิดีโอกำหนดการกระทำ กล้อง หรือเอฟเฟกต์ เสียงกำหนดเนื้อเสียง ทำนอง หรือถ้อยคำ บอกว่าจะนำอะไรจากแต่ละแหล่งมาใช้ แทนการให้คัดลอกทุกคุณสมบัติ เช่น ใช้ภาพสินค้าสำหรับรูปทรงและสี คลิปกล้องสั้นสำหรับแนวเข้าหา และเสียงอ้างอิงสำหรับบรรยากาศ</p><p>เวิร์กโฟลว์ตระกูลนี้ใช้ภาพอ้างอิงได้สูงสุดเก้าภาพ วิดีโอสามคลิป และเสียงสามคลิป วิดีโอแต่ละคลิปยาว 2–15 วินาที และรวมไม่เกิน 15 วินาที เสียงใช้ขีดจำกัดต่อคลิปและรวมเช่นเดียวกัน ไม่รองรับเสียงอย่างเดียวหรือข้อความร่วมกับเสียงโดยไม่มีภาพอ้างอิง การสร้างจากข้อความอย่างเดียวเป็นอีกโหมดที่รองรับ สำหรับงานเป็นลำดับ ให้ส่งสื่อตามลำดับที่ต้องการและอ้างเป็น Image 1, Video 1 หรือ Audio 1 อย่างสม่ำเสมอ โดยนับแยกตามประเภทสื่อ อย่าใช้รหัสสินทรัพย์แทนหมายเลขอ้างอิงในพรอมป์ต์</p><p>ภาพเฟรมแรกกำหนดตอนเปิดของช็อตที่นำด้วยภาพ ส่วนโหมดเฟรมแรกและสุดท้ายกำหนดทั้งสองขอบเขต หากภาพขอบเขตที่แน่นอนสำคัญ ให้ใช้โหมดเฉพาะ แทนการบรรยายว่าภาพอ้างอิงเป็นตอนเปิดและจบในพรอมป์ต์ omni-reference วิธีหลังเป็นผลที่กำกับด้วยข้อความ ไม่เท่ากับการเลือกเฟรมขอบเขตแบบเคร่งครัด เตรียมภาพให้ตรงองค์ประกอบเอาต์พุตและระบุการกระทำที่เชื่อมสถานการณ์เริ่มกับจบ</p><p>การแก้วิดีโอปรับคลิปเดิม แทนการใช้เป็นแรงบันดาลใจเท่านั้น ระบุวิดีโอ วัตถุหรือบริเวณที่จะเปลี่ยน เวลาที่ปรากฏ ตำแหน่ง และสิ่งที่จะรักษา ตัวอย่างบรีฟที่ใช้ได้คือ “ใน Video 1 เปลี่ยนแก้วมัคเป็นภาชนะใน Image 1 โดยรักษาการเคลื่อนไหวมือ กรอบภาพ แสง และการจัดโต๊ะ” สำหรับการลบ ให้ระบุวัตถุที่ไม่ต้องการและสิ่งรอบข้างที่ต้องคงไว้ ผู้ผลิตแนะนำให้เรียกวิดีโอเป้าหมายโดยตรงเมื่อต้องแก้หรือต่อ การเรียกว่าเป็นสื่ออ้างอิงอาจสื่อว่าต้องการฉากใหม่แทน</p><p>การต่อวิดีโอเพิ่มเหตุการณ์ก่อนหรือหลังคลิปเดิม ระบุทิศทางและสิ่งที่จะเกิดถัดไปหรือก่อนหน้า เวิร์กโฟลว์ที่ระบุยังเชื่อมสองหรือสามคลิปด้วยช่วงเปลี่ยนที่สร้างขึ้นได้ โดยวิดีโออินพุตทั้งสามรวมกันยังต้องอยู่ภายในขีดจำกัดอ้างอิง 15 วินาที บทสอนแยกการต่อที่เน้นฟุตเทจบริเวณขอบคลิปเดิมออกจากคำขอที่ระบุให้คงเนื้อหาเดิมทั้งหมด ระบุผลลัพธ์ที่ต้องการให้ชัดว่าเอาเฉพาะส่วนต่อ หรือฉากที่มีทั้งคลิปต้นฉบับและการกระทำใหม่</p><p>เพื่อกำกับให้ชัด ให้แยกคำอธิบายฉากคงที่ออกจากลำดับเหตุการณ์ กำหนดตัวแบบแต่ละรายด้วยลักษณะเด่นสองหรือสามอย่างและป้ายชื่อที่สม่ำเสมอ แล้วบรรยายการกระทำ สถานที่ แสง กล้อง สไตล์ และเงื่อนไข สำหรับบทสนทนา ผูกแต่ละประโยคกับผู้พูดและการกระทำ ใช้ชื่อช็อตตามลำดับแทนการถือว่าเวลาที่แน่นอนเป็นตัวควบคุมที่เชื่อถือได้ เพราะผู้ผลิตระบุว่าจังหวะละเอียดอาจไม่นิ่ง ตัวอย่างบรีฟสินค้าที่แบ่งช่วงคือ “Image 1 กำหนดสินค้า A ช็อต 1: เคลื่อนเข้าหาสินค้า A บนเคาน์เตอร์ช้า ๆ ช็อต 2: มือหมุนสินค้าเข้าหาแสง ช็อต 3: หยุดที่ฉลากด้านหน้า ใช้เสียงบรรยากาศห้องเบา ๆ และรักษาตัวอักษรที่พิมพ์ไว้”</p><p>เตรียมสื่อตามกฎอินพุตของตระกูล รูปแบบภาพที่รองรับคือ JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC และ HEIF แต่ละภาพต้องเล็กกว่า 30 MB คู่มือกำหนดความกว้างและสูงมากกว่า 300 แต่น้อยกว่า 6,000 พิกเซล และอัตราส่วนมากกว่า 0.4 แต่น้อยกว่า 2.5 วิดีโออ้างอิงใช้ MP4 หรือ MOV พร้อมวิดีโอ H.264 หรือ H.265 และเสียง AAC หรือ MP3 ขนาดไม่เกิน 200 MB ต่อคลิป ที่ 24–60 เฟรมต่อวินาที ความกว้างและสูง 300–6,000 พิกเซล อัตราส่วน 0.4–2.5 และพื้นที่ภาพรวม 407,696–8,295,044 พิกเซล เสียงใช้ WAV หรือ MP3 ไม่เกิน 15 MB ต่อคลิป เหล่านี้เป็นข้อกำหนดเตรียมอินพุตของผู้ผลิต แยกจากตัวควบคุมอัปโหลดของแต่ละแอป</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></dd></div><div><dt>ขาออก</dt><dd><code>video</code></dd></div><div><dt>รูปแบบเอาต์พุต</dt><dd>ไบต์ MP4 ต้นฉบับ; ไม่ปรับมาตรฐานหรือแปลงรหัส</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 data-parameter-availability=\"source_interface\"><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>bytedance/seedance-2.0-mini</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">prompt</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></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">duration</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>4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15</div><div>ขั้นต่ำ: 1</div><div>สูงสุด: 600</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">resolution</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>480p, 720p</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">aspect_ratio</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>1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>boolean</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>false, true</div><div>เงื่อนไข: การไม่ระบุ generate_audio จะเลือกราคาที่เปิดใช้เสียง ส่วน false จะเลือกราคาที่ไม่มีเสียง ตรวจสอบ has_audio ในผลลัพธ์เพื่อดูว่ามีการส่งแทร็กเสียงกลับหรือไม่</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">frame_images</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>จำนวนรายการสูงสุด: 2</div><div>เนื้อหาอินพุต: อาร์เรย์ของออบเจ็กต์เฟรม แต่ละรายการมี type=image_url, image_url ซึ่งมี url และ frame_type=first_frame หรือ last_frame แต่ละบทบาทปรากฏได้ไม่เกินหนึ่งครั้ง ใช้ URL แบบ HTTPS สาธารณะ</div><div>ชื่อคีย์ที่แน่นอน: type, image_url, frame_type</div><div>เงื่อนไข: คีย์เหล่านี้ใช้กับออบเจ็กต์เฟรมแต่ละรายการ ไม่ต้องระบุ frame_images สำหรับคำขอที่มีเฉพาะข้อความ</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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>เนื้อหาอินพุต: อาร์เรย์ของออบเจ็กต์อ้างอิงภาพหรือเสียง กำหนด type เป็น image_url หรือ audio_url และระบุออบเจ็กต์ URL ที่ตรงกันซึ่งมี url ข้อมูลอ้างอิงวิดีโอยังไม่สามารถคิดราคาได้</div><div>เงื่อนไข: ไม่ต้องระบุ frame_images เพื่อใช้โหมดอ้างอิง ใช้ URL แบบ HTTPS สาธารณะ</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">size</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>480x480, 480x640, 480x854, 640x480, 854x480, 1120x480, 720x720, 720x960, 720x1280, 720x1680, 960x720, 1280x720, 1680x720</div><div>แพตเทิร์น: ^[1-9][0-9]*x[1-9][0-9]*$</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">seed</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>ขั้นต่ำ: -9,223,372,036,854,775,808</div><div>สูงสุด: 9,223,372,036,854,775,807</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">callback_url</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>แพตเทิร์น: ^https://</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">session_id</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></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>object</code></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=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">user</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></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>ชุดผสมของสื่ออินพุต</summary><p class=\"note-s\"><b>สร้างวิดีโอจากข้อความ</b> · พรอมป์ต์ข้อความ · จำเป็น: model, prompt, duration</p><p class=\"note-s\"><code>ระบุพรอมป์ต์ข้อความและระยะเวลาเป็นวินาทีเต็มที่รองรับ ใช้ขนาดที่ตรงตามรายการ หรือความละเอียดและอัตราส่วนภาพที่ให้มิติตรงตามรายการ</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: ประเภท: string · bytedance/seedance-2.0-mini</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: ประเภท: string · จำนวนไบต์ UTF-8 สูงสุด: 10,000 · ต้องมีอักขระที่ไม่ใช่ช่องว่าง: ใช่</p><p class=\"note-s\"><b>สร้างวิดีโอจากภาพ</b> · พรอมป์ต์ข้อความและภาพเฟรม · จำเป็น: model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images เป็นอาร์เรย์ของออบเจ็กต์ที่มี type=image_url, image_url ซึ่งมี url และ frame_type ใช้ URL ภาพ HTTPS สาธารณะ first_frame และ last_frame ปรากฏได้อย่างละหนึ่งครั้ง ใช้ขนาดผลลัพธ์ที่ระบุไว้หรือมิติที่เข้ากันได้ อย่าเพิ่มข้อมูลอ้างอิงวิดีโอ</code></p><p class=\"note-s\">ชื่อคีย์ที่แน่นอน: type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: ประเภท: string · bytedance/seedance-2.0-mini</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: ประเภท: string · จำนวนไบต์ UTF-8 สูงสุด: 10,000 · ต้องมีอักขระที่ไม่ใช่ช่องว่าง: ใช่</p><p class=\"note-s\"><b>Reference to video</b> · พรอมป์ต์ข้อความและข้อมูลอ้างอิงภาพหรือเสียง · จำเป็น: model, prompt, duration, input_references</p><p class=\"note-s\"><code>input_references เป็นอาร์เรย์ แต่ละออบเจ็กต์มี type=image_url หรือ type=audio_url และออบเจ็กต์ URL ที่ตรงกันซึ่งมี url ใช้ลิงก์ HTTPS สาธารณะ ไม่ต้องระบุ frame_images เพื่อเลือกโหมดอ้างอิง ไม่สามารถคิดราคาข้อมูลอ้างอิงวิดีโอได้</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: ประเภท: string · bytedance/seedance-2.0-mini</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: ประเภท: string · จำนวนไบต์ UTF-8 สูงสุด: 10,000 · ต้องมีอักขระที่ไม่ใช่ช่องว่าง: ใช่</p></details><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, prompt, duration</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</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>additional_properties</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>false</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>optional_controls</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>resolution, aspect_ratio, generate_audio, frame_images, input_references, size, seed, callback_url, session_id, trace, user</td></tr></tbody></table></div><p>วงจรการทำงาน: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_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></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><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>ต่อ 1K โทเค็นวิดีโอ</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.007</b> <span class=\"price-unit\">ต่อ 1K โทเค็นวิดีโอ</span></div><p class=\"note-s\">อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม</p></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>ต่อ 1K โทเค็นวิดีโอ</td><td data-cell-label=\"เงื่อนไขคิดค่าบริการ\"><span class=\"card-cell-label\">เงื่อนไขคิดค่าบริการ</span>ข้อมูลขาเข้า: with_video_input</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>reference · ราคาโทเคนวิดีโอ · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>$0.0042</b> <span class=\"price-unit\">ต่อ 1K โทเค็นวิดีโอ</span></div><p class=\"note-s\">อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม</p></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>ต่อ 1K โทเค็นวิดีโอ</td><td data-cell-label=\"เงื่อนไขคิดค่าบริการ\"><span class=\"card-cell-label\">เงื่อนไขคิดค่าบริการ</span>เสียง: without_audio</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาออก · ราคาโทเคนวิดีโอ · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>$0.007</b> <span class=\"price-unit\">ต่อ 1K โทเค็นวิดีโอ</span></div><p class=\"note-s\">อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม</p></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><div><span>ขาออก · ค่าใช้จ่ายในการสร้างโดยประมาณ · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>$0.1512</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><div data-declared-reference-pricing><h4>รายละเอียดอัตราอ้างอิง</h4><p class=\"note-s\">ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>ข้อมูลอ้างอิงราคาตามการตั้งค่าวิดีโอ</summary><h4>ราคาตามการตั้งค่า</h4><p class=\"note-s\">เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><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><div><span>ขาออก · ราคาโทเคนวิดีโอ</span> <b>$0.007</b> <span class=\"price-unit\">ต่อ 1K โทเค็นวิดีโอ</span></div><p class=\"note-s\">อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม</p></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>เสียง: without_audio</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาออก · ราคาโทเคนวิดีโอ</span> <b>$0.007</b> <span class=\"price-unit\">ต่อ 1K โทเค็นวิดีโอ</span></div><p class=\"note-s\">อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม</p></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>ข้อมูลขาเข้า: with_video_input</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>reference · ราคาโทเคนวิดีโอ</span> <b>$0.0042</b> <span class=\"price-unit\">ต่อ 1K โทเค็นวิดีโอ</span></div><p class=\"note-s\">อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม</p></td></tr></tbody></table></div></details></div></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-1137-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1137-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · สร้างวิดีโอ</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-1137-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1137-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nfrom pathlib import Path\nPath(&#39;request.json&#39;).write_text(&#39;{&quot;model&quot;:&quot;bytedance/seedance-2.0-mini&quot;,&quot;prompt&quot;:&quot;A serene mountain landscape at sunset&quot;,&quot;duration&quot;:4,&quot;resolution&quot;:&quot;480p&quot;,&quot;size&quot;:&quot;480x480&quot;,&quot;generate_audio&quot;:false}&#39;, 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 result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">รับและบันทึกผลลัพธ์</h3><h4>Ailoot Ultra · วิดีโอ</h4><p class=\"note-s\">URL เนื้อหาที่ลงลายเซ็นและเป็นของคุณ</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{public_id}</code></li><li><code>GET /v1/videos/{public_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-1138-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1138-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-1138-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1138-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_STATUS_URL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nif not isinstance(r.get(&#39;id&#39;),str) or not r[&#39;id&#39;]:raise SystemExit(&#39;Keep the original response and headers for reconciliation; no returned ID&#39;)\nPath(&#39;status-url.txt&#39;).write_text(&#39;https://api.ailoot.ai/v1/videos/&#39;+quote(r[&#39;id&#39;],safe=&#39;&#39;))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error &quot;$(cat status-url.txt)&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div><details class=\"card-about\"><summary>การอ่านเนื้อหาแบบอื่น</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"ตัวเลือกโค้ด\"><button class=\"cg-tab\" id=\"model-code-1139-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1139-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-1139-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1139-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nif r.get(&#39;status&#39;)!=&#39;completed&#39;:raise SystemExit(&#39;Keep the original ID and read its status; never recreate an unknown job&#39;)\nif not isinstance(r.get(&#39;data&#39;),list) or not r[&#39;data&#39;]:raise SystemExit(&#39;Keep the complete original status; no completed outputs supplied&#39;)\nurls=[]\nfor i,u in enumerate(r.get(&#39;data&#39;,[])):\n    if not isinstance(u,str):raise SystemExit(&#39;Keep the original response; unexpected asset shape&#39;)\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div></div></div></details><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\">503 result_pending_check + id เดิม + X-Should-Retry:false ห้ามส่งคำขอเดิมซ้ำ</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><th>ความหมาย</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">index</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>integer</td><td data-cell-label=\"ความหมาย\"><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\">content_url</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>string</td><td data-cell-label=\"ความหมาย\"><span class=\"card-cell-label\">ความหมาย</span>URL ดาวน์โหลด HTTPS ที่ลงลายเซ็นสำหรับวิดีโอที่เสร็จสมบูรณ์นี้</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">sha256</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>string | null</td><td data-cell-label=\"ความหมาย\"><span class=\"card-cell-label\">ความหมาย</span>ค่าแฮช SHA-256 ของไบต์วิดีโอต้นฉบับ เป็น null หากไม่มีข้อมูล</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">size_bytes</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>integer | null</td><td data-cell-label=\"ความหมาย\"><span class=\"card-cell-label\">ความหมาย</span>ขนาดไฟล์วิดีโอต้นฉบับเป็นไบต์ เป็น null หากไม่มีข้อมูล</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">duration_ms</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>integer | null</td><td data-cell-label=\"ความหมาย\"><span class=\"card-cell-label\">ความหมาย</span>ระยะเวลาวิดีโอที่วัดได้เป็นมิลลิวินาที เป็น null หากไม่มีข้อมูล</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>integer | null</td><td data-cell-label=\"ความหมาย\"><span class=\"card-cell-label\">ความหมาย</span>ความกว้างวิดีโอเป็นพิกเซล เป็น null หากไม่มีข้อมูล</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>integer | null</td><td data-cell-label=\"ความหมาย\"><span class=\"card-cell-label\">ความหมาย</span>ความสูงวิดีโอเป็นพิกเซล เป็น null หากไม่มีข้อมูล</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">video_codec</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>string | null</td><td data-cell-label=\"ความหมาย\"><span class=\"card-cell-label\">ความหมาย</span>ตัวระบุตัวแปลงสัญญาณวิดีโอ เป็น null หากไม่ได้บันทึกไว้</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">has_audio</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>boolean | null</td><td data-cell-label=\"ความหมาย\"><span class=\"card-cell-label\">ความหมาย</span>ระบุว่าวิดีโอมีแทร็กเสียงหรือไม่ เป็น null หากไม่ได้วัด</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">audio_codec</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>string | null</td><td data-cell-label=\"ความหมาย\"><span class=\"card-cell-label\">ความหมาย</span>ตัวระบุตัวแปลงสัญญาณเสียง เป็น null เมื่อไม่มีการบันทึกตัวระบุ</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>ข้อผิดพลาดและขั้นตอนถัดไป</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>การตอบกลับ</th><th>เงื่อนไข</th><th>ขั้นตอนถัดไป</th></tr></thead><tbody><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>404 · <code>not_found_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>ไม่สามารถเข้าถึงวิดีโอ หรือไม่พบ ID วิดีโอนี้</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>ตรวจสอบสิทธิ์เข้าถึงวิดีโอ สำหรับวิดีโอที่มีอยู่ ให้ใช้ ID สาธารณะเดิมและคีย์ API เดิม</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>401 · <code>authentication_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>คีย์ API ไม่ตรงกับบัญชีที่ยืนยันตัวตน</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>ตรวจสอบคีย์ API และสิทธิ์เข้าถึงบัญชีของคุณก่อนส่ง</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>ไม่สามารถอ่านคำขอ หรือดัชนีดาวน์โหลดไม่ถูกต้อง</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>แก้ไขเนื้อหาคำขอ สำหรับการดาวน์โหลด ให้เลือกดัชนีผลลัพธ์ที่งานเดิมส่งกลับ</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>ไม่สามารถคิดราคาการตั้งค่าวิดีโอที่เลือกได้</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>เลือกการตั้งค่าวิดีโอที่รองรับและระบุตัวเลือกที่จำเป็นให้ครบก่อนส่งคำขอที่แก้ไขแล้ว</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>ข้อมูลขาเข้าวิดีโอหรืองานต้นฉบับสำหรับการต่อเนื่องไม่ถูกต้อง</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>ใช้ข้อมูลขาเข้า HTTPS ที่ถูกต้อง สำหรับการต่อเนื่อง ให้ใช้ ID วิดีโอสาธารณะเดิมที่เสร็จสมบูรณ์ของคุณพร้อมคีย์ API เดิม</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>402 · <code>billing_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>ยอดคงเหลือหรือขีดจำกัดที่ใช้ได้ไม่เพียงพอสำหรับการกันวงเงิน</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>ตรวจสอบยอดคงเหลือและขีดจำกัดที่ใช้ได้ก่อนส่งคำขอใหม่</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>503 · <code>server_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>การตรวจสอบวิดีโอ ที่เก็บข้อมูล หรือการเข้าถึงบริการไม่พร้อมใช้งานชั่วคราว</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>รอให้บริการพร้อมใช้งาน หากมี ID วิดีโอแล้ว ให้ตรวจสอบงานเดิมนั้นแทนการสร้างวิดีโออีกครั้ง</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>ต้องตรวจสอบผลลัพธ์วิดีโอเดิมและยอดเรียกเก็บ</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>เก็บ ID วิดีโอที่ส่งกลับและตรวจสอบงานนั้น อย่าส่งคำขอสร้างทดแทนระหว่างที่กำลังตรวจสอบ</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>การดาวน์โหลดวิดีโอที่มีอยู่ไม่พร้อมใช้งานชั่วคราว</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>ตรวจสอบงานวิดีโอเดิมในภายหลังและดาวน์โหลดผลลัพธ์ที่มีอยู่ การสร้างใหม่จะสร้างการดำเนินการแยกต่างหาก</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>เนื้อหาวิดีโอยังไม่เผยแพร่</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>ตรวจสอบสถานะงานเดิม ดาวน์โหลดหลังรายงาน completed หากรายงาน failed ให้ทำตามข้อความแจ้งตรวจสอบยอดเรียกเก็บ</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=bytedance%2Fseedance-2.0-mini&amp;route=Ultra&amp;caller=bytedance%2Fseedance-2.0-mini&amp;fmt=videos\"><code>bytedance/seedance-2.0-mini</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=bytedance%2Fseedance-2.0-mini&amp;route=Ultra&amp;caller=bytedance%2Fseedance-2.0-mini&amp;fmt=videos\"><code>bytedance/seedance-2.0-mini</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "bytedance/seedance-2.0-mini",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "bytedance/seedance-2.0-mini",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|bytedance%2Fseedance-2.0-mini",
      "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": "เก็บผลลัพธ์จริงที่เป็นของคุณทุกรายการ พร้อมเมทาดาทาที่วัดได้ซึ่งส่งกลับมา",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "ไม่สามารถเข้าถึงวิดีโอ หรือไม่พบ ID วิดีโอนี้",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "ตรวจสอบสิทธิ์เข้าถึงวิดีโอ สำหรับวิดีโอที่มีอยู่ ให้ใช้ ID สาธารณะเดิมและคีย์ API เดิม",
                "type": "not_found_error"
              },
              {
                "condition": "คีย์ API ไม่ตรงกับบัญชีที่ยืนยันตัวตน",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "ตรวจสอบคีย์ API และสิทธิ์เข้าถึงบัญชีของคุณก่อนส่ง",
                "type": "authentication_error"
              },
              {
                "condition": "ไม่สามารถอ่านคำขอ หรือดัชนีดาวน์โหลดไม่ถูกต้อง",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "แก้ไขเนื้อหาคำขอ สำหรับการดาวน์โหลด ให้เลือกดัชนีผลลัพธ์ที่งานเดิมส่งกลับ",
                "type": "invalid_request_error"
              },
              {
                "condition": "ไม่สามารถคิดราคาการตั้งค่าวิดีโอที่เลือกได้",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "เลือกการตั้งค่าวิดีโอที่รองรับและระบุตัวเลือกที่จำเป็นให้ครบก่อนส่งคำขอที่แก้ไขแล้ว",
                "type": "price_unavailable"
              },
              {
                "condition": "ข้อมูลขาเข้าวิดีโอหรืองานต้นฉบับสำหรับการต่อเนื่องไม่ถูกต้อง",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "ใช้ข้อมูลขาเข้า HTTPS ที่ถูกต้อง สำหรับการต่อเนื่อง ให้ใช้ ID วิดีโอสาธารณะเดิมที่เสร็จสมบูรณ์ของคุณพร้อมคีย์ API เดิม",
                "type": "invalid_request_error"
              },
              {
                "condition": "ยอดคงเหลือหรือขีดจำกัดที่ใช้ได้ไม่เพียงพอสำหรับการกันวงเงิน",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "ตรวจสอบยอดคงเหลือและขีดจำกัดที่ใช้ได้ก่อนส่งคำขอใหม่",
                "type": "billing_error"
              },
              {
                "condition": "การตรวจสอบวิดีโอ ที่เก็บข้อมูล หรือการเข้าถึงบริการไม่พร้อมใช้งานชั่วคราว",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "รอให้บริการพร้อมใช้งาน หากมี ID วิดีโอแล้ว ให้ตรวจสอบงานเดิมนั้นแทนการสร้างวิดีโออีกครั้ง",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "ต้องตรวจสอบผลลัพธ์วิดีโอเดิมและยอดเรียกเก็บ",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "เก็บ ID วิดีโอที่ส่งกลับและตรวจสอบงานนั้น อย่าส่งคำขอสร้างทดแทนระหว่างที่กำลังตรวจสอบ",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "การดาวน์โหลดวิดีโอที่มีอยู่ไม่พร้อมใช้งานชั่วคราว",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "ตรวจสอบงานวิดีโอเดิมในภายหลังและดาวน์โหลดผลลัพธ์ที่มีอยู่ การสร้างใหม่จะสร้างการดำเนินการแยกต่างหาก",
                "type": "server_error"
              },
              {
                "condition": "เนื้อหาวิดีโอยังไม่เผยแพร่",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "ตรวจสอบสถานะงานเดิม ดาวน์โหลดหลังรายงาน completed หากรายงาน failed ให้ทำตามข้อความแจ้งตรวจสอบยอดเรียกเก็บ",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + id เดิม + X-Should-Retry:false ห้ามส่งคำขอเดิมซ้ำ"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0-mini"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "ระบุพรอมป์ต์ข้อความและระยะเวลาเป็นวินาทีเต็มที่รองรับ ใช้ขนาดที่ตรงตามรายการ หรือความละเอียดและอัตราส่วนภาพที่ให้มิติตรงตามรายการ",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "พรอมป์ต์ข้อความ"
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0-mini"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images เป็นอาร์เรย์ของออบเจ็กต์ที่มี type=image_url, image_url ซึ่งมี url และ frame_type ใช้ URL ภาพ HTTPS สาธารณะ first_frame และ last_frame ปรากฏได้อย่างละหนึ่งครั้ง ใช้ขนาดผลลัพธ์ที่ระบุไว้หรือมิติที่เข้ากันได้ อย่าเพิ่มข้อมูลอ้างอิงวิดีโอ",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "พรอมป์ต์ข้อความและภาพเฟรม"
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0-mini"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references เป็นอาร์เรย์ แต่ละออบเจ็กต์มี type=image_url หรือ type=audio_url และออบเจ็กต์ URL ที่ตรงกันซึ่งมี url ใช้ลิงก์ HTTPS สาธารณะ ไม่ต้องระบุ frame_images เพื่อเลือกโหมดอ้างอิง ไม่สามารถคิดราคาข้อมูลอ้างอิงวิดีโอได้",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "พรอมป์ต์ข้อความและข้อมูลอ้างอิงภาพหรือเสียง"
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "reference_to_video"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "ตำแหน่งของวิดีโอนี้ในรายการผลลัพธ์ โดยเริ่มนับจากศูนย์",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "URL ดาวน์โหลด HTTPS ที่ลงลายเซ็นสำหรับวิดีโอที่เสร็จสมบูรณ์นี้",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "ค่าแฮช SHA-256 ของไบต์วิดีโอต้นฉบับ เป็น null หากไม่มีข้อมูล",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "ขนาดไฟล์วิดีโอต้นฉบับเป็นไบต์ เป็น null หากไม่มีข้อมูล",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "ระยะเวลาวิดีโอที่วัดได้เป็นมิลลิวินาที เป็น null หากไม่มีข้อมูล",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "ความกว้างวิดีโอเป็นพิกเซล เป็น null หากไม่มีข้อมูล",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "ความสูงวิดีโอเป็นพิกเซล เป็น null หากไม่มีข้อมูล",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "ตัวระบุตัวแปลงสัญญาณวิดีโอ เป็น null หากไม่ได้บันทึกไว้",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "ระบุว่าวิดีโอมีแทร็กเสียงหรือไม่ เป็น null หากไม่ได้วัด",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "ตัวระบุตัวแปลงสัญญาณเสียง เป็น null เมื่อไม่มีการบันทึกตัวระบุ",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "URL เนื้อหาที่ลงลายเซ็นและเป็นของคุณ",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "bytedance/seedance-2.0-mini"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "bytedance/seedance-2.0-mini"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "1:1",
                  "3:4",
                  "9:16",
                  "4:3",
                  "16:9",
                  "21:9",
                  "9:21"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "การไม่ระบุ generate_audio จะเลือกราคาที่เปิดใช้เสียง ส่วน false จะเลือกราคาที่ไม่มีเสียง ตรวจสอบ has_audio ในผลลัพธ์เพื่อดูว่ามีการส่งแทร็กเสียงกลับหรือไม่",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "คีย์เหล่านี้ใช้กับออบเจ็กต์เฟรมแต่ละรายการ ไม่ต้องระบุ frame_images สำหรับคำขอที่มีเฉพาะข้อความ",
                "content": "อาร์เรย์ของออบเจ็กต์เฟรม แต่ละรายการมี type=image_url, image_url ซึ่งมี url และ frame_type=first_frame หรือ last_frame แต่ละบทบาทปรากฏได้ไม่เกินหนึ่งครั้ง ใช้ URL แบบ HTTPS สาธารณะ",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "ไม่ต้องระบุ frame_images เพื่อใช้โหมดอ้างอิง ใช้ URL แบบ HTTPS สาธารณะ",
                "content": "อาร์เรย์ของออบเจ็กต์อ้างอิงภาพหรือเสียง กำหนด type เป็น image_url หรือ audio_url และระบุออบเจ็กต์ URL ที่ตรงกันซึ่งมี url ข้อมูลอ้างอิงวิดีโอยังไม่สามารถคิดราคาได้",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480x480",
                  "480x640",
                  "480x854",
                  "640x480",
                  "854x480",
                  "1120x480",
                  "720x720",
                  "720x960",
                  "720x1280",
                  "720x1680",
                  "960x720",
                  "1280x720",
                  "1680x720"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "model": {
                  "const": "bytedance/seedance-2.0-mini"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Request geometry is required for the pre-generation estimate and reserve. Returned geometry and track time describe the generated output; final charge follows the actual billed configuration.",
                "Video references with *_with_video_input quantity are rejected; image/audio references only where model reference types admit them."
              ]
            },
            "unsupported": [
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "seed",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "reference_to_video"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "ราคาโทเคนวิดีโอ",
            "units": [
              {
                "amount": "0.007000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000007",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม",
            "dimensions": {
              "conditions": "ข้อมูลขาเข้า: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "ราคาโทเคนวิดีโอ",
            "units": [
              {
                "amount": "0.0042000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000042",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.007000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000007",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "ต้นทุนการสร้างโดยประมาณ",
            "units": [
              {
                "amount": "0.1512",
                "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.1512",
                "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}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"model\":\"bytedance/seedance-2.0-mini\",\"prompt\":\"A serene mountain landscape at sunset\",\"duration\":4,\"resolution\":\"480p\",\"size\":\"480x480\",\"generate_audio\":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 result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);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 returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.007000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000007",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0042000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000042",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.007000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000007",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.1512",
                "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.1512",
                "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": "bytedance/seedance-2.0-mini",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.007000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000007",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0042000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000042",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.007000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_without_audio",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000007",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.1512",
            "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.1512",
            "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": "bytedance/seedance-2.0-mini",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "176e94d132bec2e776f024431cb9914b685742a17346cf45b65133c2ac0e949a",
    "input_html_sha256": "a93236d00fe68fb52ea382d8dfbce11e8f278e32834fbf389bdfd5dd8db55617",
    "private_audit_sha256": "14a6c93779ee8ed18dc46d35d1c81ff9fd0f879457a28000df9e964c066e6f1e",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/bytedance-seedance-2-0-mini/",
    "description": "Seedance 2.0 Mini สร้างวิดีโอสั้นจากข้อความและสื่ออ้างอิงภาพ วิดีโอ และเสียง พร้อมเลือกสร้างเสียงได้ รองรับการสร้างฉาก การแก้วิดีโอเฉพาะจุด และการต่อคลิป โดยเอกสารระบุเอาต์พุต 480p หรือ 720p",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/bytedance-seedance-2-0-mini/index.md",
    "title": "ByteDance: Seedance 2.0 Mini — Ailoot",
    "url": "https://ailoot.ai/models/th/bytedance-seedance-2-0-mini/"
  },
  "rawModel": {
    "about": "Seedance 2.0 Mini เป็นโมเดลชื่อแยกในตระกูลภาพพร้อมเสียง Seedance 2.0 ของ ByteDance ผู้ผลิตระบุการสร้างวิดีโอจากข้อความ จากภาพเฟรมแรก จากภาพเฟรมแรกและสุดท้าย การสร้างด้วยสื่ออ้างอิงหลายรูปแบบ การแก้ไข และการต่อวิดีโอ สร้างเสียงร่วมกับภาพได้ เลือกโหมดตามสิ่งที่มีอยู่ ได้แก่ บรีฟข้อความ ภาพเปิดที่กำหนดไว้ ภาพสองปลายทาง หรือคลิปที่ต้องแก้หรือต่อ\n\nMini มีข้อกำหนดเอาต์พุตของตนเอง ผู้ผลิตระบุวิดีโอ 480p และ 720p สี 8 บิต 24 เฟรมต่อวินาที และ MP4 อัตราส่วนที่รองรับคือ 21:9, 16:9, 4:3, 1:1, 3:4 และ 9:16 ระยะเวลาที่ระบุคือ 4–15 วินาที และเลือกความยาวอัตโนมัติภายในช่วงนี้ได้ ตัวเลือก 1080p และ 4K ของ Seedance 2.0 รุ่นเต็มเป็นของอีกโมเดล ไม่ใช่การตั้งค่า Mini ตารางความสามารถของตระกูลระบุการส่งคืนเฟรมสุดท้ายที่สร้าง แต่ไม่รองรับโหมด Draft\n\nOmni reference สร้างฉากใหม่โดยเลือกข้อมูลจากสื่อที่ให้ ภาพกำหนดรูปลักษณ์ตัวแบบ องค์ประกอบ หรือแนวภาพ วิดีโอกำหนดการกระทำ กล้อง หรือเอฟเฟกต์ เสียงกำหนดเนื้อเสียง ทำนอง หรือถ้อยคำ บอกว่าจะนำอะไรจากแต่ละแหล่งมาใช้ แทนการให้คัดลอกทุกคุณสมบัติ เช่น ใช้ภาพสินค้าสำหรับรูปทรงและสี คลิปกล้องสั้นสำหรับแนวเข้าหา และเสียงอ้างอิงสำหรับบรรยากาศ\n\nเวิร์กโฟลว์ตระกูลนี้ใช้ภาพอ้างอิงได้สูงสุดเก้าภาพ วิดีโอสามคลิป และเสียงสามคลิป วิดีโอแต่ละคลิปยาว 2–15 วินาที และรวมไม่เกิน 15 วินาที เสียงใช้ขีดจำกัดต่อคลิปและรวมเช่นเดียวกัน ไม่รองรับเสียงอย่างเดียวหรือข้อความร่วมกับเสียงโดยไม่มีภาพอ้างอิง การสร้างจากข้อความอย่างเดียวเป็นอีกโหมดที่รองรับ สำหรับงานเป็นลำดับ ให้ส่งสื่อตามลำดับที่ต้องการและอ้างเป็น Image 1, Video 1 หรือ Audio 1 อย่างสม่ำเสมอ โดยนับแยกตามประเภทสื่อ อย่าใช้รหัสสินทรัพย์แทนหมายเลขอ้างอิงในพรอมป์ต์\n\nภาพเฟรมแรกกำหนดตอนเปิดของช็อตที่นำด้วยภาพ ส่วนโหมดเฟรมแรกและสุดท้ายกำหนดทั้งสองขอบเขต หากภาพขอบเขตที่แน่นอนสำคัญ ให้ใช้โหมดเฉพาะ แทนการบรรยายว่าภาพอ้างอิงเป็นตอนเปิดและจบในพรอมป์ต์ omni-reference วิธีหลังเป็นผลที่กำกับด้วยข้อความ ไม่เท่ากับการเลือกเฟรมขอบเขตแบบเคร่งครัด เตรียมภาพให้ตรงองค์ประกอบเอาต์พุตและระบุการกระทำที่เชื่อมสถานการณ์เริ่มกับจบ\n\nการแก้วิดีโอปรับคลิปเดิม แทนการใช้เป็นแรงบันดาลใจเท่านั้น ระบุวิดีโอ วัตถุหรือบริเวณที่จะเปลี่ยน เวลาที่ปรากฏ ตำแหน่ง และสิ่งที่จะรักษา ตัวอย่างบรีฟที่ใช้ได้คือ “ใน Video 1 เปลี่ยนแก้วมัคเป็นภาชนะใน Image 1 โดยรักษาการเคลื่อนไหวมือ กรอบภาพ แสง และการจัดโต๊ะ” สำหรับการลบ ให้ระบุวัตถุที่ไม่ต้องการและสิ่งรอบข้างที่ต้องคงไว้ ผู้ผลิตแนะนำให้เรียกวิดีโอเป้าหมายโดยตรงเมื่อต้องแก้หรือต่อ การเรียกว่าเป็นสื่ออ้างอิงอาจสื่อว่าต้องการฉากใหม่แทน\n\nการต่อวิดีโอเพิ่มเหตุการณ์ก่อนหรือหลังคลิปเดิม ระบุทิศทางและสิ่งที่จะเกิดถัดไปหรือก่อนหน้า เวิร์กโฟลว์ที่ระบุยังเชื่อมสองหรือสามคลิปด้วยช่วงเปลี่ยนที่สร้างขึ้นได้ โดยวิดีโออินพุตทั้งสามรวมกันยังต้องอยู่ภายในขีดจำกัดอ้างอิง 15 วินาที บทสอนแยกการต่อที่เน้นฟุตเทจบริเวณขอบคลิปเดิมออกจากคำขอที่ระบุให้คงเนื้อหาเดิมทั้งหมด ระบุผลลัพธ์ที่ต้องการให้ชัดว่าเอาเฉพาะส่วนต่อ หรือฉากที่มีทั้งคลิปต้นฉบับและการกระทำใหม่\n\nเพื่อกำกับให้ชัด ให้แยกคำอธิบายฉากคงที่ออกจากลำดับเหตุการณ์ กำหนดตัวแบบแต่ละรายด้วยลักษณะเด่นสองหรือสามอย่างและป้ายชื่อที่สม่ำเสมอ แล้วบรรยายการกระทำ สถานที่ แสง กล้อง สไตล์ และเงื่อนไข สำหรับบทสนทนา ผูกแต่ละประโยคกับผู้พูดและการกระทำ ใช้ชื่อช็อตตามลำดับแทนการถือว่าเวลาที่แน่นอนเป็นตัวควบคุมที่เชื่อถือได้ เพราะผู้ผลิตระบุว่าจังหวะละเอียดอาจไม่นิ่ง ตัวอย่างบรีฟสินค้าที่แบ่งช่วงคือ “Image 1 กำหนดสินค้า A ช็อต 1: เคลื่อนเข้าหาสินค้า A บนเคาน์เตอร์ช้า ๆ ช็อต 2: มือหมุนสินค้าเข้าหาแสง ช็อต 3: หยุดที่ฉลากด้านหน้า ใช้เสียงบรรยากาศห้องเบา ๆ และรักษาตัวอักษรที่พิมพ์ไว้”\n\nเตรียมสื่อตามกฎอินพุตของตระกูล รูปแบบภาพที่รองรับคือ JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC และ HEIF แต่ละภาพต้องเล็กกว่า 30 MB คู่มือกำหนดความกว้างและสูงมากกว่า 300 แต่น้อยกว่า 6,000 พิกเซล และอัตราส่วนมากกว่า 0.4 แต่น้อยกว่า 2.5 วิดีโออ้างอิงใช้ MP4 หรือ MOV พร้อมวิดีโอ H.264 หรือ H.265 และเสียง AAC หรือ MP3 ขนาดไม่เกิน 200 MB ต่อคลิป ที่ 24–60 เฟรมต่อวินาที ความกว้างและสูง 300–6,000 พิกเซล อัตราส่วน 0.4–2.5 และพื้นที่ภาพรวม 407,696–8,295,044 พิกเซล เสียงใช้ WAV หรือ MP3 ไม่เกิน 15 MB ต่อคลิป เหล่านี้เป็นข้อกำหนดเตรียมอินพุตของผู้ผลิต แยกจากตัวควบคุมอัปโหลดของแต่ละแอป\n\nเวิร์กโฟลว์ภาพบุคคลของผู้ผลิตต้องเตรียมภาพหรือวิดีโอที่มีใบหน้าคนจริงเป็นพิเศษ การอัปโหลดสื่ออ้างอิงโดยตรงไม่ใช่เส้นทางมาตรฐานที่รองรับ เอกสารแยกผลลัพธ์โมเดลที่เชื่อถือได้ ตัวละครดิจิทัลที่ตั้งไว้ และเวิร์กโฟลว์สินทรัพย์บุคคลจริงที่ได้รับอนุญาตเป็นคนละวิธี ต้องตรวจการตรงกันของเสียง การออกเสียง และเสียงที่ขอบคลิปด้วย คู่มือพรอมป์ต์แนะนำให้บรรยายลักษณะเสียงที่ต้องการและใช้สไตล์บทสนทนาใกล้เคียงเสียงอ้างอิง ตรวจผลลัพธ์เรื่องความสม่ำเสมอของตัวแบบ ถ้อยคำที่พูด จังหวะการกระทำ รอยต่อเฟรม และเสียงตอนจบ แล้วปรับเฉพาะส่วนที่ต่างจากบรีฟ",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance",
    "available": null,
    "canonical_model": "bytedance/seedance-2.0-mini",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video",
        "audio"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.1512",
            "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.1512",
            "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,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "0b52dda4bb8d8eb2776e0f56",
        "label": "ข้อมูลอ้างอิงราคาตามการตั้งค่าวิดีโอ",
        "profiles": [
          {
            "basis": "อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม",
            "dimensions": {
              "conditions": "ไม่มีการระบุเงื่อนไขเพิ่มเติมในคีย์ราคานี้"
            },
            "label": "ราคาโทเคนวิดีโอ",
            "units": [
              {
                "amount": "0.007",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม",
            "dimensions": {
              "conditions": "เสียง: without_audio"
            },
            "label": "ราคาโทเคนวิดีโอ",
            "units": [
              {
                "amount": "0.007",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม",
            "dimensions": {
              "conditions": "ข้อมูลขาเข้า: with_video_input"
            },
            "label": "ราคาโทเคนวิดีโอ",
            "units": [
              {
                "amount": "0.0042",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "bytedance/seedance-2.0-mini",
    "input": [
      "text",
      "image",
      "audio"
    ],
    "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": "เก็บผลลัพธ์จริงที่เป็นของคุณทุกรายการ พร้อมเมทาดาทาที่วัดได้ซึ่งส่งกลับมา",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "ไม่สามารถเข้าถึงวิดีโอ หรือไม่พบ ID วิดีโอนี้",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "ตรวจสอบสิทธิ์เข้าถึงวิดีโอ สำหรับวิดีโอที่มีอยู่ ให้ใช้ ID สาธารณะเดิมและคีย์ API เดิม",
                "type": "not_found_error"
              },
              {
                "condition": "คีย์ API ไม่ตรงกับบัญชีที่ยืนยันตัวตน",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "ตรวจสอบคีย์ API และสิทธิ์เข้าถึงบัญชีของคุณก่อนส่ง",
                "type": "authentication_error"
              },
              {
                "condition": "ไม่สามารถอ่านคำขอ หรือดัชนีดาวน์โหลดไม่ถูกต้อง",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "แก้ไขเนื้อหาคำขอ สำหรับการดาวน์โหลด ให้เลือกดัชนีผลลัพธ์ที่งานเดิมส่งกลับ",
                "type": "invalid_request_error"
              },
              {
                "condition": "ไม่สามารถคิดราคาการตั้งค่าวิดีโอที่เลือกได้",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "เลือกการตั้งค่าวิดีโอที่รองรับและระบุตัวเลือกที่จำเป็นให้ครบก่อนส่งคำขอที่แก้ไขแล้ว",
                "type": "price_unavailable"
              },
              {
                "condition": "ข้อมูลขาเข้าวิดีโอหรืองานต้นฉบับสำหรับการต่อเนื่องไม่ถูกต้อง",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "ใช้ข้อมูลขาเข้า HTTPS ที่ถูกต้อง สำหรับการต่อเนื่อง ให้ใช้ ID วิดีโอสาธารณะเดิมที่เสร็จสมบูรณ์ของคุณพร้อมคีย์ API เดิม",
                "type": "invalid_request_error"
              },
              {
                "condition": "ยอดคงเหลือหรือขีดจำกัดที่ใช้ได้ไม่เพียงพอสำหรับการกันวงเงิน",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "ตรวจสอบยอดคงเหลือและขีดจำกัดที่ใช้ได้ก่อนส่งคำขอใหม่",
                "type": "billing_error"
              },
              {
                "condition": "การตรวจสอบวิดีโอ ที่เก็บข้อมูล หรือการเข้าถึงบริการไม่พร้อมใช้งานชั่วคราว",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "รอให้บริการพร้อมใช้งาน หากมี ID วิดีโอแล้ว ให้ตรวจสอบงานเดิมนั้นแทนการสร้างวิดีโออีกครั้ง",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "ต้องตรวจสอบผลลัพธ์วิดีโอเดิมและยอดเรียกเก็บ",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "เก็บ ID วิดีโอที่ส่งกลับและตรวจสอบงานนั้น อย่าส่งคำขอสร้างทดแทนระหว่างที่กำลังตรวจสอบ",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "การดาวน์โหลดวิดีโอที่มีอยู่ไม่พร้อมใช้งานชั่วคราว",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "ตรวจสอบงานวิดีโอเดิมในภายหลังและดาวน์โหลดผลลัพธ์ที่มีอยู่ การสร้างใหม่จะสร้างการดำเนินการแยกต่างหาก",
                "type": "server_error"
              },
              {
                "condition": "เนื้อหาวิดีโอยังไม่เผยแพร่",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "ตรวจสอบสถานะงานเดิม ดาวน์โหลดหลังรายงาน completed หากรายงาน failed ให้ทำตามข้อความแจ้งตรวจสอบยอดเรียกเก็บ",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + id เดิม + X-Should-Retry:false ห้ามส่งคำขอเดิมซ้ำ"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0-mini"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "ระบุพรอมป์ต์ข้อความและระยะเวลาเป็นวินาทีเต็มที่รองรับ ใช้ขนาดที่ตรงตามรายการ หรือความละเอียดและอัตราส่วนภาพที่ให้มิติตรงตามรายการ",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "พรอมป์ต์ข้อความ"
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0-mini"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images เป็นอาร์เรย์ของออบเจ็กต์ที่มี type=image_url, image_url ซึ่งมี url และ frame_type ใช้ URL ภาพ HTTPS สาธารณะ first_frame และ last_frame ปรากฏได้อย่างละหนึ่งครั้ง ใช้ขนาดผลลัพธ์ที่ระบุไว้หรือมิติที่เข้ากันได้ อย่าเพิ่มข้อมูลอ้างอิงวิดีโอ",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "พรอมป์ต์ข้อความและภาพเฟรม"
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0-mini"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references เป็นอาร์เรย์ แต่ละออบเจ็กต์มี type=image_url หรือ type=audio_url และออบเจ็กต์ URL ที่ตรงกันซึ่งมี url ใช้ลิงก์ HTTPS สาธารณะ ไม่ต้องระบุ frame_images เพื่อเลือกโหมดอ้างอิง ไม่สามารถคิดราคาข้อมูลอ้างอิงวิดีโอได้",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "พรอมป์ต์ข้อความและข้อมูลอ้างอิงภาพหรือเสียง"
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "reference_to_video"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "ตำแหน่งของวิดีโอนี้ในรายการผลลัพธ์ โดยเริ่มนับจากศูนย์",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "URL ดาวน์โหลด HTTPS ที่ลงลายเซ็นสำหรับวิดีโอที่เสร็จสมบูรณ์นี้",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "ค่าแฮช SHA-256 ของไบต์วิดีโอต้นฉบับ เป็น null หากไม่มีข้อมูล",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "ขนาดไฟล์วิดีโอต้นฉบับเป็นไบต์ เป็น null หากไม่มีข้อมูล",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "ระยะเวลาวิดีโอที่วัดได้เป็นมิลลิวินาที เป็น null หากไม่มีข้อมูล",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "ความกว้างวิดีโอเป็นพิกเซล เป็น null หากไม่มีข้อมูล",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "ความสูงวิดีโอเป็นพิกเซล เป็น null หากไม่มีข้อมูล",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "ตัวระบุตัวแปลงสัญญาณวิดีโอ เป็น null หากไม่ได้บันทึกไว้",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "ระบุว่าวิดีโอมีแทร็กเสียงหรือไม่ เป็น null หากไม่ได้วัด",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "ตัวระบุตัวแปลงสัญญาณเสียง เป็น null เมื่อไม่มีการบันทึกตัวระบุ",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "URL เนื้อหาที่ลงลายเซ็นและเป็นของคุณ",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "bytedance/seedance-2.0-mini"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "bytedance/seedance-2.0-mini"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "1:1",
                  "3:4",
                  "9:16",
                  "4:3",
                  "16:9",
                  "21:9",
                  "9:21"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "การไม่ระบุ generate_audio จะเลือกราคาที่เปิดใช้เสียง ส่วน false จะเลือกราคาที่ไม่มีเสียง ตรวจสอบ has_audio ในผลลัพธ์เพื่อดูว่ามีการส่งแทร็กเสียงกลับหรือไม่",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "คีย์เหล่านี้ใช้กับออบเจ็กต์เฟรมแต่ละรายการ ไม่ต้องระบุ frame_images สำหรับคำขอที่มีเฉพาะข้อความ",
                "content": "อาร์เรย์ของออบเจ็กต์เฟรม แต่ละรายการมี type=image_url, image_url ซึ่งมี url และ frame_type=first_frame หรือ last_frame แต่ละบทบาทปรากฏได้ไม่เกินหนึ่งครั้ง ใช้ URL แบบ HTTPS สาธารณะ",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "ไม่ต้องระบุ frame_images เพื่อใช้โหมดอ้างอิง ใช้ URL แบบ HTTPS สาธารณะ",
                "content": "อาร์เรย์ของออบเจ็กต์อ้างอิงภาพหรือเสียง กำหนด type เป็น image_url หรือ audio_url และระบุออบเจ็กต์ URL ที่ตรงกันซึ่งมี url ข้อมูลอ้างอิงวิดีโอยังไม่สามารถคิดราคาได้",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480x480",
                  "480x640",
                  "480x854",
                  "640x480",
                  "854x480",
                  "1120x480",
                  "720x720",
                  "720x960",
                  "720x1280",
                  "720x1680",
                  "960x720",
                  "1280x720",
                  "1680x720"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "model": {
                  "const": "bytedance/seedance-2.0-mini"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Request geometry is required for the pre-generation estimate and reserve. Returned geometry and track time describe the generated output; final charge follows the actual billed configuration.",
                "Video references with *_with_video_input quantity are rejected; image/audio references only where model reference types admit them."
              ]
            },
            "unsupported": [
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "seed",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "reference_to_video"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "ราคาโทเคนวิดีโอ",
            "units": [
              {
                "amount": "0.007000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000007",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม",
            "dimensions": {
              "conditions": "ข้อมูลขาเข้า: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "ราคาโทเคนวิดีโอ",
            "units": [
              {
                "amount": "0.0042000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000042",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.007000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000007",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "ต้นทุนการสร้างโดยประมาณ",
            "units": [
              {
                "amount": "0.1512",
                "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.1512",
                "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}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"model\":\"bytedance/seedance-2.0-mini\",\"prompt\":\"A serene mountain landscape at sunset\",\"duration\":4,\"resolution\":\"480p\",\"size\":\"480x480\",\"generate_audio\":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 result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);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 returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.007000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000007",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0042000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000042",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.007000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000007",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.1512",
                "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.1512",
                "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": "bytedance/seedance-2.0-mini",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.007000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000007",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0042000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000042",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.007000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_without_audio",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000007",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.1512",
            "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.1512",
            "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": "bytedance/seedance-2.0-mini",
        "request_model_id": "bytedance/seedance-2.0-mini",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance: Seedance 2.0 Mini",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.1512,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.1512,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": false,
          "maker_model_id": "dreamina-seedance-2-0-mini-260615",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": false,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "480p/720p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000070",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": false,
              "maker_model_id": "dreamina-seedance-2-0-mini-260615",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": false,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "480p/720p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": true,
          "maker_model_id": "dreamina-seedance-2-0-mini-260615",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": true,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "480p/720p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000042",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": true,
              "maker_model_id": "dreamina-seedance-2-0-mini-260615",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": true,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "480p/720p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.0070000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "video token",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000070",
            "key": "video_tokens",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000070",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0070000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "audio=false",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000070",
            "key": "video_tokens_without_audio",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000070",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0042000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "video_reference_present Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000042",
            "key": "video_tokens_with_video_input",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000042",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          }
        ]
      }
    ],
    "public_id": "bytedance/seedance-2.0-mini",
    "short": "Seedance 2.0 Mini สร้างวิดีโอสั้นจากข้อความและสื่ออ้างอิงภาพ วิดีโอ และเสียง พร้อมเลือกสร้างเสียงได้ รองรับการสร้างฉาก การแก้วิดีโอเฉพาะจุด และการต่อคลิป โดยเอกสารระบุเอาต์พุต 480p หรือ 720p"
  },
  "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": "Seedance 2.0 Mini สร้างวิดีโอสั้นจากข้อความและสื่ออ้างอิงภาพ วิดีโอ และเสียง พร้อมเลือกสร้างเสียงได้ รองรับการสร้างฉาก การแก้วิดีโอเฉพาะจุด และการต่อคลิป โดยเอกสารระบุเอาต์พุต 480p หรือ 720p",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_exact_canonical_sha256": "54bce38d6caca33f289b2a7a1dbb6fe907e2e8a70fdba48b2d78ce158c9dcb1b",
    "raw_model_js_projection_sha256": "f6918a0c010519265e2497b457b43b1875c6d79e6dc20a9f4e368014781d9e71",
    "raw_model_json_sha256": "54bce38d6caca33f289b2a7a1dbb6fe907e2e8a70fdba48b2d78ce158c9dcb1b",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "94ef2900e3b04b9d99b07a4df4142b49566c7bdc21c0f437b2fc6a360d9d70e5"
}
