HappyHorse 1.1 image en vidéo : guide de l'API et 5 vrais clips
Un script envoie une image fixe, interroge la tâche et enregistre le MP4. Les champs, les surprises du filigrane et de la bande-son, et 5 clips réalisés le 2 novembre 2026.

Sur cette page
- Réponse courte
- De quoi avez-vous besoin avant votre premier appel à HappyHorse 1.1 image en vidéo ?
- Quels champs contient la requête ?
- Le script Python
- Cinq clips que nous avons réalisés
- Orbite du casque
- Portrait sous la pluie
- Travelling avant sur le lac
- Illustration du renard
- Ce que les fichiers mesuraient
- Pourquoi les clips ont-ils du son ?
- Combien de temps les résultats restent-ils disponibles ?
- Quelles erreurs allez-vous rencontrer ?
- Combien coûte un clip HappyHorse 1.1 ?
- Peut-on appeler Alibaba Cloud directement ?
- Questions fréquentes
- Faut-il un prompt pour HappyHorse image en vidéo ?
- Comment retirer le filigrane Happy Horse ?
- Comment régler le rapport d'image ?
- Existe-t-il un HappyHorse 1.5 ?
- HappyHorse 1.1 est-il meilleur que 1.0 pour image en vidéo ?
- Sources vérifiées
Pour animer une image fixe avec HappyHorse 1.1 image en vidéo, envoyez-la comme first_frame à https://api.omniakey.com/v1/media/tasks avec l'ID de modèle happyhorse-1.1-i2v, interrogez la tâche, puis téléchargez le MP4. Nos cinq clips de 5 secondes en 720P ont pris entre 92 et 158 secondes le 2 novembre 2026. Chaque clip contenait une musique que nous n'avions pas demandée, et le réglage par défaut ajoute un filigrane "Happy Horse".
Réponse courte
- La requête : modèle
happyhorse-1.1-i2v, opérationimage_to_videoet exactement unfirst_framedansinput.media. - Format d'image : le clip suit votre photo, car il n'y a pas de champ
ratio. - Durée et taille : de 3 à 15 secondes en 480P, 720P ou 1080P ; envoyez
resolutionà chaque fois, car la valeur par défaut d'Alibaba est 1080P. - Filigrane : actif par défaut, désactivé avec
watermark: false. - Son : les cinq clips avaient de la musique, l'API d'Alibaba ne liste aucun interrupteur audio, et
ffmpegretire la piste.
De quoi avez-vous besoin avant votre premier appel à HappyHorse 1.1 image en vidéo ?
Trois choses : une clé, Python 3 et une image fixe que les règles d'Alibaba acceptent.
- La clé dans
OMNIAKEY_API_KEY. Le script l'envoie comme jeton Bearer, elle ne reste donc pas dans le code. - Python 3 sans rien installer. Le script n'utilise que la bibliothèque standard.
- Une image fixe conforme à la référence de l'API image en vidéo d'Alibaba : JPEG, JPG, PNG ou WEBP ; largeur et hauteur d'au moins 300 pixels ; jusqu'à 20 MB ; rapport d'image de 1:2.5 à 2.5:1. Alibaba n'indique aucun maximum de pixels.
La difficulté vient de la taille : une image intégrée voyage dans le corps de la requête, qui doit tenir dans 1 MiB, Base64 compris (présentation de l'API média d'OmniaKey, vérifiée le 2 novembre 2026). Le script s'arrête au-delà de 700 KB ; au-delà, réduisez l'image ou passez une URL HTTPS publique. Notre image 2K pesait 2 254 819 octets, et cette commande macOS l'a ramenée à 92 212 octets :
sips -s format jpeg -s formatOptions 85 -Z 1280 still.jpg --out still-small.jpg
Quels champs contient la requête ?
Neuf champs définissent la tâche : trois au niveau supérieur, deux dans input et quatre dans parameters.
| Champ | Valeur | Remarques |
|---|---|---|
model | happyhorse-1.1-i2v | l'ID du modèle 1.1 image en vidéo |
type | video | le type de fichier que crée la tâche |
operation | image_to_video | nom sans préfixe |
input.prompt | texte | OmniaKey l'exige, l'API d'Alibaba le traite comme facultatif ; jusqu'à 5,000 caractères non chinois ou 2,500 caractères chinois, le texte plus long est coupé |
input.media | exactement un {"type": "first_frame", "url": ...} | une URL HTTPS publique ou un data URI |
parameters.resolution | 480P, 720P ou 1080P | envoyez-le toujours : la valeur par défaut d'Alibaba est 1080P |
parameters.duration | secondes entières, de 3 à 15 | obligatoire sur OmniaKey |
parameters.watermark | true (par défaut) ou false | false retire le texte "Happy Horse" |
parameters.seed | 0 à 2147483647 | la même seed ne garantit pas le même clip |
Quatre détails se remarquent mal.
- Il n'y a pas de champ
ratio: le clip garde le rapport d'image de votre photo (référence de l'API image en vidéo d'Alibaba, vérifiée le 2 novembre 2026). - Les pages d'Alibaba n'affichent aucun champ de prompt négatif.
- Chaque appel de création demande un en-tête
Idempotency-Key. Le rejouer avec le même corps renvoie la tâche d'origine et ne facture jamais deux fois ; avec un autre corps, il renvoie409 idempotency_key_reused(documentation de l'API vidéo d'OmniaKey, vérifiée le 2 novembre 2026). - La taille de sortie varie : dans la documentation d'OmniaKey, une photo de 1200×630 en 720P revient en 1324×696.
Le script Python
C'est le fichier exact que nous avons exécuté, avec seulement la bibliothèque standard.
"""Animate one still with HappyHorse 1.1 image-to-video through the OmniaKey media API.
Usage:
export OMNIAKEY_API_KEY="your-omniakey-api-key"
python3 hh_i2v.py still.jpg "The camera slowly orbits the headphones." clip.mp4
The still can be a local JPEG or PNG (sent inline as a data URL) or a public https:// URL.
"""
import base64
import json
import mimetypes
import os
import sys
import time
import urllib.error
import urllib.request
import uuid
API = "https://api.omniakey.com/v1/media/tasks"
HEADERS = {
"Authorization": "Bearer " + os.environ["OMNIAKEY_API_KEY"],
"Content-Type": "application/json",
"User-Agent": "happyhorse-i2v-example/1.0",
}
POLL_SECONDS = 10
GIVE_UP_AFTER = 15 * 60 # most clips finish in 1-5 minutes
def call(method, url, body=None, extra_headers=None):
data = json.dumps(body).encode() if body is not None else None
req = urllib.request.Request(url, data=data, method=method, headers={**HEADERS, **(extra_headers or {})})
for attempt in range(3):
try:
with urllib.request.urlopen(req, timeout=60) as resp:
return json.load(resp)
except urllib.error.HTTPError as err:
sys.exit(f"HTTP {err.code}: {err.read().decode(errors='replace')}")
except (urllib.error.URLError, TimeoutError, ConnectionError) as err:
if attempt == 2:
raise
print("network error, retrying:", err) # a retried POST keeps its Idempotency-Key
time.sleep(5)
def first_frame_url(image):
if image.startswith("https://"):
return image
raw = open(image, "rb").read()
if len(raw) > 700_000: # Base64 adds a third, and the whole request must stay under 1 MiB
sys.exit("The still is over 700 KB. Resize it or pass a public https:// URL instead.")
mime = mimetypes.guess_type(image)[0] or "image/jpeg"
return f"data:{mime};base64,{base64.b64encode(raw).decode()}"
def main(image, prompt, out_path):
task = call("POST", API, {
"model": "happyhorse-1.1-i2v",
"type": "video",
"operation": "image_to_video",
"input": {"prompt": prompt, "media": [{"type": "first_frame", "url": first_frame_url(image)}]},
"parameters": {"resolution": "720P", "duration": 5, "watermark": False}, # watermark is on by default
}, {"Idempotency-Key": str(uuid.uuid4())})
print("task", task["id"], task["status"])
start = time.time()
while task["status"] in ("queued", "processing"):
if time.time() - start > GIVE_UP_AFTER:
sys.exit(f"Still {task['status']} after 15 minutes. Do not submit it again; "
f"check it later with GET {API}/{task['id']}")
time.sleep(POLL_SECONDS)
task = call("GET", f"{API}/{task['id']}")
print(task["status"], "after", round(time.time() - start), "s")
if task["status"] != "succeeded":
sys.exit(json.dumps(task.get("error") or task))
# The signed download URL is short-lived, so save the file right away.
req = urllib.request.Request(task["assets"][0]["url"], headers={"User-Agent": HEADERS["User-Agent"]})
with urllib.request.urlopen(req, timeout=300) as resp, open(out_path, "wb") as f:
f.write(resp.read())
print("saved", out_path)
if __name__ == "__main__":
main(*sys.argv[1:4])
Enregistrez-le sous hh_i2v.py et lancez :
export OMNIAKEY_API_KEY="your-omniakey-api-key"
python3 hh_i2v.py still.jpg "The camera slowly orbits the headphones." clip.mp4
Notre exécution avec watermark: false a affiché ceci :
task task_QqK3ZdAd72vmK1DSOuOxXSytBSaJ244v queued
succeeded after 91 s
saved data/clips/c5-orbit-nowm.mp4
Cinq points du script comptent.
- Il interroge toutes les 10 secondes.
- Il abandonne au bout de 15 minutes avec un message qui demande de ne pas renvoyer la tâche.
- En cas d'erreur réseau, il réessaie, et la création relancée garde son
Idempotency-Key, vous récupérez donc la tâche d'origine au lieu d'une seconde facturation. - Il enregistre le fichier dès que la tâche réussit, car l'URL de téléchargement signée est de courte durée.
- Il envoie un User-Agent à chaque requête : celui de Python par défaut a reçu un HTTP 403 avec
error code: 1010de Cloudflare lors de notre test de Kling 3.0 API le 29 octobre 2026.
Cinq clips que nous avons réalisés
Nous avons généré quatre images fixes avec Nano Banana 2.1 et lancé l'image du casque deux fois pour tester le filigrane. Cela a donné cinq clips, tous de 5 secondes et en 720P, le 2 novembre 2026. Les clips portrait, lac et renard sont sortis avec les réglages par défaut, le filigrane apparaît donc sur ces images.
Orbite du casque
The camera slowly orbits about 90 degrees to the right around the headphones while a soft band of light sweeps across the ear cups. The headphones stay perfectly still on the pedestal. Smooth, steady product-commercial camera move.

