การสร้างวิดีโอ

โมเดลวิดีโอตอบกลับเป็นงาน ไม่ใช่การตอบกลับครั้งเดียว POST /v1/videos จะคืนรหัสงานพร้อม "status": "queued" และ GET /v1/videos/{task_id} จะรายงานความคืบหน้าจนงานเปลี่ยนเป็น completed หรือ failed เมื่อเสร็จแล้ว ไฟล์ที่ได้คือ URL ที่ลงลายเซ็นใน metadata.url ซึ่งมีพารามิเตอร์ Expires ติดมาด้วย จึงควรดาวน์โหลดไฟล์เก็บไว้แทนการเก็บลิงก์ งานที่ล้มเหลวจะแนบรหัสและข้อความจากต้นทางไว้ใน error.code และ error.message ซึ่งมักเพียงพอให้เห็นว่าคำขอขาดฟิลด์ใด ส่วน POST /v1/video/generations เข้าสู่ตัวจัดการเดียวกัน สำหรับไคลเอนต์ที่เขียนตามเส้นทางนั้นไว้แล้ว

POST /v1/videos
curl https://api.chinaapi.ai/v1/videos \
  -H "Authorization: Bearer $CHINAAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan2.7-i2v",
    "prompt": "the cat turns and walks toward the camera",
    "input_reference": "https://example.com/first-frame.jpg",
    "size": "1280*720",
    "duration": 5
  }'

# {"id":"task_9f2c...","task_id":"task_9f2c...","object":"video",
#  "model":"wan2.7-i2v","status":"queued","progress":0}
GET /v1/videos/{task_id}
curl https://api.chinaapi.ai/v1/videos/task_9f2c... \
  -H "Authorization: Bearer $CHINAAPI_KEY"

# {"id":"task_9f2c...","object":"video","model":"wan2.7-i2v",
#  "status":"completed","progress":100,
#  "metadata":{"url":"https://.../output.mp4?Expires=..."}}
ข้อความเป็นวิดีโอ

wan2.7-t2v

มีเพียง model และ prompt ที่จำเป็น หากไม่ระบุ size และ duration เกตเวย์จะส่งเป็น 1280*720 ความยาวห้าวินาที

รูปภาพเป็นวิดีโอ

wan2.7-i2v

ทำให้ภาพนิ่งเคลื่อนไหว input_reference รับ URL รูปภาพที่เข้าถึงได้แบบสาธารณะและจะกลายเป็นเฟรมแรก ให้ส่ง size และ duration ไปพร้อมกัน

อ้างอิงเป็นวิดีโอ

wan2.7-r2v

สร้างวิดีโอจากสื่ออ้างอิง input_reference รับภาพอ้างอิงหนึ่งภาพ หากต้องการส่งหลายภาพให้ใช้ images แทน และ video_url เพิ่มวิดีโออ้างอิง — นับรวมกันได้สูงสุดห้ารายการ อย่าส่ง input_reference พร้อม images เพราะเกตเวย์จะเก็บเฉพาะ input_reference

การแก้ไขวิดีโอ

wan2.7-videoedit

แก้ไขคลิปที่มีอยู่ตามพรอมป์ต์ video_url รับวิดีโอต้นฉบับ ซึ่งต้องยาว 2 ถึง 10 วินาที เป็น MP4 หรือ MOV และ size กำหนดผลลัพธ์

วิดีโอ 30 วินาที

doubao-seedance-2-5-260628

ภาพอ้างอิงใส่ใน images ส่วน input_reference รับได้หนึ่งภาพ หากส่งทั้งสองอย่างจะส่งต่อทั้งคู่ ความยาวใส่ใน seconds หรือ duration และพารามิเตอร์ของผู้ให้บริการใส่ใน metadata ซึ่ง resolution รับได้เฉพาะ 480p หรือ 720p

Seedance 2.0

doubao-seedance-2-0-260128

รูปแบบคำขอเหมือน doubao-seedance-2-5-260628 ทุกอย่าง รวมถึงกฎของ role ใน metadata.content ส่วน doubao-seedance-2-0-fast-260128 และ doubao-seedance-2-0-mini-260615 แลกคุณภาพกับความเร็วและต้นทุน และรุ่น 2.0 ต้องมีภาพหรือวิดีโออ้างอิงอย่างน้อยหนึ่งรายการ ต่างจาก 2.5 ที่รับเสียงอย่างเดียวได้

Kling 3.0

kling-v3

เฟรมแรกใส่ใน image ตระกูลนี้ไม่อ่าน input_reference เลย mode ค่าเริ่มต้นคือ std และ duration คือ 5 วินาที ที่เหลืออยู่ใน metadata ได้แก่ image_tail สำหรับเฟรมปิด sound ที่รับ on หรือ off (ค่าเริ่มต้น off) พร้อมด้วย negative_prompt cfg_scale และ camera_control

รุ่นประหยัด

kling-3.0-turbo

