# API Happy Horse 1.1 Referensi API lengkap untuk model pembuatan video Happy Horse 1.1 dari Alibaba. ## Varian Model API ini mendukung tiga varian model: | Model | ID | Deskripsi | | --------------------------------------- | ------------------------------------ | ---------------------------------------------------- | | **Happy Horse 1.1 Text to Video** | `happyhorse-1.1-text-to-video` | Menghasilkan video langsung dari prompt teks | | **Happy Horse 1.1 Image to Video** | `happyhorse-1.1-image-to-video` | Menganimasikan satu gambar frame pertama dengan panduan prompt | | **Happy Horse 1.1 Reference to Video** | `happyhorse-1.1-reference-to-video` | Menghasilkan video yang dipandu hingga 9 gambar referensi | ## Perbandingan Singkat | Fitur | Teks ke Video | Gambar ke Video | Referensi ke Video | | -------------- | ------------------------- | ------------------------- | ------------------------- | | Input | Prompt teks | Gambar frame pertama + prompt | Gambar referensi + prompt | | Rentang Durasi | 3-15 detik | 3-15 detik | 3-15 detik | | Resolusi | 720p, 1080p (default 1080p) | 720p, 1080p (default 1080p) | 720p, 1080p (default 1080p) | | Rasio Aspek | 9 rasio yang didukung (default 16:9) | Tidak didukung (mengikuti gambar input) | 9 rasio yang didukung (default 16:9) | | Seed | Opsional | Opsional | Opsional | ### Rasio Aspek yang Didukung (Teks ke Video & Referensi ke Video) | Rasio | Deskripsi | | ------ | ---------------------- | | `16:9` | Lanskap (layar lebar) | | `9:16` | Potret (vertikal) | | `3:4` | Potret standar | | `4:3` | Lanskap standar | | `4:5` | Potret | | `5:4` | Lanskap | | `1:1` | Persegi | | `9:21` | Potret sangat tinggi | | `21:9` | Lanskap sangat lebar | ## Happy Horse 1.1 Text to Video ### Titik akhir ``` POST /api/v1/video/task ``` ### Parameter Permintaan #### Wajib | Parameter | Tipe | Deskripsi | | -------------- | ------ | ------------------------------------------------------------------ | | `model_name` | string | Harus berupa `"happyhorse-1.1-text-to-video"` | | `prompt` | string | Prompt pembuatan video | | `duration` | number | Durasi video dalam detik (3-15) | | `resolution` | string | Resolusi output: `"720p"` atau `"1080p"` (default `"1080p"`) | | `aspect_ratio` | string | Rasio aspek video (lihat tabel di atas; default `"16:9"`) | #### Opsional | Parameter | Tipe | Deskripsi | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed acak untuk generasi yang dapat direproduksi, bilangan bulat dalam rentang `0` hingga `2147483647` | ### Contoh Permintaan ```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 ### Parameter Permintaan #### Wajib | Parameter | Tipe | Deskripsi | | ------------ | ------ | ------------------------------------------------------------------ | | `model_name` | string | Harus berupa `"happyhorse-1.1-image-to-video"` | | `prompt` | string | Prompt pembuatan video | | `duration` | number | Durasi video dalam detik (3-15) | | `resolution` | string | Resolusi output: `"720p"` atau `"1080p"` (default `"1080p"`) | | `image_url` | string | URL gambar frame pertama (hanya frame pertama) | #### Opsional | Parameter | Tipe | Deskripsi | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed acak untuk generasi yang dapat direproduksi, bilangan bulat dalam rentang `0` hingga `2147483647` | > **Catatan:** `aspect_ratio` tidak didukung untuk image-to-video. Framing output mengikuti gambar frame pertama yang diunggah. ### Contoh Permintaan ```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 ### Parameter Permintaan #### Wajib | Parameter | Tipe | Deskripsi | | -------------- | -------- | ------------------------------------------------------------------ | | `model_name` | string | Harus berupa `"happyhorse-1.1-reference-to-video"` | | `prompt` | string | Prompt pembuatan video. Tulis prompt standar tanpa placeholder, atau gunakan fitur referensi @ (AT) secara opsional dengan `<<>>` untuk merujuk item dalam array `images` secara eksplisit | | `duration` | number | Durasi video dalam detik (3-15) | | `resolution` | string | Resolusi output: `"720p"` atau `"1080p"` (default `"1080p"`) | | `aspect_ratio` | string | Rasio aspek video (lihat tabel di atas; default `"16:9"`) | | `images` | string[] | URL gambar referensi (1-9 gambar) | #### Placeholder Referensi @ (AT) Fitur referensi @ (AT) menghubungkan gambar referensi ke prompt melalui placeholder `<<>>` bernomor. Penomoran dimulai dari `1` dan mengikuti urutan array `images`. | Placeholder | Nilai yang Dirujuk | |-------------|------------------| | `<<>>` | `images[0]` | | `<<>>` | `images[1]` | | `<<>>` | `images[2]` | #### Opsional | Parameter | Tipe | Deskripsi | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed acak untuk generasi yang dapat direproduksi, bilangan bulat dalam rentang `0` hingga `2147483647` | ### Persyaratan Gambar Referensi - Format yang didukung: `JPEG`, `JPG`, `PNG`, `WEBP` - Ukuran file maksimum: 20 MB per gambar - Sisi pendek minimum: 400 px - Jumlah: setidaknya 1, hingga 9 gambar ### Contoh Permintaan ```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; ``` ### Contoh Permintaan 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; ``` ## Format Respons ### Respons Awal ```json { "code": 0, "message": "success", "data": { "task_id": "{task_id}", "response_url": "https://api.flaq.ai/api/v1/video/{task_id}", "task_status": "submitted" } } ``` ### Respons Polling Polling `GET /api/v1/video/{taskId}` untuk memeriksa status: ```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" } ] } } } ``` ### Nilai Status - `submitted`: Tugas diterima dan menunggu untuk diproses - `processing`: Pembuatan video sedang berlangsung - `succeed`: Pembuatan video selesai - `failed`: Pembuatan video gagal ## Waktu Pemrosesan Waktu pemrosesan umum: 2-5 menit tergantung durasi dan beban antrean. ## Praktik Terbaik 1. **Jelaskan Gerakan dengan Jelas**: Tambahkan gerakan subjek, gerakan kamera, dan perkembangan adegan untuk meningkatkan dinamika video. 2. **Gunakan Iterasi Pendek Terlebih Dahulu**: Mulai dengan generasi 3-5 detik untuk memvalidasi arah prompt sebelum menjalankan klip yang lebih panjang. 3. **Pilih Gambar Input yang Tepat**: Untuk image-to-video, gunakan gambar frame pertama yang jelas dan cukup terang dengan fokus subjek yang kuat. 4. **Kurasi Gambar Referensi**: Untuk reference-to-video, berikan gambar referensi yang konsisten dan berkualitas tinggi yang jelas merepresentasikan subjek atau gaya yang ingin Anda pertahankan. 5. **Gunakan Ulang Seed untuk Varian**: Pertahankan `seed` yang sama saat menguji penyempurnaan prompt untuk membandingkan output dengan lebih konsisten. 6. **Sesuaikan Rasio dengan Kanal Distribusi**: Gunakan `16:9` untuk video lanskap, `9:16` untuk shorts dan reels, serta `1:1` untuk penempatan persegi.