GPT-6 Sol et Claude Opus 5.5 disponiblesGPT-6 Sol à moitié prix par rapport à 5.6 Sol

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.

Kiki, OmniaKey COO11 minutes de lecture
Sur cette page

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ération image_to_video et exactement un first_frame dans input.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 ffmpeg retire 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 :

bash
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.

ChampValeurRemarques
modelhappyhorse-1.1-i2vl'ID du modèle 1.1 image en vidéo
typevideole type de fichier que crée la tâche
operationimage_to_videonom sans préfixe
input.prompttexteOmniaKey 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.mediaexactement un {"type": "first_frame", "url": ...}une URL HTTPS publique ou un data URI
parameters.resolution480P, 720P ou 1080Penvoyez-le toujours : la valeur par défaut d'Alibaba est 1080P
parameters.durationsecondes entières, de 3 à 15obligatoire sur OmniaKey
parameters.watermarktrue (par défaut) ou falsefalse retire le texte "Happy Horse"
parameters.seed0 à 2147483647la 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 renvoie 409 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.

python
"""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 :

bash
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 :

text
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: 1010 de 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

prompt
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.
Huit images d'un casque noir sur un socle en pierre. La caméra passe d'un côté à l'autre et, sur les images du milieu, le bord courbe d'un décor apparaît derrière.
Huit images du clip d'orbite dans l'ordre chronologique, de 0.0 à 4.85 secondes, filigrane sur false. HappyHorse 1.1 via l'API OmniaKey, image en vidéo, 5 secondes, 720P, réalisé le 2 novembre 2026.

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.

Le coin inférieur droit de deux clips. Celui du haut affiche le texte blanc Happy Horse, celui du bas, avec le filigrane sur false, est propre.
Coin inférieur droit de la dernière image de chaque clip d'orbite, agrandi. En haut : réglages par défaut. En bas : filigrane sur false. HappyHorse 1.1 via l'API OmniaKey, image en vidéo, 5 secondes, 720P, réalisé le 2 novembre 2026.

Portrait sous la pluie

prompt
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.
Quatre images d'une femme en imperméable jaune dans une rue néon mouillée. Elle tourne la tête de la gauche vers la caméra et sourit, tandis que le plan passe de la taille aux épaules à un gros plan.
Quatre images du clip portrait sous la pluie dans l'ordre chronologique, de 0.0 à 4.85 secondes, avec le filigrane par défaut. HappyHorse 1.1 via l'API OmniaKey, image en vidéo, 5 secondes, 720P, réalisé le 2 novembre 2026.

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

prompt
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.
Huit images d'une barque en bois sur un lac brumeux au lever du jour. La caméra avance jusqu'à ce que la barque remplisse presque tout le cadre, et des ondulations partent de la coque.
Huit images du clip du lac dans l'ordre chronologique, de 0.0 à 4.85 secondes, avec le filigrane par défaut. HappyHorse 1.1 via l'API OmniaKey, image en vidéo, 5 secondes, 720P, réalisé le 2 novembre 2026.

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

prompt
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.
Quatre images d'une illustration plate d'un renard qui lit sous un arbre d'automne. Des feuilles orange tombent et la vue zoome de l'arbre entier vers le renard.
Quatre images du clip du renard dans l'ordre chronologique, de 0.0 à 4.85 secondes, avec le filigrane par défaut. HappyHorse 1.1 via l'API OmniaKey, image en vidéo, 5 secondes, 720P, réalisé le 2 novembre 2026.

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.

À gauche : la photo du renard que nous avons envoyée, avec l'arbre entier. À droite : la dernière image du clip, beaucoup plus près du renard et de son livre ouvert, dans le même style plat, avec un filigrane Happy Horse.
À gauche : la photo envoyée comme première image. À droite : la dernière image du clip du renard. HappyHorse 1.1 via l'API OmniaKey, image en vidéo, 5 secondes, 720P, réalisé le 2 novembre 2026.

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

ClipFormatPixelsImagesDuréeOctets
Orbite, par défaut16:91286×716123128 s1 486 548
Orbite, watermark: false16:91286×71612198 s1 320 527
Portrait sous la pluie9:16716×1286123158 s2 108 577
Lac16:91286×716123131 s2 691 558
Renard1:1960×96012392 s2 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.

ClipCe que le modèle a décritSonie 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 :

bash
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.

StatutCe que cela signifieQue faire
400 invalid_requestcorps mal formé, ou tâche sans input.promptvérifiez la forme de la requête ci-dessus
400 model_price_errordurée hors de la plage du modèle, ou résolution sans prixutilisez une durée et une résolution prises en charge
403 model_not_allowedvotre clé ou votre groupe n'inclut pas le modèlevérifiez l'accès au modèle de la clé
409 idempotency_key_reusedla même clé a déjà été envoyée avec un autre corpsne réutilisez une clé que pour des reprises identiques
503 no_available_channelaucun canal ne sert le modèle ou l'opération en ce momentré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ésolutionSingapourPé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-synthesis pour 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 par PENDING, 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

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

HappyHorse 1.1image en vidéovidéo IAAPI vidéoPython

Articles similaires

Articles récents

Guides populaires