ส่ง prompt สำหรับข้อความเป็นวิดีโอ หรือเพิ่ม image แล้วเกตเวย์จะประกอบอาร์เรย์ contents ที่ต้นทางต้องการให้เอง ส่วนขนาดอยู่ใต้ metadata.settings โดย resolution เป็น 720p หรือ 1080p duration อยู่ระหว่าง 3 ถึง 15 วินาที และ aspect_ratio เป็น 16:9 9:16 หรือ 1:1 เสียงมีมาให้เสมอและไม่มีสวิตช์ปิด

อ้างอิงหลายภาพ

kling-v3-omni

สร้างวิดีโอจากภาพอ้างอิงหลายภาพพร้อมกัน พารามิเตอร์ทุกตัวอยู่ใน metadata และไม่มีฟิลด์ resolution — ระดับคุณภาพคือ mode ดูตัวอย่างเต็มด้านล่าง

เสียงในตัว

MiniMax-H3

รับฟิลด์ของเกตเวย์เองแล้วประกอบเพย์โหลดฝั่งต้นทางให้: image หรือ input_reference กลายเป็นเฟรมแรก images กลายเป็นภาพอ้างอิง และ video_url กลายเป็นวิดีโออ้างอิง size เลือก 768P หรือ 2K และ duration เป็นจำนวนเต็มตั้งแต่ 4 ถึง 15 คำขอที่มีแต่ข้อความต้องระบุ metadata.ratio ที่ไม่ใช่ adaptive

Hailuo

MiniMax-Hailuo-2.3

รวมถึง MiniMax-Hailuo-2.3-Fast และ MiniMax-Hailuo-02 กลุ่มนี้อ่านจากระดับบนสุดเพียง prompt duration และ size ภาพทุกภาพต้องผ่าน metadata ในชื่อ first_frame_image last_frame_image หรือ subject_reference

รองรับ 480P

happyhorse-1.1-t2v

รวมถึง happyhorse-1.1-i2v และ happyhorse-1.1-r2v ฟิลด์ตรงกับตระกูล wan2.7 คือ prompt input_reference size duration และที่นี่ 480P มีราคากำหนดไว้ จึงรับ 832*480 ได้ในจุดที่ wan2.7 ปฏิเสธ หากต้องการอ้างอิงหลายรายการให้ใส่ใน metadata.input.media เพราะการประกอบอัตโนมัติที่ฟิลด์ images กระตุ้นนั้นมีเฉพาะกับ wan2.7-r2v

เคล็ดลับ เขียน size เป็นความกว้างและความสูงคั่นด้วยดอกจัน เช่น 1280*720 ไม่รับตัว x: 832x480 จะได้ invalid size: 832x480, example: 1920*1080 กลับมา duration เป็นจำนวนวินาทีเต็ม สำหรับ wan2.7-i2v wan2.7-r2v และ wan2.7-videoedit เกตเวย์จะยุบ size เป็นระดับความละเอียด และต้นทางมีเพียงสองระดับ จึงให้ส่ง 1280*720 สำหรับ 720P หรือ 1920*1080 สำหรับ 1080P ขนาดระดับ 480P อย่าง 832*480 ไม่มีราคากำหนดไว้กับสามรุ่นนี้ จึงถูกปฏิเสธทันที หรือไม่ก็รับไว้แล้วไปล้มเหลวที่ต้นทางด้วย InvalidParameter งานที่ล้มเหลวจะได้เงินคืน แต่ไม่ว่าทางไหนก็เสียเที่ยวไปฟรี ๆ ส่วน wan2.7-t2v รับค่าตามที่เขียนมา
เคล็ดลับ ตระกูล Kling อ่านอัตราส่วนภาพจาก size ผ่านตารางตายตัวที่เขียนขนาดด้วยตัว x — 1280x720 1920x1080 720x1280 1080x1920 1024x1024 512x512 — และค่าที่ไม่อยู่ในตารางจะกลายเป็น 1:1 โดยไม่แจ้งข้อผิดพลาด ดังนั้นการส่งรูปแบบดอกจัน 1280*720 ให้ kling-v3 จะได้วิดีโอจัตุรัสกลับมาแทนที่จะได้คำทักท้วง ถ้าการจัดเฟรมสำคัญให้กำหนด metadata.aspect_ratio โดยตรง
เคล็ดลับ MiniMax-Hailuo-2.3 MiniMax-Hailuo-2.3-Fast และ MiniMax-Hailuo-02 ทิ้งฟิลด์ระดับบนสุด image input_reference images และ video_url ไปเงียบ ๆ คำขอสำเร็จก็จริง แต่ทำงานเป็นข้อความเป็นวิดีโอและถูกคิดเงินตามนั้น ให้ใส่ภาพใน metadata.first_frame_image แทน เพิ่ม metadata.last_frame_image สำหรับเฟรมปิด และใช้ metadata.subject_reference สำหรับการอ้างอิงตัวแบบ ส่วน MiniMax-H3 เป็นข้อยกเว้นของกลุ่มนี้และอ่านฟิลด์ระดับบนสุด
kling-v3-omni · multi-image reference
curl https://api.chinaapi.ai/v1/video/generations \
  -H "Authorization: Bearer $CHINAAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-v3-omni",
    "prompt": "the character from the references walks through a neon-lit street",
    "metadata": {
      "image_list": [
        {"image_url": "https://example.com/character.jpg"},
        {"image_url": "https://example.com/outfit.jpg"},
        {"image_url": "https://example.com/scene.jpg"}
      ],
      "mode": "std",
      "duration": "5",
      "aspect_ratio": "16:9",
      "sound": "off"
    }
  }'