La caméra passe d'un côté du casque à l'autre, et le casque reste sur le socle. Sur les images du milieu, le bord courbe d'un décor absent de la photo apparaît derrière, et la bande de lumière demandée dans le prompt se voit à peine.
Nous avons lancé le même prompt sur la même photo deux fois, une fois avec les réglages par défaut et une fois avec watermark: false, et le coin montre la différence.

Portrait sous la pluie
She slowly turns her head toward the camera and gives a small smile while light rain keeps falling. The neon signs behind her flicker softly and the camera pushes in a little.

Elle passe du regard vers la gauche au visage tourné vers la caméra et sourit, dans l'ordre donné par le prompt, et le filigrane est sur chaque image. Le prompt demandait un léger travelling avant, et le plan passe de la taille aux épaules à un gros plan de son visage.
Travelling avant sur le lac
Slow aerial push-in over the water toward the rowboat. Mist drifts across the lake, the boat rocks gently and small ripples spread from its hull, and the golden light grows a little brighter.

La caméra avance vers la barque, comme demandé. À la fin, la barque remplit presque tout le cadre, et des ondulations partent de la coque.
Illustration du renard
The fox turns a page of the book with its paw and its ears twitch. A few orange leaves drift down from the tree and the branches sway gently. Keep the flat illustration style.

