Alibaba: HappyHorse 1.1
Alibaba HappyHorse 1.1 génère de courtes vidéos avec du son à partir d’un brief textuel, d’une première image ou d’un maximum de neuf images de référence. Ses profils producteur mettent l’accent sur l’amélioration du mouvement, des détails de la peau et de la cohérence des personnages entre clips. La sortie est un MP4 de 3 à 15 secondes à 24 images par seconde, avec des options 480p, 720p ou 1080p.
À propos du modèle
Cette description présente les capacités du modèle. Les entrées, sorties et options disponibles dans Ailoot pour la méthode sélectionnée figurent ci-dessous.
Alibaba HappyHorse 1.1 est une édition de génération vidéo avec des profils nommés séparément à partir de texte, d’une première image et de références. Le producteur met l’accent sur l’amélioration des détails visuels, du mouvement, de l’identité des personnages entre clips, de la stabilité du texte et de la synchronisation audiovisuelle. Le résultat est une courte vidéo avec du son, utile pour un plan de produit, une animation de portrait ou une petite scène de personnages. Choisissez le mode d’entrée selon ce qui doit définir la scène : un concept écrit, une image d’ouverture exacte ou plusieurs références visuelles.
Pour la génération à partir de texte, décrivez le sujet, le lieu, l’action, le cadrage, le mouvement de caméra et l’intention sonore. Pour une courte scène d’action, montrez un cycliste qui s’arrête près d’un café au bord d’une rivière pendant que la caméra se rapproche doucement du vélo garé. Adaptez l’action à un court clip et décrivez le moment final. Le guide textuel actuel du producteur autorise jusqu’à 5 000 caractères non chinois ou 2 500 caractères chinois et tronque le texte excédentaire. Organisez le brief afin que le sujet et l’action essentiels soient explicites, plutôt qu’enfouis dans des adjectifs répétés.
La génération à partir d’une première image utilise exactement une image pour l’ouverture. Préparez le sujet, la composition et le recadrage souhaité dans cette image fixe, puis décrivez ce qui doit bouger ou la manière dont la caméra doit changer. Les formats d’image documentés sont JPEG/JPG, PNG et WEBP, jusqu’à 20 Mo, avec les deux dimensions d’au moins 300 pixels et un rapport largeur/hauteur compris entre 1:2.5 et 2.5:1. La sortie se rapproche du palier de résolution choisi tout en conservant les proportions de l’image source. Un résultat portrait commence donc par une composition portrait adaptée plutôt que par une instruction de rapport sans lien.
La génération à partir de références accepte d’une à neuf images. Le prompt utilise [Image 1], [Image 2] et les positions suivantes pour les identifier dans l’ordre d’entrée. Précisez le rôle de chaque référence et nommez l’objet ou la personne concernés afin qu’une image de scène ne soit pas prise pour une source de personnage. Le guide de références accepte JPEG/JPG, PNG ou WEBP jusqu’à 20 Mo, exige un côté court d’au moins 400 pixels et recommande des références nettes en 720p ou plus. Évitez une référence fortement compressée dont les détails d’identification ont déjà disparu.
Pour une scène à plusieurs références, placez la personne d’une image dans la pièce d’une autre tout en conservant un manteau ou un produit fourni par une troisième. Décrivez l’interaction et la caméra dans le même brief. Le profil de références 1.1 met en avant la stabilité des sujets, le style de la scène et le mouvement cinématographique ; examinez le résultat réel pour l’identité souhaitée, les inscriptions du produit et l’emplacement spatial. Plusieurs images donnent davantage d’informations au brief, mais la revue doit toujours vérifier les caractéristiques transmises à la vidéo.
Le producteur indique des sorties 480p, 720p et 1080p pour les modes de génération 1.1, avec une durée entière de trois à quinze secondes et du MP4 à 24 images par seconde. La réponse API décrit un encodage H.264. La génération à partir de texte et de références propose notamment les formats 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 et 21:9 ; la génération à partir d’une première image suit l’image d’entrée. Choisissez le format adapté à la destination et laissez de la place pour les légendes ou les éléments de mise en page ajoutés ensuite. Examinez le cadrage réel de la vidéo renvoyée aux dimensions de diffusion prévues.
La sortie de la famille de modèles comprend du son. Donnez à l’interprétation ou à l’atmosphère un rôle clair dans le brief et examinez tout dialogue, effet ou piste de fond avec l’image. Gardez le contenu parlé suffisamment court pour l’action et les pauses au lieu de comprimer un long script dans un bref plan. Vérifiez les mouvements de lèvres, l’attribution des voix et les mots réels lorsqu’il y a de la parole. L’acceptation d’une langue de prompt ne définit pas à elle seule une prononciation garantie ni une entrée de référence vocale distincte.
Le processus documenté du producteur est asynchrone : un identifiant de tâche suit le traitement et un résultat réussi fournit l’adresse de la vidéo. Le lien de résultat et les consultations de tâches sont documentés avec une période de validité de vingt-quatre heures. Conservez le clip terminé, les références et le prompt comme dossier de révision. Les guides documentent aussi des contrôles de seed et de filigrane. Un seed fixe peut aider à comparer, mais le producteur indique explicitement qu’il ne garantit pas de résultats identiques : jugez donc le fichier renvoyé au lieu de supposer qu’un réglage fixe chaque image.
HappyHorse 1.0 et 1.1 sont des éditions distinctes. Le tableau de sortie 1.1 ajoute la 480p aux options 720p et 1080p de la version 1.0, et les pages de modèles 1.1 décrivent des améliorations des détails, du mouvement et de la cohérence. Le profil de modification vidéo HappyHorse 1.0 nommé séparément a ses propres entrées et limites et ne constitue pas un mode de modification à attribuer implicitement à la version 1.1. Examinez tout le clip 1.1 pour l’identité, le mouvement, le cadrage, le texte et le son, puis apportez une correction précise en conservant les parties réussies du brief.
Ailoot Ultra · Vidéo POST /v1/videos alibaba/happyhorse-1.1
alibaba/happyhorse-1.1Premiers pas
Alibaba HappyHorse 1.1 génère de courtes vidéos avec du son à partir d’un brief textuel, d’une première image ou d’un maximum de neuf images de référence. Ses profils producteur mettent l’accent sur l’amélioration du mouvement, des détails de la peau et de la cohérence des personnages entre clips. La sortie est un MP4 de 3 à 15 secondes à 24 images par seconde, avec des options 480p, 720p ou 1080p.
- Entrées acceptées
- Texte
- Résultats
- Vidéo
Disponible dans Ailoot · entrées et méthodes
Ailoot Ultra · Vidéo POST /v1/videos
- Entrée
text- Sortie
video- Format de sortie
- mp4
- Nombre de sorties
- Jusqu’à 4 sorties
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites alibaba/happyhorse-1.1 | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 Nombre maximal d’octets: 10 000 Unité: octets UTF8 | Par défaut— |
Champduration | Typeinteger | ExigenceObligatoire | Valeurs et limites Minimum: 3 Maximum: 15 Unité: secondes | Par défaut— |
Champresolution | Typestring | ExigenceObligatoire | Valeurs et limites 720p | Par défaut— |
Champaspect_ratio | Typestring | ExigenceObligatoire | Valeurs et limites 16:9 | Par défaut— |
Combinaisons d’éléments d’entrée
Texte vers vidéo · Obligatoire : prompt
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrecontent_type | Contratapplication/json |
Paramètrerequired | Contratmodel, prompt, duration, resolution, aspect_ratio |
Paramètreother_options | Contratfalse |
Paramètreresolution | Contrat720p |
Paramètreprompt_max_bytes | Contrat10000 |
Paramètreduration_integer_range | Contrat3, 15 |
Paramètreaspect_ratio | Contrat16:9 |
Paramètregenerate_audio | Contratdoit être omis plutôt que défini sur false ; AAC inclus |
Paramètrematerial_types | Contrattext |
Paramètreadditional_properties | Contratfalse |
Alias de méthode : /v1/videos/generations, /videos, /videos/generations
Cycle de vie : submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
Créez une seule fois et enregistrez l’ID renvoyé.
Interrogez périodiquement l’état d’origine ; conservez chaque ressource terminée et sa durée.
Tarifs
Calcul du coût final
Les tarifs affichés servent à estimer le coût avant la génération. Le montant final est calculé à partir du coût enregistré pour la génération d’origine. La durée mesurée du résultat et les quantités prévisionnelles ne constituent pas la quantité finale facturable.
Les tarifs n’ajoutent pas d’options de requête. Les paramètres pris en charge figurent dans la méthode sélectionnée.
- Mode rapide
- Non précisé Lorsque le mode rapide est sélectionné
- Mode Flex
- Non précisé Lorsque le mode flex est sélectionné
- Effort de raisonnement maximal
- Non précisé Lorsque l’effort de raisonnement maximal utilise l’ajustement par défaut (default)
Tarifs estimés à des fins de comparaison
Prix par configuration
Associez chaque coût aux conditions indiquées. Utilisez un seul tarif pour chaque ensemble de configurations alternatives.
| Configuration | Barème tarifaire | Quantité prévisionnelle | Unité de facturation | Conditions de facturation | Coût |
|---|---|---|---|---|---|
| ConfigurationTarifs de base des jetons | Barème tarifaireTarif de base | Quantité prévisionnelle— | Unité de facturation— | Conditions de facturation— | Coût Entrée · Tokens en entrée · Estimation à des fins de comparaison uniquement — / 1K tokens Sortie · Tokens en sortie · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Lecture du cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache, 1 h · Estimation à des fins de comparaison uniquement — / 1K tokens |
| ConfigurationTarif vidéo | Barème tarifaire— | Quantité prévisionnelle— | Unité de facturationpar seconde de vidéo | Conditions de facturationresolution: 1080p | Coût Sortie · Tarif vidéo · Estimation à des fins de comparaison uniquement $0.2556 par seconde de vidéo |
| ConfigurationTarif vidéo | Barème tarifaire— | Quantité prévisionnelle— | Unité de facturationpar seconde de vidéo | Conditions de facturationresolution: 720p | Coût Sortie · Tarif vidéo · Estimation à des fins de comparaison uniquement $0.1976 par seconde de vidéo |
| ConfigurationCoût estimé de la génération | Barème tarifaire— | Quantité prévisionnelleEstimation pour une génération | Unité de facturation— | Conditions de facturation— | Coût Sortie · Coût estimé de génération · Estimation à des fins de comparaison uniquement $0.5928 estimation avant génération Cette estimation ne constitue ni des frais supplémentaires ni un tarif fixe pour la génération terminée. |
Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. Fonctionnement de la réservation et du débit →
Détails du tarif de référence
Les barèmes de référence du modèle ne modifient ni la sélection de méthode, ni les devis, ni les coûts. Les frais actifs utilisent les tarifs de la méthode Ailoot sélectionnée.
Références tarifaires des configurations vidéo
Prix par configuration
Associez chaque coût aux conditions indiquées. Utilisez un seul tarif pour chaque ensemble de configurations alternatives.
| Configuration | Conditions de facturation | Coût |
|---|---|---|
| ConfigurationTarif vidéo | Conditions de facturationresolution: 720p | Coût Sortie · Tarif vidéo $0.1976 par seconde de vidéo Tarif publié de référence pour la configuration affichée. Les frais définitifs correspondent à la configuration réellement facturée. |
| ConfigurationTarif vidéo | Conditions de facturationresolution: 1080p | Coût Sortie · Tarif vidéo $0.2556 par seconde de vidéo Tarif publié de référence pour la configuration affichée. Les frais définitifs correspondent à la configuration réellement facturée. |
Exemples de requêtes
Ailoot Ultra · Vidéo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "alibaba/happyhorse-1.1", "prompt": "A cat in a spacesuit walking on the Moon", "duration": 3, "resolution": "720p", "aspect_ratio": "16:9"}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
Recevoir et enregistrer les résultats
Ailoot Ultra · Vidéo
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Vérifier l’état de la tâche
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_STATUS_URL'
import json
from pathlib import Path
from urllib.parse import quote
r=json.loads(Path('result.json').read_text())
if not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')
Path('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))
PY_STATUS_URL
curl --fail-with-body --silent --show-error "$(cat status-url.txt)" \
-H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path('status.json').read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print('Keep the complete JSON and response headers; do not resubmit an unknown creation.')
PY_RESULT
Autres lectures de contenu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path('status.json').read_text())
if r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')
if not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')
urls=[]
for i,u in enumerate(r.get('data',[])):
if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')
urls.append((str(i),u))
for label,path in urls:
u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)
if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')
target=Path('owned-'+label+'.bin')
subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)
print('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')
PY_ASSETS
Conserver tous les résultats terminés
Enregistrez chaque vidéo terminée ou fichier renvoyé ; récupérez chaque URL de ressource effectivement renvoyée.
Une fois la tâche terminée, data[] contient toutes les URL de contenu signées dont vous êtes propriétaire. Récupérez chaque URL renvoyée, ou utilisez le point de terminaison de contenu avec index défini sur un index de sortie réel. Une tâche d’origine échouée peut renvoyer charge_pending_check ; vérifiez cette tâche d’origine au lieu de la créer à nouveau.
Si la réponse d’origine doit être vérifiée
Consultez la tâche d’origine existante ; ne soumettez jamais de nouveau un envoi dont l’issue est inconnue.
Nombre maximal de sorties : 4.
Champs de la réponse
| Champ | Type | Signification |
|---|---|---|
Champid | Typestring | Signification— |
Champobject | Typestring | Signification— |
Champmodel | Typestring | Signification— |
Champstatus | Typestring | Signification— |
Champdata[] | Typesigned content URL | Signification— |
Champcharge_pending_check | Typeboolean | Signification— |
Champerror.code | Typestring | Signification— |
Champerror.message | Typestring | Signification— |
Champoperation_id | Typestring | SignificationRéponse HTTP503 result_pending_check de l’état ou du contenu d’origine : le même ID vidéo public d’origine est renvoyé dans id. |
Champerror.type | Typestring | Significationserver_error en cas de HTTP503 result_pending_check. |
Erreurs et étapes suivantes
| Réponse | Condition | Étape suivante |
|---|---|---|
Réponse400 · invalid_request_error | ConditionLa lecture du corps brut de la requête échoue avant l’analyse du profil vidéo | Étape suivanteConservez la réponse renvoyée et corrigez le corps illisible de la requête. |
Réponse422 · price_unavailable | ConditionL’analyse du profil vidéo exact échoue, ou le profil entièrement analysé ne dispose d’aucune fiche tarifaire exacte prête à l’emploi | Étape suivanteConservez la réponse ; utilisez le profil autorisé complet et exact ainsi que sa fiche publiée. Cette branche s’exécute avant tout envoi au fournisseur. |
Réponse409 · video_not_ready | ConditionLe contenu du résultat d’origine n’est pas encore disponible | Étape suivanteInterrogez périodiquement l’ID d’origine renvoyé et respectez Retry-After. |
Réponseserver_error | ConditionLa réponse renvoyée indique que l’opération ou le résultat nécessite une vérification | Étape suivanteConservez l’identifiant d’opération/de tâche initialement renvoyé, les en-têtes de la requête et la réponse ; poursuivez les lectures prises en charge de cette opération d’origine. Ne soumettez pas à nouveau la requête de création. |
Réponse503 · result_pending_check | ConditionGET de l’état ou du contenu d’origine : la tâche n’est pas publiée, la tâche d’origine n’est ni failed, ni cancelled, ni expired, et l’état local est unknown ou l’état de la tâche d’origine est completed. | Étape suivanteConservez id et operation_id d’origine, qui correspondent au même ID vidéo public, ainsi que la réponse et les en-têtes ; consultez uniquement l’état ou le contenu d’origine. Ne soumettez jamais de nouvelle requête de génération. |
Alias
Alias du modèle
Ailoot Ultra alibaba/happyhorse-1.1
Alias des chemins de méthode
/v1/videos/generations, /videos, /videos/generations
ID d’appel associés
FAQ · Alibaba: HappyHorse 1.1
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/videos·alibaba/happyhorse-1.1:text→video- Quels champs la requête utilise-t-elle ?
POST /v1/videos·alibaba/happyhorse-1.1:model,prompt,duration,resolution,aspect_ratio- Quelles limites s’appliquent ?
POST /v1/videos·alibaba/happyhorse-1.1:duration.minimum:3;duration.maximum:15