GET /v1/video/generations/{task_id}
curl https://api.chinaapi.ai/v1/video/generations/task_9f2c... \
  -H "Authorization: Bearer $CHINAAPI_KEY"

# {"code":"success",
#  "data":{"task_id":"task_9f2c...","status":"SUCCESS",
#          "progress":"100%","fail_reason":"",
#          "result_url":"https://.../output.mp4"}}
เคล็ดลับ ภาพอ้างอิงไม่ต้องมี type ฟิลด์นี้มีไว้เพื่อระบุ first_frame หรือ end_frame เท่านั้น และ aspect_ratio จำเป็นเมื่อไม่มีเฟรมแรก mode คือระดับคุณภาพ ได้แก่ std pro หรือ 4k โดยค่าเริ่มต้นของต้นทางคือ pro ซึ่งคิดเงิน 1.33 เท่าของราคาที่ประกาศ ส่วน 4k คิด 5 เท่า จึงควรส่ง mode ให้ชัดเจนเพื่อให้ยอดเงินตรงกับที่คาดไว้ duration เป็นสตริงตั้งแต่ "3" ถึง "15" และ sound มีค่าเริ่มต้นเป็น off วิดีโออ้างอิงใส่ใน video_list และต้องกำหนด "refer_type": "feature" เพราะโหมดแก้ไข base คิดเงินตามความยาววิดีโอที่ส่งมา ประเมินราคาก่อนส่งไม่ได้ จึงถูกปฏิเสธ ภาพอ้างอิงยังมีขนาดขั้นต่ำที่ฝั่งต้นทางด้วย ไฟล์ขนาดเท่าไอคอนจะส่งผ่านได้แต่ทำให้งานล้มเหลวด้วย Image pixel is invalid งานที่ล้มเหลวจะได้เงินคืน แต่เสียเที่ยวไปฟรี ๆ
เคล็ดลับ สองเส้นทางรายงานผลคนละรูปแบบ GET /v1/videos/{task_id} ตอบในรูปแบบวิดีโอของ OpenAI โดยไฟล์อยู่ที่ metadata.url และความคืบหน้าเป็นตัวเลข ส่วน GET /v1/video/generations/{task_id} ตอบเป็น {"code": "success", "data": {…}} โดยไฟล์อยู่ที่ data.result_url data.status เป็นคำตัวพิมพ์ใหญ่อย่าง SUCCESS หรือ FAILURE data.progress เป็นสตริงอย่าง "100%" และความล้มเหลวอธิบายไว้ใน data.fail_reason ให้ถามสถานะที่เส้นทางเดียวกับที่ส่งไป
doubao-seedance-2-5-260628 · first frame
curl https://api.chinaapi.ai/v1/videos \
  -H "Authorization: Bearer $CHINAAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-5-260628",
    "prompt": "the subject slowly turns toward the camera",
    "images": ["https://example.com/first-frame.jpg"],
    "seconds": "5",
    "metadata": {"resolution": "480p"}
  }'
doubao-seedance-2-5-260628 · reference mode
curl https://api.chinaapi.ai/v1/videos \
  -H "Authorization: Bearer $CHINAAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-5-260628",
    "prompt": "keep the subject from the reference image",
    "seconds": "5",
    "metadata": {
      "resolution": "480p",
      "ratio": "16:9",
      "content": [
        {
          "type": "image_url",
          "image_url": {"url": "https://example.com/reference.jpg"},
          "role": "reference_image"
        }
      ]
    }
  }'
เคล็ดลับ ภาพที่ไม่มี role จะถูกอ่านเป็นเฟรมแรกไม่ใช่ภาพอ้างอิง ผลลัพธ์จึงใช้อัตราส่วนของภาพนั้น การส่ง ratio มาด้วยจะถูกปฏิเสธด้วย InvalidParameter.TaskTypeConstraint และ seconds เท่ากับ 2 ก็ถูกปฏิเสธในโหมดนี้ ขณะที่ 5 ใช้ได้ generate_audio ต้นทางมีค่าเริ่มต้นเป็น true ดังนั้นไฟล์ที่ได้จะมีแทร็กเสียงเว้นแต่ตั้งเป็น false ใน metadata ใส่ role ให้ทุกรายการใน metadata.content เพื่อใช้โหมดอ้างอิงเต็มรูปแบบ — ภาพได้ถึง 30 ภาพ วิดีโอ 10 รายการ และเสียง 10 รายการ ป้อนเฉพาะเสียงก็ได้ และสร้างต่อเนื่อง 30 วินาที — ซึ่งโหมดนั้นรับ ratio ได้