Le style d'illustration plate tient de la première à la dernière image pendant que des feuilles orange tombent. La caméra zoome de l'arbre entier vers une vue rapprochée du renard, ce que le prompt n'a jamais demandé ; les pages du livre se soulèvent, mais les images ne confirment pas que la patte en tourne une.

Sur 2 de nos 4 prompts, la caméra a bougé plus que demandé, vérifiez donc le cadrage avec un essai court. Un clip de 3 secondes en 480P est le plus court et le plus bas que listent les documents (référence de l'API image en vidéo d'Alibaba, vérifiée le 2 novembre 2026).
Ce que les fichiers mesuraient
| Clip | Format | Pixels | Images | Durée | Octets |
|---|---|---|---|---|---|
| Orbite, par défaut | 16:9 | 1286×716 | 123 | 128 s | 1 486 548 |
Orbite, watermark: false | 16:9 | 1286×716 | 121 | 98 s | 1 320 527 |
| Portrait sous la pluie | 9:16 | 716×1286 | 123 | 158 s | 2 108 577 |
| Lac | 16:9 | 1286×716 | 123 | 131 s | 2 691 558 |
| Renard | 1:1 | 960×960 | 123 | 92 s | 2 405 557 |
Chaque fichier indique 5.16 secondes alors que nous avions demandé 5 : c'est la piste audio, tandis que la piste vidéo dure 5.13 secondes à 123 images et 5.04 secondes à 121 images. Les cinq sont en H.264 à 24 fps avec une piste AAC stéréo, et un script de détection de coupes n'en a trouvé aucune.
Nos clips ont pris de 92 à 158 secondes entre l'envoi et le téléchargement, contre les 1 à 5 minutes qu'indiquent les documents d'Alibaba pour les tâches image en vidéo (référence de l'API image en vidéo d'Alibaba, vérifiée le 2 novembre 2026). Nous n'avons pas testé 480P, 1080P, d'autres durées, seed, une URL d'image publique, HappyHorse 1.0 ni le point de terminaison d'Alibaba. Pour choisir entre modèles, voyez HappyHorse 1.1 face à Seedance 2.0 et HappyHorse 1.1 face à Kling 3.0. Pour refaire un clip sans code, HappyHorse 1.1 est dans le générateur de vidéo IA.
Pourquoi les clips ont-ils du son ?
HappyHorse 1.1 a ajouté une bande-son aux cinq clips, alors qu'aucun de nos prompts n'en demandait. Personne ne les a écoutés : nous avons demandé à Gemini 3.8 Flash, via l'API OmniaKey, de décrire chaque piste.
| Clip | Ce que le modèle a décrit | Sonie moyenne |
|---|---|---|
| Orbite, par défaut | « Un rythme hip-hop avec des percussions syncopées, des claquements et des accords de synthé doux. » | −19.5 dB |
Orbite, watermark: false | « Une musique électronique calme et rythmée, avec un tempo régulier et des sons de synthé mélodiques » | −20.5 dB |
| Portrait sous la pluie | « Une mélodie de piano lente, mélancolique et douce, avec une ambiance atmosphérique légère » | −22.6 dB |
| Lac | « Une mélodie de piano lente, douce et sentimentale » | −20.2 dB |
| Renard | « Une mélodie d'ambiance calme et douce jouée avec des sons de cloche », plus « des pas qui craquent sur du gravier » | −27.4 dB |
Il n'a signalé aucune voix dans les clips. Le même prompt et la même photo, lancés deux fois, ont donné deux pistes différentes.
La référence image en vidéo d'Alibaba ne liste aucun champ audio ni option de silence, même si sa note de version 1.1 mentionne la synchronisation entre son et image (page des modèles récemment publiés d'Alibaba, vérifiée le 2 novembre 2026). Pour obtenir un fichier silencieux, retirez la piste après le téléchargement :
ffmpeg -i clip.mp4 -an -c:v copy silent.mp4
Nous l'avons lancé sur le clip avec watermark: false, et le résultat a une piste vidéo et aucune piste audio. L'image reste exactement la même, car -c:v copy copie la piste au lieu de la réencoder.
Combien de temps les résultats restent-ils disponibles ?
Sur OmniaKey, le lien signé vers votre MP4 dure environ 1 heure, et l'enregistrement de la tâche est conservé 24 heures ; interrogez de nouveau la tâche pour obtenir une URL fraîche (présentation de l'API média d'OmniaKey, vérifiée le 2 novembre 2026). Sur l'API propre d'Alibaba, l'URL de la vidéo et l'ID de la tâche durent tous deux 24 heures, puis une requête renvoie UNKNOWN et le fichier a disparu. Téléchargez dès qu'une tâche réussit.
Quelles erreurs allez-vous rencontrer ?
Aucune de nos cinq exécutions n'a échoué, cette liste vient donc de la documentation de l'API vidéo d'OmniaKey, vérifiée le 2 novembre 2026.
| Statut | Ce que cela signifie | Que faire |
|---|---|---|
400 invalid_request | corps mal formé, ou tâche sans input.prompt | vérifiez la forme de la requête ci-dessus |
400 model_price_error | durée hors de la plage du modèle, ou résolution sans prix | utilisez une durée et une résolution prises en charge |
403 model_not_allowed | votre clé ou votre groupe n'inclut pas le modèle | vérifiez l'accès au modèle de la clé |
409 idempotency_key_reused | la même clé a déjà été envoyée avec un autre corps | ne réutilisez une clé que pour des reprises identiques |
503 no_available_channel | aucun canal ne sert le modèle ou l'opération en ce moment | réessayez plus tard, ou regardez le tableau de bord |
Une tâche qui finit en failed est remboursée automatiquement, un rendu refusé ne coûte donc que votre temps (présentation de l'API média d'OmniaKey, vérifiée le 2 novembre 2026).
L'erreur à éviter est de lire un délai d'attente de votre côté comme une tâche échouée. Interrogez le même ID de tâche ; un nouvel envoi démarre une seconde tâche et une seconde facturation. Si vous renvoyez vraiment, gardez le même Idempotency-Key et le même corps, et vous récupérez la tâche d'origine.
Combien coûte un clip HappyHorse 1.1 ?
Un clip de 5 secondes en 720P coûte $0.70 au prix catalogue d'Alibaba à Singapour. Voici les prix par seconde d'Alibaba, tirés de sa page tarifaire vérifiée le 2 novembre 2026 :
| Résolution | Singapour | Pékin et Global |
|---|---|---|
| 480P | $0.07 | $0.0618845 |
| 720P | $0.14 | $0.123769 |
| 1080P | $0.18 | $0.165026 |
La facture est le prix par seconde multiplié par les secondes de sortie. Les requêtes échouées ne sont pas facturées. Singapour comprend aussi un quota gratuit de 10 secondes, valable 90 jours. Sur la page tarifaire, les prix Global s'appliquent à Francfort, à la Virginie et à Tokyo.
OmniaKey facture à la seconde de sortie rendue et débite d'avance à la création de la tâche, les tâches échouées ou annulées étant remboursées automatiquement ; pour les tarifs actuels, voyez la page HappyHorse 1.1.
Peut-on appeler Alibaba Cloud directement ?
Oui. HappyHorse est servi sur Alibaba Cloud Model Studio, avec des points de terminaison régionaux pour Singapour, les États-Unis (Virginie), Pékin, Francfort et Tokyo (référence de l'API image en vidéo d'Alibaba, vérifiée le 2 novembre 2026). Nos exécutions sont passées par l'API d'OmniaKey, ce qui suit vient donc des documents d'Alibaba.
- Créez avec
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesispour Singapour. - Envoyez l'en-tête
X-DashScope-Async: enable, sinon la requête échoue avec "current user api does not support synchronous calls". - Interrogez
GET .../api/v1/tasks/{task_id}environ toutes les 15 secondes ; le statut passe parPENDING,RUNNING,SUCCEEDED,FAILED,CANCELED,UNKNOWN. - Gardez le modèle, le point de terminaison et la clé dans la même région, car les appels entre régions échouent.
- Une clé obtient 5 requêtes par seconde et 5 tâches simultanées (page des limites de requêtes d'Alibaba, vérifiée le 2 novembre 2026).
La page tarifaire liste Tokyo, mais celle des limites de requêtes n'y liste pas image en vidéo 1.1, Tokyo reste donc non confirmé.
Questions fréquentes
Faut-il un prompt pour HappyHorse image en vidéo ?
Sur OmniaKey, oui : une tâche sans input.prompt reçoit 400 invalid_request (documentation de l'API vidéo d'OmniaKey, vérifiée le 2 novembre 2026). L'API propre d'Alibaba traite le prompt comme facultatif et prend la première image seule. Dans les deux cas, nommez le mouvement et le déplacement de caméra, comme nos prompts ci-dessus.
Comment retirer le filigrane Happy Horse ?
Envoyez parameters.watermark: false. La valeur par défaut true dessine un petit texte blanc "Happy Horse" dans le coin inférieur droit ; notre second clip d'orbite, envoyé avec false, est revenu propre.
Comment régler le rapport d'image ?
Recadrez la photo. Image en vidéo n'a pas de champ ratio et le clip suit la forme de la première image, notre photo 16:9 a donc donné un clip 16:9 et le portrait un clip 9:16. Gardez le recadrage entre 1:2.5 et 2.5:1.
Existe-t-il un HappyHorse 1.5 ?
Rien après 1.1 n'apparaît dans la liste des modèles, les tableaux tarifaires ni la page de cycle de vie d'Alibaba au 2 novembre 2026, et la version la plus récente de ces pages est happyhorse-1.1-i2v, publiée le 16 juin 2026. Certains sites utilisent le nom "Happy Horse 1.5".
HappyHorse 1.1 est-il meilleur que 1.0 pour image en vidéo ?
Alibaba dit que 1.1 améliore la qualité visuelle, le rendu du mouvement et la cohérence entre clips, et sa page tarifaire liste un palier 480P uniquement pour 1.1. 1.1 est sorti le 16 juin 2026 et 1.0 le 22 avril 2026. Au tarif de Singapour d'Alibaba, 1080P coûte $0.18 par seconde en 1.1 contre $0.24 en 1.0.
Sources vérifiées
- Alibaba Cloud : référence de l'API image en vidéo HappyHorse, vérifiée le 2 novembre 2026
- Alibaba Cloud : tarifs des modèles, vérifiée le 2 novembre 2026
- Alibaba Cloud : modèles, vérifiée le 2 novembre 2026
- Alibaba Cloud : modèles récemment publiés, vérifiée le 2 novembre 2026
- Alibaba Cloud : limites de requêtes, vérifiée le 2 novembre 2026
Documentation propre d'OmniaKey, vérifiée le 2 novembre 2026 : API vidéo et présentation de l'API média.
Modèles cités dans cet article
Articles similaires
HappyHorse 1.1 vs Seedance 2.0 : test avec le même prompt et prix
Trois prompts identiques, le même jour : Seedance 2.0 a fait les meilleurs clips, HappyHorse 1.1 les a faits deux fois plus vite.
HappyHorse 1.1 vs Kling 3.0 : test avec le même prompt et prix
Trois prompts identiques : HappyHorse 1.1 gagne la scène chargée et l'orbite du parfum, Kling 3.0 réussit le trick.
API Kling 3.0 : code de requête texte-vidéo et clips réels
Une tâche texte-vidéo tient en un seul POST avec le modèle kling-3.0. Voici le code de la requête, les champs attendus et deux clips de 5 secondes que nous avons créés et mesurés le 29 octobre 2026.

