# API Happy Horse 1.1 เอกสารอ้างอิง API ฉบับสมบูรณ์สำหรับโมเดลสร้างวิดีโอ Happy Horse 1.1 โดย Alibaba ## รุ่นย่อยของโมเดล API นี้รองรับโมเดล 3 รุ่นย่อย: | โมเดล | ID | คำอธิบาย | | --------------------------------------- | ------------------------------------ | ---------------------------------------------------- | | **Happy Horse 1.1 Text to Video** | `happyhorse-1.1-text-to-video` | สร้างวิดีโอโดยตรงจากพรอมต์ข้อความ | | **Happy Horse 1.1 Image to Video** | `happyhorse-1.1-image-to-video` | ทำให้ภาพเฟรมแรกเพียงภาพเดียวเคลื่อนไหวตามคำแนะนำจากพรอมต์ | | **Happy Horse 1.1 Reference to Video** | `happyhorse-1.1-reference-to-video` | สร้างวิดีโอที่อ้างอิงจากภาพอ้างอิงได้สูงสุด 9 ภาพ | ## การเปรียบเทียบอย่างรวดเร็ว | คุณสมบัติ | ข้อความเป็นวิดีโอ | รูปภาพเป็นวิดีโอ | อ้างอิงเป็นวิดีโอ | | -------------- | ------------------------- | ------------------------- | ------------------------- | | อินพุต | พรอมต์ข้อความ | ภาพเฟรมแรก + พรอมต์ | ภาพอ้างอิง + พรอมต์ | | ช่วงระยะเวลา | 3-15 วินาที | 3-15 วินาที | 3-15 วินาที | | ความละเอียด | 720p, 1080p (ค่าเริ่มต้น 1080p) | 720p, 1080p (ค่าเริ่มต้น 1080p) | 720p, 1080p (ค่าเริ่มต้น 1080p) | | อัตราส่วนภาพ | รองรับ 9 อัตราส่วน (ค่าเริ่มต้น 16:9) | ไม่รองรับ (ตามภาพอินพุต) | รองรับ 9 อัตราส่วน (ค่าเริ่มต้น 16:9) | | Seed | ไม่บังคับ | ไม่บังคับ | ไม่บังคับ | ### อัตราส่วนภาพที่รองรับ (ข้อความเป็นวิดีโอและอ้างอิงเป็นวิดีโอ) | อัตราส่วน | คำอธิบาย | | ------ | ---------------------- | | `16:9` | แนวนอน (จอกว้าง) | | `9:16` | แนวตั้ง (vertical) | | `3:4` | แนวตั้งมาตรฐาน | | `4:3` | แนวนอนมาตรฐาน | | `4:5` | แนวตั้ง | | `5:4` | แนวนอน | | `1:1` | สี่เหลี่ยมจัตุรัส | | `9:21` | แนวตั้งสูงพิเศษ | | `21:9` | แนวนอนกว้างพิเศษ | ## Happy Horse 1.1 Text to Video ### จุดปลายทาง ``` POST /api/v1/video/task ``` ### พารามิเตอร์คำขอ #### จำเป็น | พารามิเตอร์ | ประเภท | คำอธิบาย | | -------------- | ------ | ------------------------------------------------------------------ | | `model_name` | string | ต้องเป็น `"happyhorse-1.1-text-to-video"` | | `prompt` | string | พรอมต์สำหรับสร้างวิดีโอ | | `duration` | number | ระยะเวลาวิดีโอเป็นวินาที (3-15) | | `resolution` | string | ความละเอียดเอาต์พุต: `"720p"` หรือ `"1080p"` (ค่าเริ่มต้น `"1080p"`) | | `aspect_ratio` | string | อัตราส่วนภาพของวิดีโอ (ดูตารางด้านบน; ค่าเริ่มต้น `"16:9"`) | #### ไม่บังคับ | พารามิเตอร์ | ประเภท | คำอธิบาย | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed แบบสุ่มสำหรับการสร้างที่ทำซ้ำได้ เป็นจำนวนเต็มในช่วง `0` ถึง `2147483647` | ### ตัวอย่างคำขอ ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-text-to-video', prompt: 'A cat playing with a ball of yarn on a sunny windowsill', duration: 5, resolution: '1080p', aspect_ratio: '16:9', seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ## Happy Horse 1.1 Image to Video ### พารามิเตอร์คำขอ #### จำเป็น | พารามิเตอร์ | ประเภท | คำอธิบาย | | ------------ | ------ | ------------------------------------------------------------------ | | `model_name` | string | ต้องเป็น `"happyhorse-1.1-image-to-video"` | | `prompt` | string | พรอมต์สำหรับสร้างวิดีโอ | | `duration` | number | ระยะเวลาวิดีโอเป็นวินาที (3-15) | | `resolution` | string | ความละเอียดเอาต์พุต: `"720p"` หรือ `"1080p"` (ค่าเริ่มต้น `"1080p"`) | | `image_url` | string | URL ภาพเฟรมแรก (เฉพาะเฟรมแรกเท่านั้น) | #### ไม่บังคับ | พารามิเตอร์ | ประเภท | คำอธิบาย | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed แบบสุ่มสำหรับการสร้างที่ทำซ้ำได้ เป็นจำนวนเต็มในช่วง `0` ถึง `2147483647` | > **หมายเหตุ:** `aspect_ratio` ไม่รองรับสำหรับ image-to-video เฟรมเอาต์พุตจะตามภาพเฟรมแรกที่อัปโหลด ### ตัวอย่างคำขอ ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-image-to-video', image_url: 'https://example.com/first-frame.jpg', prompt: 'Gentle motion; cinematic lighting', duration: 5, resolution: '1080p', seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ## Happy Horse 1.1 Reference to Video ### พารามิเตอร์คำขอ #### จำเป็น | พารามิเตอร์ | ประเภท | คำอธิบาย | | -------------- | -------- | ------------------------------------------------------------------ | | `model_name` | string | ต้องเป็น `"happyhorse-1.1-reference-to-video"` | | `prompt` | string | พรอมต์สำหรับสร้างวิดีโอ เขียนพรอมต์มาตรฐานโดยไม่ใช้ตัวยึดตำแหน่ง หรือเลือกใช้ฟีเจอร์อ้างอิง @ (AT) กับ `<<>>` เพื่ออ้างอิงรายการในอาร์เรย์ `images` อย่างชัดเจน | | `duration` | number | ระยะเวลาวิดีโอเป็นวินาที (3-15) | | `resolution` | string | ความละเอียดเอาต์พุต: `"720p"` หรือ `"1080p"` (ค่าเริ่มต้น `"1080p"`) | | `aspect_ratio` | string | อัตราส่วนภาพของวิดีโอ (ดูตารางด้านบน; ค่าเริ่มต้น `"16:9"`) | | `images` | string[] | URL ภาพอ้างอิง (1-9 ภาพ) | #### ตัวยึดตำแหน่งอ้างอิง @ (AT) ฟีเจอร์อ้างอิง @ (AT) เชื่อมโยงรูปภาพอ้างอิงกับพรอมต์ผ่านตัวยึดตำแหน่ง `<<>>` ที่มีหมายเลข โดยเริ่มนับจาก `1` และเรียงตามอาร์เรย์ `images` | ตัวยึดตำแหน่ง | ค่าที่อ้างอิง | |-------------|------------------| | `<<>>` | `images[0]` | | `<<>>` | `images[1]` | | `<<>>` | `images[2]` | #### ไม่บังคับ | พารามิเตอร์ | ประเภท | คำอธิบาย | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed แบบสุ่มสำหรับการสร้างที่ทำซ้ำได้ เป็นจำนวนเต็มในช่วง `0` ถึง `2147483647` | ### ข้อกำหนดของภาพอ้างอิง - รูปแบบที่รองรับ: `JPEG`, `JPG`, `PNG`, `WEBP` - ขนาดไฟล์สูงสุด: 20 MB ต่อภาพ - ด้านสั้นขั้นต่ำ: 400 px - จำนวน: อย่างน้อย 1 ภาพ สูงสุด 9 ภาพ ### ตัวอย่างคำขอ ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-reference-to-video', prompt: 'Subject moves naturally while preserving reference style and appearance', duration: 5, resolution: '1080p', aspect_ratio: '16:9', images: [ 'https://example.com/ref-1.jpg', 'https://example.com/ref-2.jpg', ], seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ### ตัวอย่างคำขอ Reference-to-Video แบบ @ (AT) ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-reference-to-video', prompt: 'Show the person from <<>> walking beside the bicycle from <<>> through the street in <<>>, preserving all reference details', duration: 5, resolution: '1080p', aspect_ratio: '16:9', images: [ 'https://example.com/person-reference.jpg', 'https://example.com/bicycle-reference.jpg', 'https://example.com/street-reference.jpg', ], seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ## รูปแบบการตอบกลับ ### การตอบกลับเริ่มต้น ```json { "code": 0, "message": "success", "data": { "task_id": "{task_id}", "response_url": "https://api.flaq.ai/api/v1/video/{task_id}", "task_status": "submitted" } } ``` ### การตอบกลับจากการ Polling Polling `GET /api/v1/video/{taskId}` เพื่อตรวจสอบสถานะ: ```json { "code": 0, "message": "success", "data": { "task_id": "{task_id}", "response_url": "https://api.flaq.ai/api/v1/video/{task_id}", "task_status": "succeed", "task_status_msg": null, "task_result": { "credit": 0.2, "videos": [ { "url": "https://example.com/generated-video.mp4" } ] } } } ``` ### ค่าสถานะ - `submitted`: งานได้รับการยอมรับและรอดำเนินการ - `processing`: กำลังสร้างวิดีโอ - `succeed`: สร้างวิดีโอเสร็จสมบูรณ์ - `failed`: สร้างวิดีโอล้มเหลว ## เวลาในการประมวลผล เวลาในการประมวลผลโดยทั่วไป: 2-5 นาที ขึ้นอยู่กับระยะเวลาและโหลดของคิว ## แนวทางปฏิบัติที่ดีที่สุด 1. **อธิบายการเคลื่อนไหวให้ชัดเจน**: เพิ่มการเคลื่อนไหวของตัวแบบ การเคลื่อนไหวของกล้อง และความต่อเนื่องของฉากเพื่อปรับปรุงไดนามิกของวิดีโอ 2. **ใช้รอบสั้นก่อน**: เริ่มด้วยการสร้างวิดีโอ 3-5 วินาทีเพื่อตรวจสอบทิศทางของพรอมต์ก่อนสร้างคลิปที่ยาวกว่า 3. **เลือกภาพอินพุตที่เหมาะสม**: สำหรับ image-to-video ให้ใช้ภาพเฟรมแรกที่ชัดเจน แสงดี และมีตัวแบบเด่น 4. **คัดสรรภาพอ้างอิง**: สำหรับ reference-to-video ให้ใช้ภาพอ้างอิงที่สอดคล้องกันและมีคุณภาพสูง ซึ่งแสดงตัวแบบหรือสไตล์ที่คุณต้องการรักษาไว้อย่างชัดเจน 5. **ใช้ Seed ซ้ำสำหรับตัวแปร**: ใช้ `seed` เดิมเมื่อทดสอบการปรับปรุงพรอมต์ เพื่อเปรียบเทียบเอาต์พุตได้สม่ำเสมอยิ่งขึ้น 6. **จับคู่อัตราส่วนกับช่องทางเผยแพร่**: ใช้ `16:9` สำหรับวิดีโอแนวนอน, `9:16` สำหรับ shorts และ reels, และ `1:1` สำหรับตำแหน่งแบบสี่เหลี่ยมจัตุรัส