{
  "aboutHtml": "<p>Aleph 2.0 เป็นโมเดลแก้วิดีโอตามบริบทของ Runway เปลี่ยนฟุตเทจถ่ายจริงหรือที่สร้างด้วยคำสั่งและภาพคีย์เฟรมเสริม เป้าหมายคือเปลี่ยนส่วนที่ขอโดยรักษาองค์ประกอบ แสง และรายละเอียดรอบข้าง เหมาะกับแทนสินค้า เปลี่ยนเสื้อผ้า พื้นหลัง แสง หรือแนวภาพโดยไม่สร้างฉากทั้งหมดใหม่จากบรีฟข้อความ</p><p>เริ่มด้วยการกระทำและการเปลี่ยนตรง ๆ เช่น เพิ่ม ลบ แทน เปลี่ยน จัดแสงใหม่ หรือเปลี่ยนสไตล์ สำหรับแทนสินค้าให้ระบุวัตถุที่เห็นและสิ่งแทน แล้วบอกการเคลื่อนไหวมือ กล้อง และสถานที่ที่ต้องคงไว้ สำหรับฉากตามฤดูกาลบอกอากาศหรือแสงที่จะเปลี่ยน คำสั่งสั้นเฉพาะจุดให้เป้าหมายแก้ชัดกว่าขอปรับปรุงทั้งคลิปทั่วไป</p><p>คีย์เฟรมกำหนดรูปลักษณ์ผลแก้ ณ ช่วงหนึ่ง เลือกเฟรมที่เห็นเป้าชัด เช่น ภาพกว้างเมื่อเปลี่ยนพื้นหลัง หรือภาพใกล้สำหรับส่วนเล็กหรือเครื่องประดับ ใน Edit Studio ของ Runway พรีวิวและปรับการแก้ภาพนิ่งก่อนได้ แล้วใช้เวอร์ชันนั้นกำกับการเปลี่ยนวิดีโอ เทียบเฟรมแก้กับต้นฉบับเรื่องรายละเอียดตัวแบบ ขอบ และวัตถุที่ต้องรักษา ก่อนใช้เป็นทิศทางภาพของคลิป</p><p>API ผู้ผลิตรองรับต้นฉบับ 2–30 วินาที และภาพคีย์เฟรมเสริมสูงสุดห้าภาพที่วางตามเวลาที่ระบุ ผูกภาพกับช่วงที่ต้องการ และใช้การเปลี่ยนชัดไม่กี่อย่างแทนเป้าหมายภาพขัดกันหลายชุด Aleph 2.0 แยกจาก Gen-4 Aleph เก่า ผู้ผลิตระบุโมเดล API แยกต่างหาก การแก้ตามคีย์เฟรมก็ต่างจากสั่งโมเดลข้อความสู่วิดีโอสร้างช็อตไม่เกี่ยวกัน</p><p>กฎเตรียมของ Edit Studio ใช้อัตราส่วนทั่วไป ความละเอียดต้นฉบับ 480p–1080p และ 24–30 เฟรมต่อวินาที มีคัตหรือเปลี่ยนช็อตไม่เกินสิบครั้ง แนะนำ 720p หรือ 1080p ฟุตเทจเกิน 30 fps ถูกลดเฟรมเรต และอัปโหลดเกิน 30 วินาทีถูกตัดในอินเทอร์เฟซนั้น นี่คือกฎเตรียมของโฟลว์แก้ผู้ผลิต เลือกช่วงที่แสดงเหตุการณ์ครบและเห็นตัวแบบตลอดส่วนที่การเปลี่ยนต้องต่อเนื่อง</p><p>โมเดลถ่ายทอดพื้นหลัง เสื้อผ้า วัตถุ แสง หรือสไตล์ที่เปลี่ยนไปตลอดฟุตเทจ คำสั่งการเคลื่อนไหวเพิ่มเติมมีประโยชน์เมื่ออยากเพิ่มการกระทำที่ต้นฉบับไม่มีและไม่ได้เกิดจากคีย์เฟรมอย่างเดียว เช่น เอฟเฟกต์ค่อย ๆ พัฒนา หลายงานไม่ต้องบรีฟการเคลื่อนเพิ่ม เพราะโมเดลทำการปรับคีย์เฟรมให้เคลื่อนไหวในฉากเดิม ระบุการเคลื่อนใหม่เฉพาะเจาะจงและแยกจากการเปลี่ยนภาพที่คีย์เฟรมกำหนดแล้ว</p><p>โฟลว์แก้ใช้กับทั้งวิดีโอเป็นค่าเริ่มต้น และจำกัดช่วงไทม์ไลน์ได้ เก็บต้นฉบับไว้เทียบและแก้ติดตามเฉพาะจุด การตรวจควรเลยเฟรมที่เลือกไปถึงต้น กลาง ท้าย ทุกคัต และช่วงเป้าหมายถูกบัง ผลที่ใช้ได้คือคลิปที่การเปลี่ยนคงเส้นคงวาตลอดเวลา ขณะที่สิ่งสำคัญที่ไม่เปลี่ยนยังมีบทบาทเดิม</p><p>MP4 เป็นผลมาตรฐานสำหรับเล่นและแชร์ โฟลว์ Edit Studio แบบทั้งวิดีโอที่เข้าเกณฑ์ยังส่ง ProRes เป็น MOV พร้อมเสียง PCM หรือ ZIP ภาพ PNG รายเฟรมเพื่อคอมโพสิตได้ โปรไฟล์ ProRes ตั้งแต่ 422 Proxy ถึง 4444 XQ งานจำกัดช่วงไทม์ไลน์คืน MP4 และเลือกรูปแบบตอนเริ่มสร้าง ไม่ใช่เปลี่ยนหลังเสร็จ เลือกส่งออกตามงานตัดต่อถัดไป โดยแยกจากความสามารถแก้ภาพหลัก</p><p>งานแก้ที่มีประโยชน์ต้องเทียบการแทน แสง หรือสไตล์กับคีย์เฟรม และตรวจรายละเอียดรอบข้างที่ไม่ต้องเปลี่ยน เก็บเวอร์ชันสำเร็จ แล้วแก้คำสั่งหรือเฟรมที่ทำให้คลาดเคลื่อน บทบาท Aleph 2.0 คือเปลี่ยนฟุตเทจผ่านเป้าภาพชัด ส่วนซาวด์แทร็กใหม่ การเปลี่ยนพฤติกรรมแอป หรือโฟลว์ส่งงานออกอากาศเป็นงานเพิ่มเติมรอบวิดีโอที่แก้แล้ว</p>",
  "aboutText": "Aleph 2.0 เป็นโมเดลแก้วิดีโอตามบริบทของ Runway เปลี่ยนฟุตเทจถ่ายจริงหรือที่สร้างด้วยคำสั่งและภาพคีย์เฟรมเสริม เป้าหมายคือเปลี่ยนส่วนที่ขอโดยรักษาองค์ประกอบ แสง และรายละเอียดรอบข้าง เหมาะกับแทนสินค้า เปลี่ยนเสื้อผ้า พื้นหลัง แสง หรือแนวภาพโดยไม่สร้างฉากทั้งหมดใหม่จากบรีฟข้อความ\n\nเริ่มด้วยการกระทำและการเปลี่ยนตรง ๆ เช่น เพิ่ม ลบ แทน เปลี่ยน จัดแสงใหม่ หรือเปลี่ยนสไตล์ สำหรับแทนสินค้าให้ระบุวัตถุที่เห็นและสิ่งแทน แล้วบอกการเคลื่อนไหวมือ กล้อง และสถานที่ที่ต้องคงไว้ สำหรับฉากตามฤดูกาลบอกอากาศหรือแสงที่จะเปลี่ยน คำสั่งสั้นเฉพาะจุดให้เป้าหมายแก้ชัดกว่าขอปรับปรุงทั้งคลิปทั่วไป\n\nคีย์เฟรมกำหนดรูปลักษณ์ผลแก้ ณ ช่วงหนึ่ง เลือกเฟรมที่เห็นเป้าชัด เช่น ภาพกว้างเมื่อเปลี่ยนพื้นหลัง หรือภาพใกล้สำหรับส่วนเล็กหรือเครื่องประดับ ใน Edit Studio ของ Runway พรีวิวและปรับการแก้ภาพนิ่งก่อนได้ แล้วใช้เวอร์ชันนั้นกำกับการเปลี่ยนวิดีโอ เทียบเฟรมแก้กับต้นฉบับเรื่องรายละเอียดตัวแบบ ขอบ และวัตถุที่ต้องรักษา ก่อนใช้เป็นทิศทางภาพของคลิป\n\nAPI ผู้ผลิตรองรับต้นฉบับ 2–30 วินาที และภาพคีย์เฟรมเสริมสูงสุดห้าภาพที่วางตามเวลาที่ระบุ ผูกภาพกับช่วงที่ต้องการ และใช้การเปลี่ยนชัดไม่กี่อย่างแทนเป้าหมายภาพขัดกันหลายชุด Aleph 2.0 แยกจาก Gen-4 Aleph เก่า ผู้ผลิตระบุโมเดล API แยกต่างหาก การแก้ตามคีย์เฟรมก็ต่างจากสั่งโมเดลข้อความสู่วิดีโอสร้างช็อตไม่เกี่ยวกัน\n\nกฎเตรียมของ Edit Studio ใช้อัตราส่วนทั่วไป ความละเอียดต้นฉบับ 480p–1080p และ 24–30 เฟรมต่อวินาที มีคัตหรือเปลี่ยนช็อตไม่เกินสิบครั้ง แนะนำ 720p หรือ 1080p ฟุตเทจเกิน 30 fps ถูกลดเฟรมเรต และอัปโหลดเกิน 30 วินาทีถูกตัดในอินเทอร์เฟซนั้น นี่คือกฎเตรียมของโฟลว์แก้ผู้ผลิต เลือกช่วงที่แสดงเหตุการณ์ครบและเห็นตัวแบบตลอดส่วนที่การเปลี่ยนต้องต่อเนื่อง\n\nโมเดลถ่ายทอดพื้นหลัง เสื้อผ้า วัตถุ แสง หรือสไตล์ที่เปลี่ยนไปตลอดฟุตเทจ คำสั่งการเคลื่อนไหวเพิ่มเติมมีประโยชน์เมื่ออยากเพิ่มการกระทำที่ต้นฉบับไม่มีและไม่ได้เกิดจากคีย์เฟรมอย่างเดียว เช่น เอฟเฟกต์ค่อย ๆ พัฒนา หลายงานไม่ต้องบรีฟการเคลื่อนเพิ่ม เพราะโมเดลทำการปรับคีย์เฟรมให้เคลื่อนไหวในฉากเดิม ระบุการเคลื่อนใหม่เฉพาะเจาะจงและแยกจากการเปลี่ยนภาพที่คีย์เฟรมกำหนดแล้ว\n\nโฟลว์แก้ใช้กับทั้งวิดีโอเป็นค่าเริ่มต้น และจำกัดช่วงไทม์ไลน์ได้ เก็บต้นฉบับไว้เทียบและแก้ติดตามเฉพาะจุด การตรวจควรเลยเฟรมที่เลือกไปถึงต้น กลาง ท้าย ทุกคัต และช่วงเป้าหมายถูกบัง ผลที่ใช้ได้คือคลิปที่การเปลี่ยนคงเส้นคงวาตลอดเวลา ขณะที่สิ่งสำคัญที่ไม่เปลี่ยนยังมีบทบาทเดิม\n\nMP4 เป็นผลมาตรฐานสำหรับเล่นและแชร์ โฟลว์ Edit Studio แบบทั้งวิดีโอที่เข้าเกณฑ์ยังส่ง ProRes เป็น MOV พร้อมเสียง PCM หรือ ZIP ภาพ PNG รายเฟรมเพื่อคอมโพสิตได้ โปรไฟล์ ProRes ตั้งแต่ 422 Proxy ถึง 4444 XQ งานจำกัดช่วงไทม์ไลน์คืน MP4 และเลือกรูปแบบตอนเริ่มสร้าง ไม่ใช่เปลี่ยนหลังเสร็จ เลือกส่งออกตามงานตัดต่อถัดไป โดยแยกจากความสามารถแก้ภาพหลัก\n\nงานแก้ที่มีประโยชน์ต้องเทียบการแทน แสง หรือสไตล์กับคีย์เฟรม และตรวจรายละเอียดรอบข้างที่ไม่ต้องเปลี่ยน เก็บเวอร์ชันสำเร็จ แล้วแก้คำสั่งหรือเฟรมที่ทำให้คลาดเคลื่อน บทบาท Aleph 2.0 คือเปลี่ยนฟุตเทจผ่านเป้าภาพชัด ส่วนซาวด์แทร็กใหม่ การเปลี่ยนพฤติกรรมแอป หรือโฟลว์ส่งงานออกอากาศเป็นงานเพิ่มเติมรอบวิดีโอที่แก้แล้ว",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "5ad2ef04736d82b5a849676527552d2998f9c5a4d694a70cf388868ca556b451",
    "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\">Runway: Aleph 2.0</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>Runway /</span><code>runway/aleph-2</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|runway%2Faleph-2\">วิดีโอ</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\">Aleph 2.0 แก้วิดีโอเดิมด้วยคำสั่งข้อความเฉพาะจุดและภาพคีย์เฟรมกำกับ ใช้แทนวัตถุ เปลี่ยนพื้นหลัง เสื้อผ้า แสง หรือสไตล์ พร้อมระบุรายละเอียดฉากเดิมที่ต้องคงไว้</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>Aleph 2.0 เป็นโมเดลแก้วิดีโอตามบริบทของ Runway เปลี่ยนฟุตเทจถ่ายจริงหรือที่สร้างด้วยคำสั่งและภาพคีย์เฟรมเสริม เป้าหมายคือเปลี่ยนส่วนที่ขอโดยรักษาองค์ประกอบ แสง และรายละเอียดรอบข้าง เหมาะกับแทนสินค้า เปลี่ยนเสื้อผ้า พื้นหลัง แสง หรือแนวภาพโดยไม่สร้างฉากทั้งหมดใหม่จากบรีฟข้อความ</p><p>เริ่มด้วยการกระทำและการเปลี่ยนตรง ๆ เช่น เพิ่ม ลบ แทน เปลี่ยน จัดแสงใหม่ หรือเปลี่ยนสไตล์ สำหรับแทนสินค้าให้ระบุวัตถุที่เห็นและสิ่งแทน แล้วบอกการเคลื่อนไหวมือ กล้อง และสถานที่ที่ต้องคงไว้ สำหรับฉากตามฤดูกาลบอกอากาศหรือแสงที่จะเปลี่ยน คำสั่งสั้นเฉพาะจุดให้เป้าหมายแก้ชัดกว่าขอปรับปรุงทั้งคลิปทั่วไป</p><p>คีย์เฟรมกำหนดรูปลักษณ์ผลแก้ ณ ช่วงหนึ่ง เลือกเฟรมที่เห็นเป้าชัด เช่น ภาพกว้างเมื่อเปลี่ยนพื้นหลัง หรือภาพใกล้สำหรับส่วนเล็กหรือเครื่องประดับ ใน Edit Studio ของ Runway พรีวิวและปรับการแก้ภาพนิ่งก่อนได้ แล้วใช้เวอร์ชันนั้นกำกับการเปลี่ยนวิดีโอ เทียบเฟรมแก้กับต้นฉบับเรื่องรายละเอียดตัวแบบ ขอบ และวัตถุที่ต้องรักษา ก่อนใช้เป็นทิศทางภาพของคลิป</p><p>API ผู้ผลิตรองรับต้นฉบับ 2–30 วินาที และภาพคีย์เฟรมเสริมสูงสุดห้าภาพที่วางตามเวลาที่ระบุ ผูกภาพกับช่วงที่ต้องการ และใช้การเปลี่ยนชัดไม่กี่อย่างแทนเป้าหมายภาพขัดกันหลายชุด Aleph 2.0 แยกจาก Gen-4 Aleph เก่า ผู้ผลิตระบุโมเดล API แยกต่างหาก การแก้ตามคีย์เฟรมก็ต่างจากสั่งโมเดลข้อความสู่วิดีโอสร้างช็อตไม่เกี่ยวกัน</p><p>กฎเตรียมของ Edit Studio ใช้อัตราส่วนทั่วไป ความละเอียดต้นฉบับ 480p–1080p และ 24–30 เฟรมต่อวินาที มีคัตหรือเปลี่ยนช็อตไม่เกินสิบครั้ง แนะนำ 720p หรือ 1080p ฟุตเทจเกิน 30 fps ถูกลดเฟรมเรต และอัปโหลดเกิน 30 วินาทีถูกตัดในอินเทอร์เฟซนั้น นี่คือกฎเตรียมของโฟลว์แก้ผู้ผลิต เลือกช่วงที่แสดงเหตุการณ์ครบและเห็นตัวแบบตลอดส่วนที่การเปลี่ยนต้องต่อเนื่อง</p><p>โมเดลถ่ายทอดพื้นหลัง เสื้อผ้า วัตถุ แสง หรือสไตล์ที่เปลี่ยนไปตลอดฟุตเทจ คำสั่งการเคลื่อนไหวเพิ่มเติมมีประโยชน์เมื่ออยากเพิ่มการกระทำที่ต้นฉบับไม่มีและไม่ได้เกิดจากคีย์เฟรมอย่างเดียว เช่น เอฟเฟกต์ค่อย ๆ พัฒนา หลายงานไม่ต้องบรีฟการเคลื่อนเพิ่ม เพราะโมเดลทำการปรับคีย์เฟรมให้เคลื่อนไหวในฉากเดิม ระบุการเคลื่อนใหม่เฉพาะเจาะจงและแยกจากการเปลี่ยนภาพที่คีย์เฟรมกำหนดแล้ว</p><p>โฟลว์แก้ใช้กับทั้งวิดีโอเป็นค่าเริ่มต้น และจำกัดช่วงไทม์ไลน์ได้ เก็บต้นฉบับไว้เทียบและแก้ติดตามเฉพาะจุด การตรวจควรเลยเฟรมที่เลือกไปถึงต้น กลาง ท้าย ทุกคัต และช่วงเป้าหมายถูกบัง ผลที่ใช้ได้คือคลิปที่การเปลี่ยนคงเส้นคงวาตลอดเวลา ขณะที่สิ่งสำคัญที่ไม่เปลี่ยนยังมีบทบาทเดิม</p><p>MP4 เป็นผลมาตรฐานสำหรับเล่นและแชร์ โฟลว์ Edit Studio แบบทั้งวิดีโอที่เข้าเกณฑ์ยังส่ง ProRes เป็น MOV พร้อมเสียง PCM หรือ ZIP ภาพ PNG รายเฟรมเพื่อคอมโพสิตได้ โปรไฟล์ ProRes ตั้งแต่ 422 Proxy ถึง 4444 XQ งานจำกัดช่วงไทม์ไลน์คืน MP4 และเลือกรูปแบบตอนเริ่มสร้าง ไม่ใช่เปลี่ยนหลังเสร็จ เลือกส่งออกตามงานตัดต่อถัดไป โดยแยกจากความสามารถแก้ภาพหลัก</p><p>งานแก้ที่มีประโยชน์ต้องเทียบการแทน แสง หรือสไตล์กับคีย์เฟรม และตรวจรายละเอียดรอบข้างที่ไม่ต้องเปลี่ยน เก็บเวอร์ชันสำเร็จ แล้วแก้คำสั่งหรือเฟรมที่ทำให้คลาดเคลื่อน บทบาท Aleph 2.0 คือเปลี่ยนฟุตเทจผ่านเป้าภาพชัด ส่วนซาวด์แทร็กใหม่ การเปลี่ยนพฤติกรรมแอป หรือโฟลว์ส่งงานออกอากาศเป็นงานเพิ่มเติมรอบวิดีโอที่แก้แล้ว</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">ใช้งานได้ใน Ailoot · อินพุตและเมธอด</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · วิดีโอ</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>ขาเข้า</dt><dd><code>text</code>, <code>image</code>, <code>audio</code>, <code>video</code></dd></div><div><dt>ขาออก</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th><th>ข้อกำหนด</th><th>ค่าและข้อจำกัด</th><th>ค่าเริ่มต้น</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>runway/aleph-2</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>array</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>จำนวนรายการขั้นต่ำ: 1</div><div>จำนวนรายการสูงสุด: 1</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">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><div>ความยาวขั้นต่ำ: 1</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>พารามิเตอร์และวงจรการทำงานของเมธอด</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>พารามิเตอร์</th><th>ข้อกำหนด</th></tr></thead><tbody><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>content_type</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>application/json</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>required</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>model, input_references, prompt</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>material_types</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>text, image, audio, video</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>material_conditions</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ใช้ URL เนื้อหาแอสเซ็ตวิดีโอจริงที่เสร็จสมบูรณ์และเป็นของคุณเพียงหนึ่งรายการ พร้อมลายเซ็นที่ส่งกลับ เจ้าของแอสเซ็ต ชนิด และหลักฐานไบต์ที่จัดเก็บต้องตรงกับคำขอ</td></tr></tbody></table></div><p>วงจรการทำงาน: <code>asynchronous_job_then_owned_outputs</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code> · id หรือ polling_url จริงที่ส่งกลับ</p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">ราคา</h3><div class=\"card-result-process\" data-billing-basis><h5>วิธีคำนวณค่าบริการสุดท้าย</h5><p class=\"note-s\">อัตราที่แสดงใช้ประมาณการค่าใช้จ่ายก่อนการสร้างผลลัพธ์ ยอดเรียกเก็บสุดท้ายคำนวณจากค่าใช้จ่ายที่บันทึกไว้สำหรับการสร้างผลลัพธ์ครั้งเดิม ระยะเวลาของผลลัพธ์ที่วัดได้และปริมาณที่คาดการณ์ไว้ไม่ใช่ปริมาณสุดท้ายที่ใช้คิดค่าบริการ</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก</p><dl data-price-conditions><dt>โหมดรวดเร็ว</dt><dd>ไม่ได้ระบุ <span class=\"note-s\">เมื่อเลือกโหมดรวดเร็ว</span></dd><dt>โหมดยืดหยุ่น</dt><dd>ไม่ได้ระบุ <span class=\"note-s\">เมื่อเลือกโหมด flex</span></dd><dt>ระดับการใช้เหตุผลสูงสุด</dt><dd>ไม่ได้ระบุ <span class=\"note-s\">เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด</span></dd></dl></div><div data-declared-tariff-pricing><h4>อัตราประมาณการเพื่อเปรียบเทียบ</h4><h4>ราคาตามการตั้งค่า</h4><p class=\"note-s\">เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน ใช้กฎค่าบริการขั้นต่ำที่แสดงสำหรับการตั้งค่านั้น</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>การตั้งค่า</th><th>ตารางอัตราค่าบริการ</th><th>ปริมาณคาดการณ์</th><th>รายการค่าบริการ</th><th>หน่วยคิดค่าบริการ</th><th>เงื่อนไขคิดค่าบริการ</th><th>กฎค่าบริการขั้นต่ำ</th><th>ค่าบริการ</th></tr></thead><tbody><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>อัตราค่าบริการโทเคนพื้นฐาน</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>อัตราพื้นฐาน</td><td data-cell-label=\"ปริมาณคาดการณ์\"><span class=\"card-cell-label\">ปริมาณคาดการณ์</span>—</td><td data-cell-label=\"รายการค่าบริการ\"><span class=\"card-cell-label\">รายการค่าบริการ</span>—</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>—</td><td data-cell-label=\"เงื่อนไขคิดค่าบริการ\"><span class=\"card-cell-label\">เงื่อนไขคิดค่าบริการ</span>—</td><td data-cell-label=\"กฎค่าบริการขั้นต่ำ\"><span class=\"card-cell-label\">กฎค่าบริการขั้นต่ำ</span>—</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาเข้า · โทเค็นอินพุต · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาออก · โทเค็นเอาต์พุต · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การอ่านแคช · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การเขียนแคช · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การเขียนแคช, 1 ชั่วโมง · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div></td></tr><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>ราคาวิดีโอ</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>—</td><td data-cell-label=\"ปริมาณคาดการณ์\"><span class=\"card-cell-label\">ปริมาณคาดการณ์</span>—</td><td data-cell-label=\"รายการค่าบริการ\"><span class=\"card-cell-label\">รายการค่าบริการ</span>—</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>ต่อวินาทีของวิดีโอ</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.56</b> <span class=\"price-unit\">ต่อวินาทีของวิดีโอ</span></div></td></tr><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>ยอดขั้นต่ำต่อการสร้าง</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>—</td><td data-cell-label=\"ปริมาณคาดการณ์\"><span class=\"card-cell-label\">ปริมาณคาดการณ์</span>—</td><td data-cell-label=\"รายการค่าบริการ\"><span class=\"card-cell-label\">รายการค่าบริการ</span>ค่าบริการขั้นต่ำ</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>ค่าบริการสร้างขั้นต่ำ</td><td data-cell-label=\"เงื่อนไขคิดค่าบริการ\"><span class=\"card-cell-label\">เงื่อนไขคิดค่าบริการ</span>ไม่มีการระบุเงื่อนไขเพิ่มเติมในคีย์ราคานี้</td><td data-cell-label=\"กฎค่าบริการขั้นต่ำ\"><span class=\"card-cell-label\">กฎค่าบริการขั้นต่ำ</span>ใช่</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>total · ค่าใช้จ่ายขั้นต่ำต่อการสร้าง · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>$1.12</b> <span class=\"price-unit\">ค่าบริการสร้างขั้นต่ำ</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>—</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.56</b> <span class=\"price-unit\">ประมาณการก่อนสร้าง</span></div><p class=\"note-s\">ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย <a href=\"/docs/th/billing/reserve/\">วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">ตัวอย่างคำขอ</h3><h4>Ailoot Ultra · วิดีโอ</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"ตัวเลือกโค้ด\"><button class=\"cg-tab\" id=\"model-code-2561-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2561-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-2561-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2561-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_REFERENCES_JSON\n: &quot;${AILOOT_PROMPT:?Set the actual documented input value}&quot;\nexport AILOOT_PROMPT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;runway/aleph-2&#39;, &#39;input_references&#39;: &#39;${ACTUAL_OWNED_INPUT_REFERENCES}&#39;, &#39;prompt&#39;: &#39;${ACTUAL_EDIT_PROMPT}&#39;}\nrequest[&#39;input_references&#39;]=json.loads(os.environ[&#39;AILOOT_INPUT_REFERENCES_JSON&#39;])\nrequest[&#39;prompt&#39;]=os.environ[&#39;AILOOT_PROMPT&#39;]\nPath(&#39;request.json&#39;).write_text(json.dumps(request,ensure_ascii=False),encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">รับและบันทึกผลลัพธ์</h3><h4>Ailoot Ultra · วิดีโอ</h4><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li></ul><h5>บันทึกไฟล์ที่สร้างเสร็จทั้งหมด</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"ตัวเลือกโค้ด\"><button class=\"cg-tab\" id=\"model-code-2562-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2562-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-2562-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2562-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}&quot;\nexport AILOOT_STATUS_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[&quot;AILOOT_STATUS_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose the actual completed status file&quot;)\nr=json.loads(f.read_text())\nif r.get(&quot;status&quot;)!=&quot;completed&quot; or not isinstance(r.get(&quot;data&quot;),list) or not r[&quot;data&quot;]:raise SystemExit(&quot;Wait for a completed status with asset paths&quot;)\nurls=[]\nfor x in r[&quot;data&quot;]:\n    if not isinstance(x,str) or &quot;\\n&quot; in x or &quot;\\r&quot; in x:raise SystemExit(&quot;Invalid asset path&quot;)\n    u=urljoin(&quot;https://api.ailoot.ai&quot;,x)\n    z=urlsplit(u)\n    if z.scheme!=&quot;https&quot; or z.netloc!=&quot;api.ailoot.ai&quot; or z.username or z.password:raise SystemExit(&quot;Use the actual Ailoot asset paths from status&quot;)\n    urls.append(u)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; \\\n    -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o &quot;video-${index}.mp4&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\n</code></pre></div></div></div><div class=\"card-result-process\" data-all-results><h5>เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด</h5><p class=\"note-s\">บันทึกวิดีโอที่สร้างเสร็จหรือไฟล์ที่ส่งกลับมาทุกไฟล์ และดึงไฟล์สื่อจากทุก URL ที่ส่งกลับมาจริง</p><p class=\"note-s\">เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ</h5><p class=\"note-s\">เก็บ X-Client-Request-ID, X-Ailoot-Task-Id และ id/polling_url จริงที่ส่งกลับ ดำเนินงานเดิมต่อ อย่าส่งคำขอสร้างซ้ำ</p></div><details class=\"card-about\" data-output-fields><summary>ฟิลด์การตอบกลับ</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">outputs[]</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">ชื่ออื่น</h3><h4>ชื่ออื่นของโมเดล</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=runway%2Faleph-2&amp;route=Ultra&amp;caller=runway%2Faleph-2&amp;fmt=videos\"><code>runway/aleph-2</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=runway%2Faleph-2&amp;route=Ultra&amp;caller=runway%2Faleph-2&amp;fmt=videos\"><code>runway/aleph-2</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "runway/aleph-2",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "runway/aleph-2",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|runway%2Faleph-2",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "อัตราที่แสดงใช้ประมาณการค่าใช้จ่ายก่อนการสร้างผลลัพธ์ ยอดเรียกเก็บสุดท้ายคำนวณจากค่าใช้จ่ายที่บันทึกไว้สำหรับการสร้างผลลัพธ์ครั้งเดิม ระยะเวลาของผลลัพธ์ที่วัดได้และปริมาณที่คาดการณ์ไว้ไม่ใช่ปริมาณสุดท้ายที่ใช้คิดค่าบริการ",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "เก็บ X-Client-Request-ID, X-Ailoot-Task-Id และ id/polling_url จริงที่ส่งกลับ ดำเนินงานเดิมต่อ อย่าส่งคำขอสร้างซ้ำ"
            },
            "outputs": {
              "all_results": "เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "runway/aleph-2"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "const": "video_url"
                    },
                    "video_url": {
                      "additionalProperties": false,
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "type",
                    "video_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 1,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input_references": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "const": "video_url"
                      },
                      "video_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "type",
                      "video_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "runway/aleph-2"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "description": "Actual nonblank edit prompt; maximum10000 UTF-8 bytes.",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_references",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "runway/aleph-2",
                "prompt": "${ACTUAL_EDIT_PROMPT}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "ใช้ URL เนื้อหาแอสเซ็ตวิดีโอจริงที่เสร็จสมบูรณ์และเป็นของคุณเพียงหนึ่งรายการ พร้อมลายเซ็นที่ส่งกลับ เจ้าของแอสเซ็ต ชนิด และหลักฐานไบต์ที่จัดเก็บต้องตรงกับคำขอ"
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "prompt"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "id หรือ polling_url จริงที่ส่งกลับ",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "ไม่มีการระบุเงื่อนไขเพิ่มเติมในคีย์ราคานี้",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.56",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.56",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "ค่าบริการขั้นต่ำต่อการสร้าง ใช้เป็นยอดขั้นต่ำ ไม่ใช่ค่าธรรมเนียมเพิ่มเติม ไม่ได้หมายความว่ามีระยะเวลาขั้นต่ำ",
            "dimensions": {
              "billing_component_role": "minimum",
              "conditions": "No additional condition is declared in this pricing key.",
              "is_floor_not_additive_charge": true,
              "quoted_unit": "minimum generation charge"
            },
            "label": "ยอดขั้นต่ำต่อการสร้าง",
            "units": [
              {
                "amount": "1.12",
                "amount_unit": "usd_per_generation",
                "billing_input": false,
                "estimate_only": true,
                "key": "minimum_cents_per_generation",
                "label": "Generation minimum",
                "native_amount_usd_per_unit": "1.12",
                "native_quantity": 1,
                "public_unit_label": "minimum generation charge",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "total",
                "unit": "generation"
              }
            ]
          },
          {
            "basis": "ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "ต้นทุนการสร้างโดยประมาณ",
            "units": [
              {
                "amount": "0.56",
                "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.56",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\n: \"${AILOOT_PROMPT:?Set the actual documented input value}\"\nexport AILOOT_PROMPT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'runway/aleph-2', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'prompt': '${ACTUAL_EDIT_PROMPT}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['prompt']=os.environ['AILOOT_PROMPT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "วิดีโอ",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.56",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.56",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Minimum charge per generation; apply it as a minimum, not an extra fee. No minimum duration is implied.",
            "dimensions": {
              "billing_component_role": "minimum",
              "conditions": "No additional condition is declared in this pricing key.",
              "is_floor_not_additive_charge": true,
              "quoted_unit": "minimum generation charge"
            },
            "label": "Generation minimum",
            "units": [
              {
                "amount": "1.12",
                "amount_unit": "usd_per_generation",
                "billing_input": false,
                "estimate_only": true,
                "key": "minimum_cents_per_generation",
                "label": "Generation minimum",
                "native_amount_usd_per_unit": "1.12",
                "native_quantity": 1,
                "public_unit_label": "minimum generation charge",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "total",
                "unit": "generation"
              }
            ]
          },
          {
            "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.56",
                "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.56",
                "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": "runway/aleph-2",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.56",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.56",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "1.12",
            "amount_unit": "usd_per_generation",
            "billing_input": false,
            "estimate_only": true,
            "key": "minimum_cents_per_generation",
            "label": "Generation minimum",
            "native_amount_usd_per_unit": "1.12",
            "native_quantity": 1,
            "public_unit_label": "minimum generation charge",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "total",
            "unit": "generation"
          },
          {
            "amount": "0.56",
            "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.56",
            "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": "runway/aleph-2",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "21b07ade1d0d7ebfe5dc1a0f8d224eef5da64e388562439513d00ed5afd0cff1",
    "input_html_sha256": "8cf84ba904eecf3f40dd92f50da25fcb522e876702a3011bb9de59180173ba56",
    "private_audit_sha256": "e310c1588294ef4b3d1e2337c05d0dbbfd7275799bd1eff34e016bff1e23ee2a",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/runway-aleph-2/",
    "description": "Aleph 2.0 แก้วิดีโอเดิมด้วยคำสั่งข้อความเฉพาะจุดและภาพคีย์เฟรมกำกับ ใช้แทนวัตถุ เปลี่ยนพื้นหลัง เสื้อผ้า แสง หรือสไตล์ พร้อมระบุรายละเอียดฉากเดิมที่ต้องคงไว้",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/runway-aleph-2/index.md",
    "title": "Runway: Aleph 2.0 — Ailoot",
    "url": "https://ailoot.ai/models/th/runway-aleph-2/"
  },
  "rawModel": {
    "about": "Aleph 2.0 เป็นโมเดลแก้วิดีโอตามบริบทของ Runway เปลี่ยนฟุตเทจถ่ายจริงหรือที่สร้างด้วยคำสั่งและภาพคีย์เฟรมเสริม เป้าหมายคือเปลี่ยนส่วนที่ขอโดยรักษาองค์ประกอบ แสง และรายละเอียดรอบข้าง เหมาะกับแทนสินค้า เปลี่ยนเสื้อผ้า พื้นหลัง แสง หรือแนวภาพโดยไม่สร้างฉากทั้งหมดใหม่จากบรีฟข้อความ\n\nเริ่มด้วยการกระทำและการเปลี่ยนตรง ๆ เช่น เพิ่ม ลบ แทน เปลี่ยน จัดแสงใหม่ หรือเปลี่ยนสไตล์ สำหรับแทนสินค้าให้ระบุวัตถุที่เห็นและสิ่งแทน แล้วบอกการเคลื่อนไหวมือ กล้อง และสถานที่ที่ต้องคงไว้ สำหรับฉากตามฤดูกาลบอกอากาศหรือแสงที่จะเปลี่ยน คำสั่งสั้นเฉพาะจุดให้เป้าหมายแก้ชัดกว่าขอปรับปรุงทั้งคลิปทั่วไป\n\nคีย์เฟรมกำหนดรูปลักษณ์ผลแก้ ณ ช่วงหนึ่ง เลือกเฟรมที่เห็นเป้าชัด เช่น ภาพกว้างเมื่อเปลี่ยนพื้นหลัง หรือภาพใกล้สำหรับส่วนเล็กหรือเครื่องประดับ ใน Edit Studio ของ Runway พรีวิวและปรับการแก้ภาพนิ่งก่อนได้ แล้วใช้เวอร์ชันนั้นกำกับการเปลี่ยนวิดีโอ เทียบเฟรมแก้กับต้นฉบับเรื่องรายละเอียดตัวแบบ ขอบ และวัตถุที่ต้องรักษา ก่อนใช้เป็นทิศทางภาพของคลิป\n\nAPI ผู้ผลิตรองรับต้นฉบับ 2–30 วินาที และภาพคีย์เฟรมเสริมสูงสุดห้าภาพที่วางตามเวลาที่ระบุ ผูกภาพกับช่วงที่ต้องการ และใช้การเปลี่ยนชัดไม่กี่อย่างแทนเป้าหมายภาพขัดกันหลายชุด Aleph 2.0 แยกจาก Gen-4 Aleph เก่า ผู้ผลิตระบุโมเดล API แยกต่างหาก การแก้ตามคีย์เฟรมก็ต่างจากสั่งโมเดลข้อความสู่วิดีโอสร้างช็อตไม่เกี่ยวกัน\n\nกฎเตรียมของ Edit Studio ใช้อัตราส่วนทั่วไป ความละเอียดต้นฉบับ 480p–1080p และ 24–30 เฟรมต่อวินาที มีคัตหรือเปลี่ยนช็อตไม่เกินสิบครั้ง แนะนำ 720p หรือ 1080p ฟุตเทจเกิน 30 fps ถูกลดเฟรมเรต และอัปโหลดเกิน 30 วินาทีถูกตัดในอินเทอร์เฟซนั้น นี่คือกฎเตรียมของโฟลว์แก้ผู้ผลิต เลือกช่วงที่แสดงเหตุการณ์ครบและเห็นตัวแบบตลอดส่วนที่การเปลี่ยนต้องต่อเนื่อง\n\nโมเดลถ่ายทอดพื้นหลัง เสื้อผ้า วัตถุ แสง หรือสไตล์ที่เปลี่ยนไปตลอดฟุตเทจ คำสั่งการเคลื่อนไหวเพิ่มเติมมีประโยชน์เมื่ออยากเพิ่มการกระทำที่ต้นฉบับไม่มีและไม่ได้เกิดจากคีย์เฟรมอย่างเดียว เช่น เอฟเฟกต์ค่อย ๆ พัฒนา หลายงานไม่ต้องบรีฟการเคลื่อนเพิ่ม เพราะโมเดลทำการปรับคีย์เฟรมให้เคลื่อนไหวในฉากเดิม ระบุการเคลื่อนใหม่เฉพาะเจาะจงและแยกจากการเปลี่ยนภาพที่คีย์เฟรมกำหนดแล้ว\n\nโฟลว์แก้ใช้กับทั้งวิดีโอเป็นค่าเริ่มต้น และจำกัดช่วงไทม์ไลน์ได้ เก็บต้นฉบับไว้เทียบและแก้ติดตามเฉพาะจุด การตรวจควรเลยเฟรมที่เลือกไปถึงต้น กลาง ท้าย ทุกคัต และช่วงเป้าหมายถูกบัง ผลที่ใช้ได้คือคลิปที่การเปลี่ยนคงเส้นคงวาตลอดเวลา ขณะที่สิ่งสำคัญที่ไม่เปลี่ยนยังมีบทบาทเดิม\n\nMP4 เป็นผลมาตรฐานสำหรับเล่นและแชร์ โฟลว์ Edit Studio แบบทั้งวิดีโอที่เข้าเกณฑ์ยังส่ง ProRes เป็น MOV พร้อมเสียง PCM หรือ ZIP ภาพ PNG รายเฟรมเพื่อคอมโพสิตได้ โปรไฟล์ ProRes ตั้งแต่ 422 Proxy ถึง 4444 XQ งานจำกัดช่วงไทม์ไลน์คืน MP4 และเลือกรูปแบบตอนเริ่มสร้าง ไม่ใช่เปลี่ยนหลังเสร็จ เลือกส่งออกตามงานตัดต่อถัดไป โดยแยกจากความสามารถแก้ภาพหลัก\n\nงานแก้ที่มีประโยชน์ต้องเทียบการแทน แสง หรือสไตล์กับคีย์เฟรม และตรวจรายละเอียดรอบข้างที่ไม่ต้องเปลี่ยน เก็บเวอร์ชันสำเร็จ แล้วแก้คำสั่งหรือเฟรมที่ทำให้คลาดเคลื่อน บทบาท Aleph 2.0 คือเปลี่ยนฟุตเทจผ่านเป้าภาพชัด ส่วนซาวด์แทร็กใหม่ การเปลี่ยนพฤติกรรมแอป หรือโฟลว์ส่งงานออกอากาศเป็นงานเพิ่มเติมรอบวิดีโอที่แก้แล้ว",
    "alias_of": null,
    "aliases": [],
    "author": "Runway",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.56",
            "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.56",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "ดูราคาตามการกำหนดค่าแบบครบถ้วนในรายละเอียด"
      }
    ],
    "ctx": null,
    "formats": [
      "videos"
    ],
    "id": "runway/aleph-2",
    "input": [
      "text",
      "image",
      "audio",
      "video"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "อัตราที่แสดงใช้ประมาณการค่าใช้จ่ายก่อนการสร้างผลลัพธ์ ยอดเรียกเก็บสุดท้ายคำนวณจากค่าใช้จ่ายที่บันทึกไว้สำหรับการสร้างผลลัพธ์ครั้งเดิม ระยะเวลาของผลลัพธ์ที่วัดได้และปริมาณที่คาดการณ์ไว้ไม่ใช่ปริมาณสุดท้ายที่ใช้คิดค่าบริการ",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "เก็บ X-Client-Request-ID, X-Ailoot-Task-Id และ id/polling_url จริงที่ส่งกลับ ดำเนินงานเดิมต่อ อย่าส่งคำขอสร้างซ้ำ"
            },
            "outputs": {
              "all_results": "เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "runway/aleph-2"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "const": "video_url"
                    },
                    "video_url": {
                      "additionalProperties": false,
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "type",
                    "video_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 1,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input_references": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "const": "video_url"
                      },
                      "video_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "type",
                      "video_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "runway/aleph-2"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "description": "Actual nonblank edit prompt; maximum10000 UTF-8 bytes.",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_references",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "runway/aleph-2",
                "prompt": "${ACTUAL_EDIT_PROMPT}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "ใช้ URL เนื้อหาแอสเซ็ตวิดีโอจริงที่เสร็จสมบูรณ์และเป็นของคุณเพียงหนึ่งรายการ พร้อมลายเซ็นที่ส่งกลับ เจ้าของแอสเซ็ต ชนิด และหลักฐานไบต์ที่จัดเก็บต้องตรงกับคำขอ"
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "prompt"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "id หรือ polling_url จริงที่ส่งกลับ",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "ไม่มีการระบุเงื่อนไขเพิ่มเติมในคีย์ราคานี้",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.56",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.56",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "ค่าบริการขั้นต่ำต่อการสร้าง ใช้เป็นยอดขั้นต่ำ ไม่ใช่ค่าธรรมเนียมเพิ่มเติม ไม่ได้หมายความว่ามีระยะเวลาขั้นต่ำ",
            "dimensions": {
              "billing_component_role": "minimum",
              "conditions": "No additional condition is declared in this pricing key.",
              "is_floor_not_additive_charge": true,
              "quoted_unit": "minimum generation charge"
            },
            "label": "ยอดขั้นต่ำต่อการสร้าง",
            "units": [
              {
                "amount": "1.12",
                "amount_unit": "usd_per_generation",
                "billing_input": false,
                "estimate_only": true,
                "key": "minimum_cents_per_generation",
                "label": "Generation minimum",
                "native_amount_usd_per_unit": "1.12",
                "native_quantity": 1,
                "public_unit_label": "minimum generation charge",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "total",
                "unit": "generation"
              }
            ]
          },
          {
            "basis": "ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "ต้นทุนการสร้างโดยประมาณ",
            "units": [
              {
                "amount": "0.56",
                "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.56",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\n: \"${AILOOT_PROMPT:?Set the actual documented input value}\"\nexport AILOOT_PROMPT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'runway/aleph-2', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'prompt': '${ACTUAL_EDIT_PROMPT}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['prompt']=os.environ['AILOOT_PROMPT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "วิดีโอ",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.56",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.56",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Minimum charge per generation; apply it as a minimum, not an extra fee. No minimum duration is implied.",
            "dimensions": {
              "billing_component_role": "minimum",
              "conditions": "No additional condition is declared in this pricing key.",
              "is_floor_not_additive_charge": true,
              "quoted_unit": "minimum generation charge"
            },
            "label": "Generation minimum",
            "units": [
              {
                "amount": "1.12",
                "amount_unit": "usd_per_generation",
                "billing_input": false,
                "estimate_only": true,
                "key": "minimum_cents_per_generation",
                "label": "Generation minimum",
                "native_amount_usd_per_unit": "1.12",
                "native_quantity": 1,
                "public_unit_label": "minimum generation charge",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "total",
                "unit": "generation"
              }
            ]
          },
          {
            "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.56",
                "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.56",
                "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": "runway/aleph-2",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.56",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.56",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "1.12",
            "amount_unit": "usd_per_generation",
            "billing_input": false,
            "estimate_only": true,
            "key": "minimum_cents_per_generation",
            "label": "Generation minimum",
            "native_amount_usd_per_unit": "1.12",
            "native_quantity": 1,
            "public_unit_label": "minimum generation charge",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "total",
            "unit": "generation"
          },
          {
            "amount": "0.56",
            "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.56",
            "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": "runway/aleph-2",
        "request_model_id": "runway/aleph-2",
        "route_label": "Ultra"
      }
    ],
    "name": "Runway: Aleph 2.0",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.56,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.56,
      "varies": false
    },
    "short": "Aleph 2.0 แก้วิดีโอเดิมด้วยคำสั่งข้อความเฉพาะจุดและภาพคีย์เฟรมกำกับ ใช้แทนวัตถุ เปลี่ยนพื้นหลัง เสื้อผ้า แสง หรือสไตล์ พร้อมระบุรายละเอียดฉากเดิมที่ต้องคงไว้"
  },
  "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": "Aleph 2.0 แก้วิดีโอเดิมด้วยคำสั่งข้อความเฉพาะจุดและภาพคีย์เฟรมกำกับ ใช้แทนวัตถุ เปลี่ยนพื้นหลัง เสื้อผ้า แสง หรือสไตล์ พร้อมระบุรายละเอียดฉากเดิมที่ต้องคงไว้",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "090e9fb749ee61fa672cd4b8cf74e28458ffe74946c1106e79a7b2b64641fdb7",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "21e2d78f08bf277b6160f7634b58e47cabd26d19b1a5b5b4f54ea004751fde30"
}
