happyhorse-1.1-r2v
Modèle de génération vidéo à partir d’images de référence et d’un scénario textuel. Il aide à préserver l’apparence des personnages, les objets et le style visuel dans une nouvelle scène.
- Ailoot · Vidéo
POST /v1/videos/generationshappyhorse-1.1-r2v - Ailoot · Vidéo
POST /v1/videos/generationshappyhorse-r2v - Ailoot · Vidéo
POST /v1/videos/generationshappyhorse-r2v-latest
À 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.
HappyHorse-1.1-R2V crée une nouvelle scène vidéo à partir d’images de référence et d’instructions textuelles. Alibaba destine ce modèle à préserver des personnages, des objets et un style visuel reconnaissables lors de la génération de mouvements. Les références définissent le contenu et l’apparence de la scène, et le texte décrit la manière dont ces éléments doivent interagir.
Rôle des références visuelles
Il est possible d’utiliser entre une et neuf images. Elles peuvent définir un personnage, un objet, un environnement ou un traitement artistique. La description peut désigner le numéro d’une référence et un objet précis qui y figure afin de relier le matériau visuel à la partie souhaitée de l’action. Cela est particulièrement utile pour réunir des éléments de plusieurs images dans une même composition.
Contrairement au mode avec une image initiale, les références servent ici de supports au contenu d’une nouvelle scène. Les instructions textuelles sont obligatoires : elles relient l’apparence des objets à l’action, aux mouvements de caméra et à la mise en scène générale. Le fabricant souligne la cohérence visuelle et le caractère cinématographique des mouvements ; le résultat reste une génération, et non un montage des images sources.
Les formats JPEG, JPG, PNG et WEBP sont acceptés, jusqu’à 20 Mo par fichier. Le côté le plus court de l’image doit mesurer au moins 400 pixels ; des images de niveau 720P ou supérieur sont recommandées. L’entrée de ce mode se compose bien d’images et de texte.
Durée, cadrage et son
Le résultat est enregistré en MP4 à 24 images par seconde. La durée est un nombre entier de 3 à 15 secondes. La résolution peut être choisie parmi 480P, 720P et 1080P ; la génération d’un accompagnement sonore est prise en charge.
Des formats horizontaux, verticaux et carrés sont disponibles : 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 et 21:9. Le choix du format permet de définir à l’avance l’espace de composition de la nouvelle scène.
Le texte peut être rédigé dans n’importe quelle langue. La limite est de 5000 caractères non chinois ou 2500 caractères chinois ; la partie excédentaire est ignorée. Les rôles principaux des références, l’action et les mouvements doivent tenir dans ce volume. La graine aléatoire initiale peut favoriser des variantes similaires, mais ne garantit pas la reproduction exacte d’une vidéo.
Ailoot · Vidéo POST /v1/videos/generations happyhorse-1.1-r2v
happyhorse-1.1-r2vhappyhorse-1.1-r2vhappyhorse-r2vhappyhorse-r2v-latest
Premiers pas
Modèle de génération vidéo à partir d’images de référence et d’un scénario textuel. Il aide à préserver l’apparence des personnages, les objets et le style visuel dans une nouvelle scène.
- Entrées acceptées
- Texte · Images
- Résultats
- Vidéo
Disponible dans Ailoot · entrées et méthodes
Ailoot · Vidéo POST /v1/videos/generations
- Types d’entrée
text,image- Types de sortie
video- Format de sortie
- mp4
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites happyhorse-1.1-r2v | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 | Par défaut— |
Champduration | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 3 Maximum: 15 Unité: secondes | Par défaut5 |
Champresolution | Typestring | ExigenceFacultatif | Valeurs et limites 480P, 720P, 1080P | Par défaut720P |
Champratio | Typestring | ExigenceFacultatif | Valeurs et limites 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Par défaut16:9 |
Champimage_urls | Typehttps_url|data_image_url[] | ExigenceObligatoire | Valeurs et limites Nombre minimal d’éléments: 1 Nombre maximal d’éléments: 9 Nombre maximal d’octets décodés: 20 971 520 Types MIME: image/jpeg, image/png, image/webp | Par défaut— |
Combinaisons d’éléments d’entrée
reference_images_to_video · Obligatoire : prompt, image_urls
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrecontent_type | Contratapplication/json |
Paramètrerequired | Contratmodel, prompt, image_urls |
Paramètrematerial_types | Contrattext, image |
Paramètreoptional | Contratduration, resolution, ratio |
Paramètreduration_integer_range | Contrat3, 15 |
Paramètredefault_duration | Contrat5 |
Paramètreresolution | Contrat480P, 720P, 1080P |
Paramètredefault_resolution | Contrat720P |
Paramètreratio | Contrat16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 |
Paramètreratio_must_omit | Contratfalse |
Paramètreimage_urls | Contrat{"min_count":1,"max_count":9,"schemes":["https","données d’image matricielle en base64"],"max_data_image_bytes":20971520} |
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
Les structures des méthodes et les identifiants sont exacts ; la capacité du fournisseur est distincte de l’admission.
Tarifs
Tarifs des méthodes Ailoot
POST /v1/videos/generations- Sortie
- 0,18 USD par seconde en 1080p
- Sortie
- 0,07 USD par seconde en 480p
- Sortie
- 0,14 USD par seconde en 720p
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 →
Exemples de requêtes
Ailoot · Vidéo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-1.1-r2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
z=urlsplit(u) if isinstance(u,str) else None
if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["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/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT
Recevoir et enregistrer les résultats
Ailoot · 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}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
for x in r.get("data",[]):print(x)
PY_STATUS
Enregistrer toutes les ressources terminées
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
u=urljoin("https://api.ailoot.ai",x)
z=urlsplit(u)
if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
index=$((index + 1))
done < asset-urls.txt
Autres lectures de contenu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
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.
Conservez chaque élément de data et chaque index de sortie renvoyés. content_url correspond uniquement au premier ; récupérez chaque chemin de contenu et chaque ressource réels. GET sur le contenu sans index ne renvoie pas toutes les sorties.
Si la réponse d’origine doit être vérifiée
Consultez la tâche d’origine existante ; ne soumettez jamais à nouveau un envoi dont l’issue est inconnue.
Champs de la réponse
| Champ | Type |
|---|---|
Champid | Typestring |
Champobject | Typestring |
Champmodel | Typestring |
Champstatus | Typestring |
Champcontent_url | Typesigned URL |
Champdata[] | Typesigned URL |
Champusage | Typeobject |
Champresult_pending_check | Typeboolean |
Erreurs et étapes suivantes
| Réponse | Condition | Étape suivante |
|---|---|---|
Réponse400 · invalid_request_error | ConditionChamps obligatoires, représentation des contenus ou valeur de paramètre non valides | Étape suivanteCorrigez les champs indiqués avant une nouvelle requête de création. |
Réponse409 · video_not_ready | ConditionLe contenu du résultat d’origine n’est pas encore disponible | Étape suivanteInterrogez l’identifiant 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. |
Alias
Alias du modèle
Ailoot happyhorse-1.1-r2v, happyhorse-r2v, happyhorse-r2v-latest
Alias des chemins de méthode
Utilisez les chemins de méthode indiqués ci-dessus.
ID d’appel associés
Ailoot · Vidéo POST /v1/videos/generations happyhorse-r2v
happyhorse-r2vhappyhorse-1.1-r2vhappyhorse-r2vhappyhorse-r2v-latest
Premiers pas
Modèle de génération vidéo à partir d’images de référence et d’un scénario textuel. Il aide à préserver l’apparence des personnages, les objets et le style visuel dans une nouvelle scène.
- Entrées acceptées
- Texte · Images
- Résultats
- Vidéo
Disponible dans Ailoot · entrées et méthodes
Ailoot · Vidéo POST /v1/videos/generations
- Types d’entrée
text,image- Types de sortie
video- Format de sortie
- mp4
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites happyhorse-r2v | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 | Par défaut— |
Champduration | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 3 Maximum: 15 Unité: secondes | Par défaut5 |
Champresolution | Typestring | ExigenceFacultatif | Valeurs et limites 480P, 720P, 1080P | Par défaut720P |
Champratio | Typestring | ExigenceFacultatif | Valeurs et limites 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Par défaut16:9 |
Champimage_urls | Typehttps_url|data_image_url[] | ExigenceObligatoire | Valeurs et limites Nombre minimal d’éléments: 1 Nombre maximal d’éléments: 9 Nombre maximal d’octets décodés: 20 971 520 Types MIME: image/jpeg, image/png, image/webp | Par défaut— |
Combinaisons d’éléments d’entrée
reference_images_to_video · Obligatoire : prompt, image_urls
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrematerial_types | Contrattext, image |
Paramètrerequired | Contratnull |
Paramètreoptional_controls | Contratnull |
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
Les structures des méthodes et les identifiants sont exacts ; la capacité du fournisseur est distincte de l’admission.
Tarifs
Tarifs des méthodes Ailoot
POST /v1/videos/generations- Sortie
- 0,18 USD par seconde en 1080p
- Sortie
- 0,07 USD par seconde en 480p
- Sortie
- 0,14 USD par seconde en 720p
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 →
Exemples de requêtes
Ailoot · Vidéo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-r2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
z=urlsplit(u) if isinstance(u,str) else None
if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["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/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT
Recevoir et enregistrer les résultats
Ailoot · 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}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
for x in r.get("data",[]):print(x)
PY_STATUS
Enregistrer toutes les ressources terminées
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
u=urljoin("https://api.ailoot.ai",x)
z=urlsplit(u)
if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
index=$((index + 1))
done < asset-urls.txt
Autres lectures de contenu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
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.
Conservez chaque élément de data et chaque index de sortie renvoyés. content_url correspond uniquement au premier ; récupérez chaque chemin de contenu et chaque ressource réels. GET sur le contenu sans index ne renvoie pas toutes les sorties.
Si la réponse d’origine doit être vérifiée
Consultez la tâche d’origine existante ; ne soumettez jamais à nouveau un envoi dont l’issue est inconnue.
Champs de la réponse
| Champ | Type |
|---|---|
Champid | Typestring |
Champobject | Typestring |
Champmodel | Typestring |
Champstatus | Typestring |
Champcontent_url | Typesigned URL |
Champdata[] | Typesigned URL |
Champusage | Typeobject |
Champresult_pending_check | Typeboolean |
Erreurs et étapes suivantes
| Réponse | Condition | Étape suivante |
|---|---|---|
Réponse400 · invalid_request_error | ConditionChamps obligatoires, représentation des contenus ou valeur de paramètre non valides | Étape suivanteCorrigez les champs indiqués avant une nouvelle requête de création. |
Réponse409 · video_not_ready | ConditionLe contenu du résultat d’origine n’est pas encore disponible | Étape suivanteInterrogez l’identifiant 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. |
Alias
Alias du modèle
Ailoot happyhorse-1.1-r2v, happyhorse-r2v, happyhorse-r2v-latest
Alias des chemins de méthode
Utilisez les chemins de méthode indiqués ci-dessus.
ID d’appel associés
Ailoot · Vidéo POST /v1/videos/generations happyhorse-r2v-latest
happyhorse-r2v-latesthappyhorse-1.1-r2vhappyhorse-r2vhappyhorse-r2v-latest
Premiers pas
Modèle de génération vidéo à partir d’images de référence et d’un scénario textuel. Il aide à préserver l’apparence des personnages, les objets et le style visuel dans une nouvelle scène.
- Entrées acceptées
- Texte · Images
- Résultats
- Vidéo
Disponible dans Ailoot · entrées et méthodes
Ailoot · Vidéo POST /v1/videos/generations
- Types d’entrée
text,image- Types de sortie
video- Format de sortie
- mp4
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites happyhorse-r2v-latest | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 | Par défaut— |
Champduration | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 3 Maximum: 15 Unité: secondes | Par défaut5 |
Champresolution | Typestring | ExigenceFacultatif | Valeurs et limites 480P, 720P, 1080P | Par défaut720P |
Champratio | Typestring | ExigenceFacultatif | Valeurs et limites 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Par défaut16:9 |
Champimage_urls | Typehttps_url|data_image_url[] | ExigenceObligatoire | Valeurs et limites Nombre minimal d’éléments: 1 Nombre maximal d’éléments: 9 Nombre maximal d’octets décodés: 20 971 520 Types MIME: image/jpeg, image/png, image/webp | Par défaut— |
Combinaisons d’éléments d’entrée
reference_images_to_video · Obligatoire : prompt, image_urls
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrematerial_types | Contrattext, image |
Paramètrerequired | Contratnull |
Paramètreoptional_controls | Contratnull |
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
Les structures des méthodes et les identifiants sont exacts ; la capacité du fournisseur est distincte de l’admission.
Tarifs
Tarifs des méthodes Ailoot
POST /v1/videos/generations- Sortie
- 0,18 USD par seconde en 1080p
- Sortie
- 0,07 USD par seconde en 480p
- Sortie
- 0,14 USD par seconde en 720p
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 →
Exemples de requêtes
Ailoot · Vidéo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-r2v-latest", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
z=urlsplit(u) if isinstance(u,str) else None
if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["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/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT
Recevoir et enregistrer les résultats
Ailoot · 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}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
for x in r.get("data",[]):print(x)
PY_STATUS
Enregistrer toutes les ressources terminées
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
u=urljoin("https://api.ailoot.ai",x)
z=urlsplit(u)
if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
index=$((index + 1))
done < asset-urls.txt
Autres lectures de contenu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
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.
Conservez chaque élément de data et chaque index de sortie renvoyés. content_url correspond uniquement au premier ; récupérez chaque chemin de contenu et chaque ressource réels. GET sur le contenu sans index ne renvoie pas toutes les sorties.
Si la réponse d’origine doit être vérifiée
Consultez la tâche d’origine existante ; ne soumettez jamais à nouveau un envoi dont l’issue est inconnue.
Champs de la réponse
| Champ | Type |
|---|---|
Champid | Typestring |
Champobject | Typestring |
Champmodel | Typestring |
Champstatus | Typestring |
Champcontent_url | Typesigned URL |
Champdata[] | Typesigned URL |
Champusage | Typeobject |
Champresult_pending_check | Typeboolean |
Erreurs et étapes suivantes
| Réponse | Condition | Étape suivante |
|---|---|---|
Réponse400 · invalid_request_error | ConditionChamps obligatoires, représentation des contenus ou valeur de paramètre non valides | Étape suivanteCorrigez les champs indiqués avant une nouvelle requête de création. |
Réponse409 · video_not_ready | ConditionLe contenu du résultat d’origine n’est pas encore disponible | Étape suivanteInterrogez l’identifiant 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. |
Alias
Alias du modèle
Ailoot happyhorse-1.1-r2v, happyhorse-r2v, happyhorse-r2v-latest
Alias des chemins de méthode
Utilisez les chemins de méthode indiqués ci-dessus.
ID d’appel associés
FAQ · happyhorse-1.1-r2v
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/videos/generations·happyhorse-1.1-r2v:text,image→videoPOST /v1/videos/generations·happyhorse-r2v:text,image→videoPOST /v1/videos/generations·happyhorse-r2v-latest:text,image→video- Quels champs la requête utilise-t-elle ?
POST /v1/videos/generations·happyhorse-1.1-r2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-r2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-r2v-latest:model,prompt,duration,resolution,ratio,image_urls- Quelles limites s’appliquent ?
POST /v1/videos/generations·happyhorse-1.1-r2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-r2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-r2v-latest:duration.minimum:3;duration.maximum:15