# API Happy Horse 1.1 Référence API complète pour les modèles de génération vidéo Happy Horse 1.1 d'Alibaba. ## Variantes de modèle Cette API prend en charge trois variantes de modèle : | Modèle | ID | Description | | --------------------------------------- | ------------------------------------ | --------------------------------------------------- | | **Happy Horse 1.1 Text to Video** | `happyhorse-1.1-text-to-video` | Génère des vidéos directement à partir de prompts texte | | **Happy Horse 1.1 Image to Video** | `happyhorse-1.1-image-to-video` | Anime une seule image de première frame avec le guidage du prompt | | **Happy Horse 1.1 Reference to Video** | `happyhorse-1.1-reference-to-video` | Génère des vidéos guidées par jusqu'à 9 images de référence | ## Comparaison rapide | Fonctionnalité | Texte vers vidéo | Image vers vidéo | Référence vers vidéo | | -------------- | ----------------------- | ----------------------- | ------------------------ | | Entrée | Prompt texte | Image de première frame + prompt | Images de référence + prompt | | Plage de durée | 3-15 secondes | 3-15 secondes | 3-15 secondes | | Résolution | 720p, 1080p (1080p par défaut) | 720p, 1080p (1080p par défaut) | 720p, 1080p (1080p par défaut) | | Format d'image | 9 ratios pris en charge (16:9 par défaut) | Non pris en charge (suit l'image d'entrée) | 9 ratios pris en charge (16:9 par défaut) | | Seed | Optionnel | Optionnel | Optionnel | ### Formats d'image pris en charge (Texte vers vidéo & Référence vers vidéo) | Ratio | Description | | ------ | ---------------------- | | `16:9` | Paysage (écran large) | | `9:16` | Portrait (vertical) | | `3:4` | Portrait standard | | `4:3` | Paysage standard | | `4:5` | Portrait | | `5:4` | Paysage | | `1:1` | Carré | | `9:21` | Portrait ultra-haut | | `21:9` | Paysage ultra-large | ## Happy Horse 1.1 Text to Video ### Point de terminaison ``` POST /api/v1/video/task ``` ### Paramètres de requête #### Obligatoires | Paramètre | Type | Description | | -------------- | ------ | ------------------------------------------------------------------ | | `model_name` | string | Doit être `"happyhorse-1.1-text-to-video"` | | `prompt` | string | Prompt de génération vidéo | | `duration` | number | Durée de la vidéo en secondes (3-15) | | `resolution` | string | Résolution de sortie : `"720p"` ou `"1080p"` (`"1080p"` par défaut) | | `aspect_ratio` | string | Format d'image de la vidéo (voir le tableau ci-dessus ; `"16:9"` par défaut) | #### Optionnels | Paramètre | Type | Description | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed aléatoire pour des générations reproductibles, entier compris entre `0` et `2147483647` | ### Exemple de requête ```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 ### Paramètres de requête #### Obligatoires | Paramètre | Type | Description | | ------------ | ------ | ------------------------------------------------------------------ | | `model_name` | string | Doit être `"happyhorse-1.1-image-to-video"` | | `prompt` | string | Prompt de génération vidéo | | `duration` | number | Durée de la vidéo en secondes (3-15) | | `resolution` | string | Résolution de sortie : `"720p"` ou `"1080p"` (`"1080p"` par défaut) | | `image_url` | string | URL de l'image de première frame (première frame uniquement) | #### Optionnels | Paramètre | Type | Description | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed aléatoire pour des générations reproductibles, entier compris entre `0` et `2147483647` | > **Remarque :** `aspect_ratio` n'est pas pris en charge pour image-to-video. Le cadrage de sortie suit l'image de première frame téléversée. ### Exemple de requête ```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 ### Paramètres de requête #### Obligatoires | Paramètre | Type | Description | | -------------- | -------- | ------------------------------------------------------------------ | | `model_name` | string | Doit être `"happyhorse-1.1-reference-to-video"` | | `prompt` | string | Prompt de génération vidéo. Rédigez un prompt standard sans espaces réservés ou utilisez facultativement la fonction de référence @ (AT) avec `<<>>` pour référencer explicitement les éléments du tableau `images` | | `duration` | number | Durée de la vidéo en secondes (3-15) | | `resolution` | string | Résolution de sortie : `"720p"` ou `"1080p"` (`"1080p"` par défaut) | | `aspect_ratio` | string | Format d'image de la vidéo (voir le tableau ci-dessus ; `"16:9"` par défaut) | | `images` | string[] | URL des images de référence (1-9 images) | #### Espaces réservés de référence @ (AT) La fonction de référence @ (AT) relie les images de référence au prompt au moyen d’espaces réservés `<<>>` numérotés. La numérotation commence à `1` et suit l’ordre du tableau `images`. | Espace réservé | Valeur référencée | |-------------|------------------| | `<<>>` | `images[0]` | | `<<>>` | `images[1]` | | `<<>>` | `images[2]` | #### Optionnels | Paramètre | Type | Description | | --------- | ------ | ---------------------------------------------------------------------------------- | | `seed` | number | Seed aléatoire pour des générations reproductibles, entier compris entre `0` et `2147483647` | ### Exigences relatives aux images de référence - Formats pris en charge : `JPEG`, `JPG`, `PNG`, `WEBP` - Taille maximale de fichier : 20 MB par image - Petit côté minimum : 400 px - Nombre : au moins 1, jusqu'à 9 images ### Exemple de requête ```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; ``` ### Exemple de requête Reference-to-Video avec @ (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 de réponse ### Réponse initiale ```json { "code": 0, "message": "success", "data": { "task_id": "{task_id}", "response_url": "https://api.flaq.ai/api/v1/video/{task_id}", "task_status": "submitted" } } ``` ### Réponse de polling Interrogez `GET /api/v1/video/{taskId}` pour vérifier le statut : ```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" } ] } } } ``` ### Valeurs de statut - `submitted`: Tâche acceptée et en attente de traitement - `processing`: Génération vidéo en cours - `succeed`: Génération vidéo terminée - `failed`: Échec de la génération vidéo ## Temps de traitement Temps de traitement typique : 2-5 minutes selon la durée et la charge de la file d'attente. ## Bonnes pratiques 1. **Décrire clairement le mouvement** : ajoutez le mouvement du sujet, le mouvement de caméra et la progression de la scène pour améliorer la dynamique vidéo. 2. **Utiliser d'abord de courtes itérations** : commencez par des générations de 3-5 secondes pour valider l'orientation du prompt avant de lancer des clips plus longs. 3. **Choisir la bonne image d'entrée** : pour image-to-video, utilisez une image de première frame claire et bien éclairée, avec un sujet fortement mis en avant. 4. **Sélectionner les images de référence** : pour reference-to-video, fournissez des images de référence cohérentes et de haute qualité qui représentent clairement le sujet ou le style que vous souhaitez préserver. 5. **Réutiliser les seeds pour les variantes** : conservez le même `seed` lors des tests d'affinage du prompt afin de comparer les sorties plus régulièrement. 6. **Adapter le ratio au canal de diffusion** : utilisez `16:9` pour les vidéos paysage, `9:16` pour les shorts et reels, et `1:1` pour les emplacements carrés.