{
  "aboutHtml": "<p>Seedance 2.5 เป็นโมเดลสร้างเสียงและวิดีโอร่วมกันของ ByteDance Seed พัฒนาต่อจาก Seedance 2.0 โดยเล่าเรื่องได้นานขึ้น ใช้สื่ออ้างอิงหลายรูปแบบได้มากขึ้น และแก้ไขได้แม่นยำขึ้น บรีฟข้อความกำหนดฉาก ส่วนภาพ วิดีโอ และเสียงสื่อรูปลักษณ์ การเคลื่อนไหว ภาษากล้อง และเสียง ผลลัพธ์เป็นฟุตเทจภาพพร้อมเสียงสำหรับแนวคิดภาพยนตร์ เรื่องราวสินค้า มิวสิกวิดีโอ งานพรีวิชวล หรือเรื่องสั้น</p><p>สร้างฉากครบจบในการสร้างครั้งเดียว ผู้ผลิตขยายความยาวสูงสุดต่อการสร้างครั้งเดียวจากเดิม 15 วินาทีเป็นสูงสุด 30 วินาที จึงมีพื้นที่สำหรับการปูเรื่อง พัฒนาเรื่อง และจบเรื่องด้วยหลายช็อตที่เชื่อมกันหรือการเคลื่อนกล้องต่อเนื่อง ตัวอย่างการแสดงบนเวทีติดตามนักร้องจากห้องแต่งตัว ผ่านทางเดิน ขึ้นสู่เวที แทนการแสดงเฉพาะตอนมาถึง ระบุลำดับการกระทำและเส้นทางกล้องตามที่ต้องการ สำหรับเรื่องราวสินค้า ให้วางจังหวะเปิดเผย สาธิต และองค์ประกอบปิดท้ายให้แต่ละช่วงมีสิ่งที่เห็นได้ชัดเจน</p><p>ต่อฟุตเทจเดิม Seedance 2.5 ต่อคลิปไปข้างหน้าหรือย้อนกลับได้ โดยใช้ตัวละคร สภาพแวดล้อม การเคลื่อนไหว และทิศทางกล้องเดิมเป็นแนวทางรักษาความต่อเนื่อง การต่อไปข้างหน้าบอกสิ่งที่เกิดหลังช่วงสุดท้าย ส่วนการต่อย้อนกลับบอกเหตุการณ์ที่นำเข้าสู่ตอนเปิด ส่งฟุตเทจเดิมพร้อมอธิบายการกระทำใหม่ การเปลี่ยนสถานที่ หรือการเคลื่อนกล้อง ตรวจทั้งรอยต่อและช่วงใหม่ รวมถึงรูปลักษณ์ตัวแบบ เสียง และทิศทางการเคลื่อนที่ ประกาศเปิดตัวกล่าวถึงการต่อซ้ำ ขณะที่หน้าโมเดลระบุการต่อสองขั้น จำนวนครั้งที่ใช้ได้จึงขึ้นอยู่กับเวิร์กโฟลว์นั้น ไม่ใช่คำรับรองว่าสร้างวิดีโอได้ยาวไม่จำกัดในทุกกรณี</p><p>สื่ออ้างอิงภาพ วิดีโอ และเสียง ขีดจำกัดที่ประกาศคือสูงสุด 50 รายการต่อการสร้างหนึ่งครั้ง ได้แก่ ภาพ 30 ภาพ วิดีโอ 10 คลิป และเสียง 10 คลิป ภาพกำหนดตัวละคร สินค้า สถานที่ อุปกรณ์ประกอบฉาก หรือสไตล์ วิดีโอสื่อการแสดง จังหวะ และการเคลื่อนกล้อง เสียงให้บทสนทนา ดนตรี บรรยากาศ หรือจังหวะ กำหนดบทบาทแต่ละรายการให้ชัด เช่น ภาพหนึ่งสำหรับตัวแบบ อีกภาพสำหรับสภาพแวดล้อม วิดีโอสำหรับกล้อง และเสียงสำหรับจังหวะ สื่อเหล่านี้ชี้นำการตีความ ไม่ได้รับประกันว่าจะถ่ายทอดทุกส่วนตรงต้นฉบับทุกประการ</p><p>กำกับด้วยภาพเรนเดอร์ดินเหนียวและจัดบล็อกการแสดง ฉาก 3D ที่ไม่มีพื้นผิวกำหนดผังพื้นที่ ท่าทาง เส้นทางการเคลื่อนที่ และมุมกล้องก่อนเรนเดอร์รูปลักษณ์จริงได้ ผู้ผลิตแสดงการใช้โครงสร้างแบบดินเหนียวร่วมกับภาพแยกสำหรับการออกแบบตัวละคร วัสดุ สี และบรรยากาศ เหมาะกับแอนิเมชันหรือภาพแสดงการประกอบที่การจัดฉากสำคัญกว่าการอ้างอิงสไตล์คร่าว ๆ ระบุว่าแหล่งใดควบคุมการจัดบล็อกและแหล่งใดควบคุมรูปลักษณ์ โมเดลยังใช้ข้อมูลพื้นที่กำกับทิศทางแสง อุณหภูมิสี ความเข้ม และตำแหน่งเงา</p><p>แก้ไขตามช่วงเวลาและควบคุมกล้อง Seedance 2.5 เลือกช่วงเวลาระหว่างการสร้างและปรับตัวละคร การกระทำ หรือองค์ประกอบเรื่องในคลิปเดิมได้ การแก้ตามเวลาครอบคลุมทั้งเสียงและภาพ จึงต้องระบุช่วงและสิ่งที่จะปรับ ผู้ผลิตสาธิตการเปลี่ยนพื้นหลังฉากเขียว การแก้ตามสื่ออ้างอิง และการเปลี่ยนกล้องโดยคงการกระทำและสไตล์ บรีฟควรระบุคลิปต้นฉบับ ช่วงเวลา สิ่งที่จะเปลี่ยน และความต่อเนื่องที่ต้องรักษา เช่น เปลี่ยนแสงหรือพื้นหลังเฉพาะช่วง แทนการออกแบบภาพยนตร์ทั้งหมดใหม่ หลังแก้ให้ตรวจช่วงก่อนและหลังขอบเขตควบคู่กับเนื้อหาที่แก้</p><p>ผลลัพธ์ภาพพร้อมเสียงและการสร้างหลายภาษา ข้อกำหนดผลิตภัณฑ์ของผู้ผลิตระบุความยาว 4–30 วินาทีที่ 480p, 720p หรือ 1080p, 24 FPS และผลลัพธ์ MP4 หรือ MOV บทแนะนำทางการระบุการรองรับมากกว่า 10 ภาษาโดยตรงและการสร้างที่นำด้วยบทสนทนา สิ่งเหล่านี้เป็นความสามารถและตัวเลือกรูปแบบของผู้ผลิต ไม่ได้กำหนดสัญญาของ Ailoot เรื่องไฟล์อินพุต ระยะเวลา หรือรูปแบบเอาต์พุต สำหรับงานบทสนทนา ให้ระบุถ้อยคำและความสัมพันธ์กับการกระทำ แล้วให้ผู้พูดภาษานั้นคล่องตรวจข้อความและการออกเสียงก่อนใช้ฉบับแปล</p><p>การใช้งานและข้อจำกัดสำคัญ เหมาะกับแนวคิดแคมเปญ การแสดงสินค้า เรื่องราวที่นำด้วยตัวละคร และภาพพรีวิวสมจริงจากฟุตเทจอ้างอิงหรือฉาก 3D อย่างง่าย ผู้ผลิตยังสาธิตคำอธิบายเพื่อการศึกษาและภาพกระบวนการผลิตหรือประกอบ ฟุตเทจสอนงานหรือจำลองที่สร้างขึ้นยังต้องตรวจเทียบกระบวนการจริง เอกสารเปิดตัวระบุชัดว่าฟิสิกส์ของการเคลื่อนไหวซับซ้อนและปฏิสัมพันธ์ที่เสถียรระหว่างหลายตัวแบบยังต้องพัฒนา ตรวจการสัมผัสระหว่างมือกับวัตถุ ปฏิสัมพันธ์กลุ่ม เส้นทางเคลื่อนที่ ความสม่ำเสมอของตัวละคร และจังหวะเสียงกับภาพตลอดคลิป เฟรมเปิดที่ดีไม่ได้พิสูจน์ว่าทั้งลำดับตรงตามบรีฟ</p>",
  "aboutText": "Seedance 2.5 เป็นโมเดลสร้างเสียงและวิดีโอร่วมกันของ ByteDance Seed พัฒนาต่อจาก Seedance 2.0 โดยเล่าเรื่องได้นานขึ้น ใช้สื่ออ้างอิงหลายรูปแบบได้มากขึ้น และแก้ไขได้แม่นยำขึ้น บรีฟข้อความกำหนดฉาก ส่วนภาพ วิดีโอ และเสียงสื่อรูปลักษณ์ การเคลื่อนไหว ภาษากล้อง และเสียง ผลลัพธ์เป็นฟุตเทจภาพพร้อมเสียงสำหรับแนวคิดภาพยนตร์ เรื่องราวสินค้า มิวสิกวิดีโอ งานพรีวิชวล หรือเรื่องสั้น\n\nสร้างฉากครบจบในการสร้างครั้งเดียว\nผู้ผลิตขยายความยาวสูงสุดต่อการสร้างครั้งเดียวจากเดิม 15 วินาทีเป็นสูงสุด 30 วินาที จึงมีพื้นที่สำหรับการปูเรื่อง พัฒนาเรื่อง และจบเรื่องด้วยหลายช็อตที่เชื่อมกันหรือการเคลื่อนกล้องต่อเนื่อง ตัวอย่างการแสดงบนเวทีติดตามนักร้องจากห้องแต่งตัว ผ่านทางเดิน ขึ้นสู่เวที แทนการแสดงเฉพาะตอนมาถึง ระบุลำดับการกระทำและเส้นทางกล้องตามที่ต้องการ สำหรับเรื่องราวสินค้า ให้วางจังหวะเปิดเผย สาธิต และองค์ประกอบปิดท้ายให้แต่ละช่วงมีสิ่งที่เห็นได้ชัดเจน\n\nต่อฟุตเทจเดิม\nSeedance 2.5 ต่อคลิปไปข้างหน้าหรือย้อนกลับได้ โดยใช้ตัวละคร สภาพแวดล้อม การเคลื่อนไหว และทิศทางกล้องเดิมเป็นแนวทางรักษาความต่อเนื่อง การต่อไปข้างหน้าบอกสิ่งที่เกิดหลังช่วงสุดท้าย ส่วนการต่อย้อนกลับบอกเหตุการณ์ที่นำเข้าสู่ตอนเปิด ส่งฟุตเทจเดิมพร้อมอธิบายการกระทำใหม่ การเปลี่ยนสถานที่ หรือการเคลื่อนกล้อง ตรวจทั้งรอยต่อและช่วงใหม่ รวมถึงรูปลักษณ์ตัวแบบ เสียง และทิศทางการเคลื่อนที่ ประกาศเปิดตัวกล่าวถึงการต่อซ้ำ ขณะที่หน้าโมเดลระบุการต่อสองขั้น จำนวนครั้งที่ใช้ได้จึงขึ้นอยู่กับเวิร์กโฟลว์นั้น ไม่ใช่คำรับรองว่าสร้างวิดีโอได้ยาวไม่จำกัดในทุกกรณี\n\nสื่ออ้างอิงภาพ วิดีโอ และเสียง\nขีดจำกัดที่ประกาศคือสูงสุด 50 รายการต่อการสร้างหนึ่งครั้ง ได้แก่ ภาพ 30 ภาพ วิดีโอ 10 คลิป และเสียง 10 คลิป ภาพกำหนดตัวละคร สินค้า สถานที่ อุปกรณ์ประกอบฉาก หรือสไตล์ วิดีโอสื่อการแสดง จังหวะ และการเคลื่อนกล้อง เสียงให้บทสนทนา ดนตรี บรรยากาศ หรือจังหวะ กำหนดบทบาทแต่ละรายการให้ชัด เช่น ภาพหนึ่งสำหรับตัวแบบ อีกภาพสำหรับสภาพแวดล้อม วิดีโอสำหรับกล้อง และเสียงสำหรับจังหวะ สื่อเหล่านี้ชี้นำการตีความ ไม่ได้รับประกันว่าจะถ่ายทอดทุกส่วนตรงต้นฉบับทุกประการ\n\nกำกับด้วยภาพเรนเดอร์ดินเหนียวและจัดบล็อกการแสดง\nฉาก 3D ที่ไม่มีพื้นผิวกำหนดผังพื้นที่ ท่าทาง เส้นทางการเคลื่อนที่ และมุมกล้องก่อนเรนเดอร์รูปลักษณ์จริงได้ ผู้ผลิตแสดงการใช้โครงสร้างแบบดินเหนียวร่วมกับภาพแยกสำหรับการออกแบบตัวละคร วัสดุ สี และบรรยากาศ เหมาะกับแอนิเมชันหรือภาพแสดงการประกอบที่การจัดฉากสำคัญกว่าการอ้างอิงสไตล์คร่าว ๆ ระบุว่าแหล่งใดควบคุมการจัดบล็อกและแหล่งใดควบคุมรูปลักษณ์ โมเดลยังใช้ข้อมูลพื้นที่กำกับทิศทางแสง อุณหภูมิสี ความเข้ม และตำแหน่งเงา\n\nแก้ไขตามช่วงเวลาและควบคุมกล้อง\nSeedance 2.5 เลือกช่วงเวลาระหว่างการสร้างและปรับตัวละคร การกระทำ หรือองค์ประกอบเรื่องในคลิปเดิมได้ การแก้ตามเวลาครอบคลุมทั้งเสียงและภาพ จึงต้องระบุช่วงและสิ่งที่จะปรับ ผู้ผลิตสาธิตการเปลี่ยนพื้นหลังฉากเขียว การแก้ตามสื่ออ้างอิง และการเปลี่ยนกล้องโดยคงการกระทำและสไตล์ บรีฟควรระบุคลิปต้นฉบับ ช่วงเวลา สิ่งที่จะเปลี่ยน และความต่อเนื่องที่ต้องรักษา เช่น เปลี่ยนแสงหรือพื้นหลังเฉพาะช่วง แทนการออกแบบภาพยนตร์ทั้งหมดใหม่ หลังแก้ให้ตรวจช่วงก่อนและหลังขอบเขตควบคู่กับเนื้อหาที่แก้\n\nผลลัพธ์ภาพพร้อมเสียงและการสร้างหลายภาษา\nข้อกำหนดผลิตภัณฑ์ของผู้ผลิตระบุความยาว 4–30 วินาทีที่ 480p, 720p หรือ 1080p, 24 FPS และผลลัพธ์ MP4 หรือ MOV บทแนะนำทางการระบุการรองรับมากกว่า 10 ภาษาโดยตรงและการสร้างที่นำด้วยบทสนทนา สิ่งเหล่านี้เป็นความสามารถและตัวเลือกรูปแบบของผู้ผลิต ไม่ได้กำหนดสัญญาของ Ailoot เรื่องไฟล์อินพุต ระยะเวลา หรือรูปแบบเอาต์พุต สำหรับงานบทสนทนา ให้ระบุถ้อยคำและความสัมพันธ์กับการกระทำ แล้วให้ผู้พูดภาษานั้นคล่องตรวจข้อความและการออกเสียงก่อนใช้ฉบับแปล\n\nการใช้งานและข้อจำกัดสำคัญ\nเหมาะกับแนวคิดแคมเปญ การแสดงสินค้า เรื่องราวที่นำด้วยตัวละคร และภาพพรีวิวสมจริงจากฟุตเทจอ้างอิงหรือฉาก 3D อย่างง่าย ผู้ผลิตยังสาธิตคำอธิบายเพื่อการศึกษาและภาพกระบวนการผลิตหรือประกอบ ฟุตเทจสอนงานหรือจำลองที่สร้างขึ้นยังต้องตรวจเทียบกระบวนการจริง เอกสารเปิดตัวระบุชัดว่าฟิสิกส์ของการเคลื่อนไหวซับซ้อนและปฏิสัมพันธ์ที่เสถียรระหว่างหลายตัวแบบยังต้องพัฒนา ตรวจการสัมผัสระหว่างมือกับวัตถุ ปฏิสัมพันธ์กลุ่ม เส้นทางเคลื่อนที่ ความสม่ำเสมอของตัวละคร และจังหวะเสียงกับภาพตลอดคลิป เฟรมเปิดที่ดีไม่ได้พิสูจน์ว่าทั้งลำดับตรงตามบรีฟ",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "0e16b84a0525c1a286b86b37c62e1ae26f251e0a5b6fbe00ffc5280c0afa1113",
    "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.5</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>ByteDance /</span><code>bytedance/seedance-2.5</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.5\">วิดีโอ</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.5 สร้างเสียงและวิดีโอพร้อมกันสำหรับฉากที่ยาวขึ้น การอ้างอิงภาพ/วิดีโอ/เสียงที่หลากหลาย และการแก้ไขเฉพาะจุด ByteDance Seed ระบุการสร้างความยาวสูงสุด 30 วินาที การกำกับด้วยภาพเรนเดอร์ดินเหนียว การควบคุมกล้อง และการต่อฟุตเทจเดิมไว้ในเอกสาร</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.5 เป็นโมเดลสร้างเสียงและวิดีโอร่วมกันของ ByteDance Seed พัฒนาต่อจาก Seedance 2.0 โดยเล่าเรื่องได้นานขึ้น ใช้สื่ออ้างอิงหลายรูปแบบได้มากขึ้น และแก้ไขได้แม่นยำขึ้น บรีฟข้อความกำหนดฉาก ส่วนภาพ วิดีโอ และเสียงสื่อรูปลักษณ์ การเคลื่อนไหว ภาษากล้อง และเสียง ผลลัพธ์เป็นฟุตเทจภาพพร้อมเสียงสำหรับแนวคิดภาพยนตร์ เรื่องราวสินค้า มิวสิกวิดีโอ งานพรีวิชวล หรือเรื่องสั้น</p><p>สร้างฉากครบจบในการสร้างครั้งเดียว ผู้ผลิตขยายความยาวสูงสุดต่อการสร้างครั้งเดียวจากเดิม 15 วินาทีเป็นสูงสุด 30 วินาที จึงมีพื้นที่สำหรับการปูเรื่อง พัฒนาเรื่อง และจบเรื่องด้วยหลายช็อตที่เชื่อมกันหรือการเคลื่อนกล้องต่อเนื่อง ตัวอย่างการแสดงบนเวทีติดตามนักร้องจากห้องแต่งตัว ผ่านทางเดิน ขึ้นสู่เวที แทนการแสดงเฉพาะตอนมาถึง ระบุลำดับการกระทำและเส้นทางกล้องตามที่ต้องการ สำหรับเรื่องราวสินค้า ให้วางจังหวะเปิดเผย สาธิต และองค์ประกอบปิดท้ายให้แต่ละช่วงมีสิ่งที่เห็นได้ชัดเจน</p><p>ต่อฟุตเทจเดิม Seedance 2.5 ต่อคลิปไปข้างหน้าหรือย้อนกลับได้ โดยใช้ตัวละคร สภาพแวดล้อม การเคลื่อนไหว และทิศทางกล้องเดิมเป็นแนวทางรักษาความต่อเนื่อง การต่อไปข้างหน้าบอกสิ่งที่เกิดหลังช่วงสุดท้าย ส่วนการต่อย้อนกลับบอกเหตุการณ์ที่นำเข้าสู่ตอนเปิด ส่งฟุตเทจเดิมพร้อมอธิบายการกระทำใหม่ การเปลี่ยนสถานที่ หรือการเคลื่อนกล้อง ตรวจทั้งรอยต่อและช่วงใหม่ รวมถึงรูปลักษณ์ตัวแบบ เสียง และทิศทางการเคลื่อนที่ ประกาศเปิดตัวกล่าวถึงการต่อซ้ำ ขณะที่หน้าโมเดลระบุการต่อสองขั้น จำนวนครั้งที่ใช้ได้จึงขึ้นอยู่กับเวิร์กโฟลว์นั้น ไม่ใช่คำรับรองว่าสร้างวิดีโอได้ยาวไม่จำกัดในทุกกรณี</p><p>สื่ออ้างอิงภาพ วิดีโอ และเสียง ขีดจำกัดที่ประกาศคือสูงสุด 50 รายการต่อการสร้างหนึ่งครั้ง ได้แก่ ภาพ 30 ภาพ วิดีโอ 10 คลิป และเสียง 10 คลิป ภาพกำหนดตัวละคร สินค้า สถานที่ อุปกรณ์ประกอบฉาก หรือสไตล์ วิดีโอสื่อการแสดง จังหวะ และการเคลื่อนกล้อง เสียงให้บทสนทนา ดนตรี บรรยากาศ หรือจังหวะ กำหนดบทบาทแต่ละรายการให้ชัด เช่น ภาพหนึ่งสำหรับตัวแบบ อีกภาพสำหรับสภาพแวดล้อม วิดีโอสำหรับกล้อง และเสียงสำหรับจังหวะ สื่อเหล่านี้ชี้นำการตีความ ไม่ได้รับประกันว่าจะถ่ายทอดทุกส่วนตรงต้นฉบับทุกประการ</p><p>กำกับด้วยภาพเรนเดอร์ดินเหนียวและจัดบล็อกการแสดง ฉาก 3D ที่ไม่มีพื้นผิวกำหนดผังพื้นที่ ท่าทาง เส้นทางการเคลื่อนที่ และมุมกล้องก่อนเรนเดอร์รูปลักษณ์จริงได้ ผู้ผลิตแสดงการใช้โครงสร้างแบบดินเหนียวร่วมกับภาพแยกสำหรับการออกแบบตัวละคร วัสดุ สี และบรรยากาศ เหมาะกับแอนิเมชันหรือภาพแสดงการประกอบที่การจัดฉากสำคัญกว่าการอ้างอิงสไตล์คร่าว ๆ ระบุว่าแหล่งใดควบคุมการจัดบล็อกและแหล่งใดควบคุมรูปลักษณ์ โมเดลยังใช้ข้อมูลพื้นที่กำกับทิศทางแสง อุณหภูมิสี ความเข้ม และตำแหน่งเงา</p><p>แก้ไขตามช่วงเวลาและควบคุมกล้อง Seedance 2.5 เลือกช่วงเวลาระหว่างการสร้างและปรับตัวละคร การกระทำ หรือองค์ประกอบเรื่องในคลิปเดิมได้ การแก้ตามเวลาครอบคลุมทั้งเสียงและภาพ จึงต้องระบุช่วงและสิ่งที่จะปรับ ผู้ผลิตสาธิตการเปลี่ยนพื้นหลังฉากเขียว การแก้ตามสื่ออ้างอิง และการเปลี่ยนกล้องโดยคงการกระทำและสไตล์ บรีฟควรระบุคลิปต้นฉบับ ช่วงเวลา สิ่งที่จะเปลี่ยน และความต่อเนื่องที่ต้องรักษา เช่น เปลี่ยนแสงหรือพื้นหลังเฉพาะช่วง แทนการออกแบบภาพยนตร์ทั้งหมดใหม่ หลังแก้ให้ตรวจช่วงก่อนและหลังขอบเขตควบคู่กับเนื้อหาที่แก้</p><p>ผลลัพธ์ภาพพร้อมเสียงและการสร้างหลายภาษา ข้อกำหนดผลิตภัณฑ์ของผู้ผลิตระบุความยาว 4–30 วินาทีที่ 480p, 720p หรือ 1080p, 24 FPS และผลลัพธ์ MP4 หรือ MOV บทแนะนำทางการระบุการรองรับมากกว่า 10 ภาษาโดยตรงและการสร้างที่นำด้วยบทสนทนา สิ่งเหล่านี้เป็นความสามารถและตัวเลือกรูปแบบของผู้ผลิต ไม่ได้กำหนดสัญญาของ Ailoot เรื่องไฟล์อินพุต ระยะเวลา หรือรูปแบบเอาต์พุต สำหรับงานบทสนทนา ให้ระบุถ้อยคำและความสัมพันธ์กับการกระทำ แล้วให้ผู้พูดภาษานั้นคล่องตรวจข้อความและการออกเสียงก่อนใช้ฉบับแปล</p><p>การใช้งานและข้อจำกัดสำคัญ เหมาะกับแนวคิดแคมเปญ การแสดงสินค้า เรื่องราวที่นำด้วยตัวละคร และภาพพรีวิวสมจริงจากฟุตเทจอ้างอิงหรือฉาก 3D อย่างง่าย ผู้ผลิตยังสาธิตคำอธิบายเพื่อการศึกษาและภาพกระบวนการผลิตหรือประกอบ ฟุตเทจสอนงานหรือจำลองที่สร้างขึ้นยังต้องตรวจเทียบกระบวนการจริง เอกสารเปิดตัวระบุชัดว่าฟิสิกส์ของการเคลื่อนไหวซับซ้อนและปฏิสัมพันธ์ที่เสถียรระหว่างหลายตัวแบบยังต้องพัฒนา ตรวจการสัมผัสระหว่างมือกับวัตถุ ปฏิสัมพันธ์กลุ่ม เส้นทางเคลื่อนที่ ความสม่ำเสมอของตัวละคร และจังหวะเสียงกับภาพตลอดคลิป เฟรมเปิดที่ดีไม่ได้พิสูจน์ว่าทั้งลำดับตรงตามบรีฟ</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.5</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, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30</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>16:9, 4:3, 1:1, 3:4, 9:16, 21: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\">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>854x480, 752x560, 640x640, 560x752, 480x854, 992x432, 1280x720, 1112x834, 960x960, 834x1112, 720x1280, 1470x630</div><div>แพตเทิร์น: ^[1-9][0-9]*x[1-9][0-9]*$</div><div>เงื่อนไข: สำหรับขนาดที่ระบุไว้นอกเหนือจาก 1280x720 ไม่ต้องระบุ aspect_ratio สามารถใช้ 1280x720 ร่วมกับ 16:9 ได้ หากระบุ resolution ต้องตรงกับระดับ 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\">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.5</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.5</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.5</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.0214</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.0128</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.0214</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.822402</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.0214</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.0214</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.0128</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-1140-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1140-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-1140-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1140-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.5&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;854x480&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-1141-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1141-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-1141-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1141-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-1142-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1142-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-1142-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1142-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.5&amp;route=Ultra&amp;caller=bytedance%2Fseedance-2.5&amp;fmt=videos\"><code>bytedance/seedance-2.5</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=bytedance%2Fseedance-2.5&amp;route=Ultra&amp;caller=bytedance%2Fseedance-2.5&amp;fmt=videos\"><code>bytedance/seedance-2.5</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "bytedance/seedance-2.5",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "bytedance/seedance-2.5",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|bytedance%2Fseedance-2.5",
      "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.5"
                  ],
                  "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.5"
                  ],
                  "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.5"
                  ],
                  "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.5"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "bytedance/seedance-2.5"
                },
                "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,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  24,
                  25,
                  26,
                  27,
                  28,
                  29,
                  30
                ],
                "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,
                    16,
                    17,
                    18,
                    19,
                    20,
                    21,
                    22,
                    23,
                    24,
                    25,
                    26,
                    27,
                    28,
                    29,
                    30
                  ],
                  "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": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "21:9"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9"
                  ]
                },
                "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",
                "conditions": "สำหรับขนาดที่ระบุไว้นอกเหนือจาก 1280x720 ไม่ต้องระบุ aspect_ratio สามารถใช้ 1280x720 ร่วมกับ 16:9 ได้ หากระบุ resolution ต้องตรงกับระดับ 480p หรือ 720p ของขนาดที่เลือก",
                "default": null,
                "default_known": false,
                "enum": [
                  "854x480",
                  "752x560",
                  "640x640",
                  "560x752",
                  "480x854",
                  "992x432",
                  "1280x720",
                  "1112x834",
                  "960x960",
                  "834x1112",
                  "720x1280",
                  "1470x630"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "854x480",
                    "752x560",
                    "640x640",
                    "560x752",
                    "480x854",
                    "992x432",
                    "1280x720",
                    "1112x834",
                    "960x960",
                    "834x1112",
                    "720x1280",
                    "1470x630"
                  ],
                  "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": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9"
                  ]
                },
                "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,
                    16,
                    17,
                    18,
                    19,
                    20,
                    21,
                    22,
                    23,
                    24,
                    25,
                    26,
                    27,
                    28,
                    29,
                    30
                  ],
                  "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.5"
                },
                "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": [
                    "854x480",
                    "752x560",
                    "640x640",
                    "560x752",
                    "480x854",
                    "992x432",
                    "1280x720",
                    "1112x834",
                    "960x960",
                    "834x1112",
                    "720x1280",
                    "1470x630"
                  ],
                  "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.",
                "Only twelve named size tiers are accepted; when size and aspect coexist only1280x720+16:9 is established. Size-only forms preserve omission.",
                "Documentary edit/continuation modes are not exposed as executable edits; previous_job_id is rejected."
              ]
            },
            "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.0214000",
                "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.0000214",
                "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.0128000",
                "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.0000128",
                "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.0214000",
                "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.0000214",
                "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.822402",
                "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.822402",
                "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.5\",\"prompt\":\"A serene mountain landscape at sunset\",\"duration\":4,\"resolution\":\"480p\",\"size\":\"854x480\",\"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.0214000",
                "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.0000214",
                "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.0128000",
                "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.0000128",
                "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.0214000",
                "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.0000214",
                "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.822402",
                "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.822402",
                "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.5",
        "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.0214000",
            "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.0000214",
            "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.0128000",
            "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.0000128",
            "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.0214000",
            "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.0000214",
            "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.822402",
            "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.822402",
            "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.5",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "02b51fdbc70e11487a2287ca259957318a25e9172c34e51ce9027b07d17d3e97",
    "input_html_sha256": "e2c300fbf1c242a4dac2bf06254aa16c6cb58c7ac7a6db37149714419c5bfc4a",
    "private_audit_sha256": "7243b514cdd76ffe31f0aeddfc6289aa778b1a980043e84809e6eee52502268a",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/bytedance-seedance-2-5/",
    "description": "Seedance 2.5 สร้างเสียงและวิดีโอพร้อมกันสำหรับฉากที่ยาวขึ้น การอ้างอิงภาพ/วิดีโอ/เสียงที่หลากหลาย และการแก้ไขเฉพาะจุด ByteDance Seed ระบุการสร้างความยาวสูงสุด 30 วินาที การกำกับด้วยภาพเรนเดอร์ดินเหนียว การควบคุมกล้อง และการต่อฟุตเทจเดิมไว้ในเอกสาร",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/bytedance-seedance-2-5/index.md",
    "title": "ByteDance: Seedance 2.5 — Ailoot",
    "url": "https://ailoot.ai/models/th/bytedance-seedance-2-5/"
  },
  "rawModel": {
    "about": "Seedance 2.5 เป็นโมเดลสร้างเสียงและวิดีโอร่วมกันของ ByteDance Seed พัฒนาต่อจาก Seedance 2.0 โดยเล่าเรื่องได้นานขึ้น ใช้สื่ออ้างอิงหลายรูปแบบได้มากขึ้น และแก้ไขได้แม่นยำขึ้น บรีฟข้อความกำหนดฉาก ส่วนภาพ วิดีโอ และเสียงสื่อรูปลักษณ์ การเคลื่อนไหว ภาษากล้อง และเสียง ผลลัพธ์เป็นฟุตเทจภาพพร้อมเสียงสำหรับแนวคิดภาพยนตร์ เรื่องราวสินค้า มิวสิกวิดีโอ งานพรีวิชวล หรือเรื่องสั้น\n\nสร้างฉากครบจบในการสร้างครั้งเดียว\nผู้ผลิตขยายความยาวสูงสุดต่อการสร้างครั้งเดียวจากเดิม 15 วินาทีเป็นสูงสุด 30 วินาที จึงมีพื้นที่สำหรับการปูเรื่อง พัฒนาเรื่อง และจบเรื่องด้วยหลายช็อตที่เชื่อมกันหรือการเคลื่อนกล้องต่อเนื่อง ตัวอย่างการแสดงบนเวทีติดตามนักร้องจากห้องแต่งตัว ผ่านทางเดิน ขึ้นสู่เวที แทนการแสดงเฉพาะตอนมาถึง ระบุลำดับการกระทำและเส้นทางกล้องตามที่ต้องการ สำหรับเรื่องราวสินค้า ให้วางจังหวะเปิดเผย สาธิต และองค์ประกอบปิดท้ายให้แต่ละช่วงมีสิ่งที่เห็นได้ชัดเจน\n\nต่อฟุตเทจเดิม\nSeedance 2.5 ต่อคลิปไปข้างหน้าหรือย้อนกลับได้ โดยใช้ตัวละคร สภาพแวดล้อม การเคลื่อนไหว และทิศทางกล้องเดิมเป็นแนวทางรักษาความต่อเนื่อง การต่อไปข้างหน้าบอกสิ่งที่เกิดหลังช่วงสุดท้าย ส่วนการต่อย้อนกลับบอกเหตุการณ์ที่นำเข้าสู่ตอนเปิด ส่งฟุตเทจเดิมพร้อมอธิบายการกระทำใหม่ การเปลี่ยนสถานที่ หรือการเคลื่อนกล้อง ตรวจทั้งรอยต่อและช่วงใหม่ รวมถึงรูปลักษณ์ตัวแบบ เสียง และทิศทางการเคลื่อนที่ ประกาศเปิดตัวกล่าวถึงการต่อซ้ำ ขณะที่หน้าโมเดลระบุการต่อสองขั้น จำนวนครั้งที่ใช้ได้จึงขึ้นอยู่กับเวิร์กโฟลว์นั้น ไม่ใช่คำรับรองว่าสร้างวิดีโอได้ยาวไม่จำกัดในทุกกรณี\n\nสื่ออ้างอิงภาพ วิดีโอ และเสียง\nขีดจำกัดที่ประกาศคือสูงสุด 50 รายการต่อการสร้างหนึ่งครั้ง ได้แก่ ภาพ 30 ภาพ วิดีโอ 10 คลิป และเสียง 10 คลิป ภาพกำหนดตัวละคร สินค้า สถานที่ อุปกรณ์ประกอบฉาก หรือสไตล์ วิดีโอสื่อการแสดง จังหวะ และการเคลื่อนกล้อง เสียงให้บทสนทนา ดนตรี บรรยากาศ หรือจังหวะ กำหนดบทบาทแต่ละรายการให้ชัด เช่น ภาพหนึ่งสำหรับตัวแบบ อีกภาพสำหรับสภาพแวดล้อม วิดีโอสำหรับกล้อง และเสียงสำหรับจังหวะ สื่อเหล่านี้ชี้นำการตีความ ไม่ได้รับประกันว่าจะถ่ายทอดทุกส่วนตรงต้นฉบับทุกประการ\n\nกำกับด้วยภาพเรนเดอร์ดินเหนียวและจัดบล็อกการแสดง\nฉาก 3D ที่ไม่มีพื้นผิวกำหนดผังพื้นที่ ท่าทาง เส้นทางการเคลื่อนที่ และมุมกล้องก่อนเรนเดอร์รูปลักษณ์จริงได้ ผู้ผลิตแสดงการใช้โครงสร้างแบบดินเหนียวร่วมกับภาพแยกสำหรับการออกแบบตัวละคร วัสดุ สี และบรรยากาศ เหมาะกับแอนิเมชันหรือภาพแสดงการประกอบที่การจัดฉากสำคัญกว่าการอ้างอิงสไตล์คร่าว ๆ ระบุว่าแหล่งใดควบคุมการจัดบล็อกและแหล่งใดควบคุมรูปลักษณ์ โมเดลยังใช้ข้อมูลพื้นที่กำกับทิศทางแสง อุณหภูมิสี ความเข้ม และตำแหน่งเงา\n\nแก้ไขตามช่วงเวลาและควบคุมกล้อง\nSeedance 2.5 เลือกช่วงเวลาระหว่างการสร้างและปรับตัวละคร การกระทำ หรือองค์ประกอบเรื่องในคลิปเดิมได้ การแก้ตามเวลาครอบคลุมทั้งเสียงและภาพ จึงต้องระบุช่วงและสิ่งที่จะปรับ ผู้ผลิตสาธิตการเปลี่ยนพื้นหลังฉากเขียว การแก้ตามสื่ออ้างอิง และการเปลี่ยนกล้องโดยคงการกระทำและสไตล์ บรีฟควรระบุคลิปต้นฉบับ ช่วงเวลา สิ่งที่จะเปลี่ยน และความต่อเนื่องที่ต้องรักษา เช่น เปลี่ยนแสงหรือพื้นหลังเฉพาะช่วง แทนการออกแบบภาพยนตร์ทั้งหมดใหม่ หลังแก้ให้ตรวจช่วงก่อนและหลังขอบเขตควบคู่กับเนื้อหาที่แก้\n\nผลลัพธ์ภาพพร้อมเสียงและการสร้างหลายภาษา\nข้อกำหนดผลิตภัณฑ์ของผู้ผลิตระบุความยาว 4–30 วินาทีที่ 480p, 720p หรือ 1080p, 24 FPS และผลลัพธ์ MP4 หรือ MOV บทแนะนำทางการระบุการรองรับมากกว่า 10 ภาษาโดยตรงและการสร้างที่นำด้วยบทสนทนา สิ่งเหล่านี้เป็นความสามารถและตัวเลือกรูปแบบของผู้ผลิต ไม่ได้กำหนดสัญญาของ Ailoot เรื่องไฟล์อินพุต ระยะเวลา หรือรูปแบบเอาต์พุต สำหรับงานบทสนทนา ให้ระบุถ้อยคำและความสัมพันธ์กับการกระทำ แล้วให้ผู้พูดภาษานั้นคล่องตรวจข้อความและการออกเสียงก่อนใช้ฉบับแปล\n\nการใช้งานและข้อจำกัดสำคัญ\nเหมาะกับแนวคิดแคมเปญ การแสดงสินค้า เรื่องราวที่นำด้วยตัวละคร และภาพพรีวิวสมจริงจากฟุตเทจอ้างอิงหรือฉาก 3D อย่างง่าย ผู้ผลิตยังสาธิตคำอธิบายเพื่อการศึกษาและภาพกระบวนการผลิตหรือประกอบ ฟุตเทจสอนงานหรือจำลองที่สร้างขึ้นยังต้องตรวจเทียบกระบวนการจริง เอกสารเปิดตัวระบุชัดว่าฟิสิกส์ของการเคลื่อนไหวซับซ้อนและปฏิสัมพันธ์ที่เสถียรระหว่างหลายตัวแบบยังต้องพัฒนา ตรวจการสัมผัสระหว่างมือกับวัตถุ ปฏิสัมพันธ์กลุ่ม เส้นทางเคลื่อนที่ ความสม่ำเสมอของตัวละคร และจังหวะเสียงกับภาพตลอดคลิป เฟรมเปิดที่ดีไม่ได้พิสูจน์ว่าทั้งลำดับตรงตามบรีฟ",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance",
    "available": null,
    "canonical_model": "bytedance/seedance-2.5",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video",
        "audio"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.822402",
            "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.822402",
            "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": "7b02ca86bc11f14fa74beb95",
        "label": "ข้อมูลอ้างอิงราคาตามการตั้งค่าวิดีโอ",
        "profiles": [
          {
            "basis": "อัตราต่อโทเคนวิดีโอเป็นราคาอ้างอิงหลัก ค่าประมาณต่อวินาทีที่แสดงเด่นเป็นข้อมูลอ้างอิงแยกต่างหาก ไม่ใช่ค่าใช้จ่ายเพิ่มเติม",
            "dimensions": {
              "conditions": "ไม่มีการระบุเงื่อนไขเพิ่มเติมในคีย์ราคานี้"
            },
            "label": "ราคาโทเคนวิดีโอ",
            "units": [
              {
                "amount": "0.0214",
                "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.0214",
                "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.0128",
                "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.5",
    "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.5"
                  ],
                  "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.5"
                  ],
                  "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.5"
                  ],
                  "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.5"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "bytedance/seedance-2.5"
                },
                "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,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  24,
                  25,
                  26,
                  27,
                  28,
                  29,
                  30
                ],
                "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,
                    16,
                    17,
                    18,
                    19,
                    20,
                    21,
                    22,
                    23,
                    24,
                    25,
                    26,
                    27,
                    28,
                    29,
                    30
                  ],
                  "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": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "21:9"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9"
                  ]
                },
                "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",
                "conditions": "สำหรับขนาดที่ระบุไว้นอกเหนือจาก 1280x720 ไม่ต้องระบุ aspect_ratio สามารถใช้ 1280x720 ร่วมกับ 16:9 ได้ หากระบุ resolution ต้องตรงกับระดับ 480p หรือ 720p ของขนาดที่เลือก",
                "default": null,
                "default_known": false,
                "enum": [
                  "854x480",
                  "752x560",
                  "640x640",
                  "560x752",
                  "480x854",
                  "992x432",
                  "1280x720",
                  "1112x834",
                  "960x960",
                  "834x1112",
                  "720x1280",
                  "1470x630"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "854x480",
                    "752x560",
                    "640x640",
                    "560x752",
                    "480x854",
                    "992x432",
                    "1280x720",
                    "1112x834",
                    "960x960",
                    "834x1112",
                    "720x1280",
                    "1470x630"
                  ],
                  "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": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9"
                  ]
                },
                "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,
                    16,
                    17,
                    18,
                    19,
                    20,
                    21,
                    22,
                    23,
                    24,
                    25,
                    26,
                    27,
                    28,
                    29,
                    30
                  ],
                  "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.5"
                },
                "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": [
                    "854x480",
                    "752x560",
                    "640x640",
                    "560x752",
                    "480x854",
                    "992x432",
                    "1280x720",
                    "1112x834",
                    "960x960",
                    "834x1112",
                    "720x1280",
                    "1470x630"
                  ],
                  "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.",
                "Only twelve named size tiers are accepted; when size and aspect coexist only1280x720+16:9 is established. Size-only forms preserve omission.",
                "Documentary edit/continuation modes are not exposed as executable edits; previous_job_id is rejected."
              ]
            },
            "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.0214000",
                "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.0000214",
                "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.0128000",
                "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.0000128",
                "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.0214000",
                "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.0000214",
                "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.822402",
                "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.822402",
                "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.5\",\"prompt\":\"A serene mountain landscape at sunset\",\"duration\":4,\"resolution\":\"480p\",\"size\":\"854x480\",\"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.0214000",
                "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.0000214",
                "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.0128000",
                "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.0000128",
                "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.0214000",
                "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.0000214",
                "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.822402",
                "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.822402",
                "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.5",
        "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.0214000",
            "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.0000214",
            "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.0128000",
            "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.0000128",
            "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.0214000",
            "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.0000214",
            "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.822402",
            "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.822402",
            "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.5",
        "request_model_id": "bytedance/seedance-2.5",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance: Seedance 2.5",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.822402,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.822402,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "draft_mode": {
            "draft": "480p tariff; separately billed task",
            "final": "target resolution tariff; rate selected by original step1 video input",
            "quantity": "original step1 input video duration; draft video not counted as input"
          },
          "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-5-260628",
          "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.0000214",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "draft_mode": {
                "draft": "480p tariff; separately billed task",
                "final": "target resolution tariff; rate selected by original step1 video input",
                "quantity": "original step1 input video duration; draft video not counted as input"
              },
              "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-5-260628",
              "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",
          "draft_mode": {
            "draft": "480p tariff; separately billed task",
            "final": "target resolution tariff; rate selected by original step1 video input",
            "quantity": "original step1 input video duration; draft video not counted as input"
          },
          "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-5-260628",
          "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.0000128",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "draft_mode": {
                "draft": "480p tariff; separately billed task",
                "final": "target resolution tariff; rate selected by original step1 video input",
                "quantity": "original step1 input video duration; draft video not counted as input"
              },
              "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-5-260628",
              "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,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "draft_mode": {
            "draft": "480p tariff; separately billed task",
            "final": "target resolution tariff; rate selected by original step1 video input",
            "quantity": "original step1 input video duration; draft video not counted as input"
          },
          "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-5-260628",
          "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": "1080p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000234",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "draft_mode": {
                "draft": "480p tariff; separately billed task",
                "final": "target resolution tariff; rate selected by original step1 video input",
                "quantity": "original step1 input video duration; draft video not counted as input"
              },
              "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-5-260628",
              "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": "1080p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 2,
            "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",
          "draft_mode": {
            "draft": "480p tariff; separately billed task",
            "final": "target resolution tariff; rate selected by original step1 video input",
            "quantity": "original step1 input video duration; draft video not counted as input"
          },
          "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-5-260628",
          "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": "1080p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000014",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "draft_mode": {
                "draft": "480p tariff; separately billed task",
                "final": "target resolution tariff; rate selected by original step1 video input",
                "quantity": "original step1 input video duration; draft video not counted as input"
              },
              "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-5-260628",
              "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": "1080p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 3,
            "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.0214000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "video token",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000214",
            "key": "video_tokens",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000214",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0214000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "audio=false",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000214",
            "key": "video_tokens_without_audio",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000214",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0128000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "video_reference_present Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000128",
            "key": "video_tokens_with_video_input",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000128",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          }
        ]
      }
    ],
    "public_id": "bytedance/seedance-2.5",
    "short": "Seedance 2.5 สร้างเสียงและวิดีโอพร้อมกันสำหรับฉากที่ยาวขึ้น การอ้างอิงภาพ/วิดีโอ/เสียงที่หลากหลาย และการแก้ไขเฉพาะจุด ByteDance Seed ระบุการสร้างความยาวสูงสุด 30 วินาที การกำกับด้วยภาพเรนเดอร์ดินเหนียว การควบคุมกล้อง และการต่อฟุตเทจเดิมไว้ในเอกสาร"
  },
  "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.5 สร้างเสียงและวิดีโอพร้อมกันสำหรับฉากที่ยาวขึ้น การอ้างอิงภาพ/วิดีโอ/เสียงที่หลากหลาย และการแก้ไขเฉพาะจุด ByteDance Seed ระบุการสร้างความยาวสูงสุด 30 วินาที การกำกับด้วยภาพเรนเดอร์ดินเหนียว การควบคุมกล้อง และการต่อฟุตเทจเดิมไว้ในเอกสาร",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_exact_canonical_sha256": "8c64e05518e1c9849de6692b9b44f489177eeeb811b44c2a60bd827cad2a0f73",
    "raw_model_js_projection_sha256": "66ae8b1a567ab9fed2c006d458faa592dd19abe33c8e5bfe0f8ecbfed8c50407",
    "raw_model_json_sha256": "8c64e05518e1c9849de6692b9b44f489177eeeb811b44c2a60bd827cad2a0f73",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "d6fe4fab64adb1ad22b71806622d9d96b7eff0b07fd5ed2634f704bb4c23ef7e"
}
