wan2.7-i2v
Wan 2.7 I2V crée une vidéo à partir d’une image obligatoire, avec des consignes écrites facultatives et un guidage facultatif par image finale. Choisissez la durée, la résolution et la valeur de ratio avec Ailoot.
À 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.
Utilisez wan2.7-i2v avec model et image sur /v1/videos. La requête expose prompt, negative_prompt, end_image, driving_audio, prompt_extend et watermark. Sélectionnez une durée de deux à quinze secondes, une résolution de 720P ou 1080P et ratio parmi 16:9, 9:16, 1:1, 4:3 ou 3:4.
Décrivez l’action qui doit se développer à partir de l’image source et les détails à conserver dans la scène. Séparez le mouvement du sujet de la trajectoire de caméra. Une image finale peut identifier la composition de fin souhaitée, tandis qu’une entrée audio doit rester attachée à la requête pour un examen ultérieur. Gardez l’image, l’image finale facultative et les paramètres choisis avec le plan terminé.
Soumettez le plan une seule fois via /v1/videos et conservez l’identifiant de requête renvoyé. Interrogez cette même opération via /v1/videos/{request_id}, puis enregistrez toutes les vidéos terminées et la réponse complète. Confrontez l’action entière et la composition finale aux sources et aux consignes fournies.
Ailoot Ultra · Video POST /v1/videos wan2.7-i2v
wan2.7-i2vPremiers pas
Wan 2.7 I2V crée une vidéo à partir d’une image obligatoire, avec des consignes écrites facultatives et un guidage facultatif par image finale. Choisissez la durée, la résolution et la valeur de ratio avec Ailoot.
- Entrées acceptées
- Texte · Images
- Résultats
- Vidéo
Disponible dans Ailoot · entrées et méthodes
Ailoot Ultra · Video POST /v1/videos
- Entrée
text,image- Sortie
video
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites wan2.7-i2v Conditions: Utilisez exactement ce sélecteur de routage Ailoot. | Par défaut— |
Champprompt | Typestring | ExigenceFacultatif | Valeurs et limites Conditions: Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée. | Par défaut |
Champnegative_prompt | Typestring | ExigenceFacultatif | Valeurs et limites Conditions: Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée. | Par défaut |
Champimage | Typestring | ExigenceObligatoire | Valeurs et limites Conditions: Fournissez l’URL réelle et accessible de votre image. Une liste n’est acceptée que si le schéma du paramètre prévoit un tableau. | Par défaut— |
Champend_image | Typestring | ExigenceFacultatif | Valeurs et limites Conditions: Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée. | Par défaut— |
Champdriving_audio | Typestring | ExigenceFacultatif | Valeurs et limites Conditions: Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée. | Par défaut— |
Champresolution | Typestring | ExigenceFacultatif | Valeurs et limites 720P, 1080P Conditions: Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée. | Par défaut— |
Champratio | Typestring | ExigenceFacultatif | Valeurs et limites 16:9, 9:16, 1:1, 4:3, 3:4 Conditions: Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée. | Par défaut— |
Champduration | Typeinteger | ExigenceFacultatif | Valeurs et limites 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 Conditions: Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée. | Par défaut— |
Champprompt_extend | Typeboolean | ExigenceFacultatif | Valeurs et limites Conditions: Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée. | Par défaut— |
Champwatermark | Typeboolean | ExigenceFacultatif | Valeurs et limites Conditions: Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée. | Par défaut— |
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrecontent_type | Contratapplication/json |
Paramètrerequired | Contratmodel, image |
Paramètreoptional | Contratprompt, negative_prompt, end_image, driving_audio, resolution, ratio, duration, prompt_extend, watermark |
Paramètrematerial_types | Contrattext, image |
Paramètreconditions | ContratUtilisez exactement ce sélecteur de routage Ailoot., Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée., Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée., Fournissez l’URL réelle et accessible de votre image. Une liste n’est acceptée que si le schéma du paramètre prévoit un tableau., Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée., Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée., Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée., Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée., Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée., Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée., Utilisez le champ documenté pour le modèle sélectionné et les choix proposés ; omettez toute valeur facultative non précisée. |
Alias de méthode : /v1/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/media/assets
GET /v1/media/assets/{asset_id}
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 | Résolution de sortie | Unité de facturation | Conditions de facturation | Coût |
|---|---|---|---|---|---|---|
| ConfigurationTarifs de base des jetons | Barème tarifaireTarif de base | Quantité prévisionnelle— | Résolution de sortie— | 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 |
| ConfigurationVidéo produite | Barème tarifaire— | Quantité prévisionnelle— | Résolution de sortie1080P | Unité de facturationpar seconde de vidéo | Conditions de facturationEstimation indicative pour la vidéo produite à une résolution de 1080P. Le montant définitif se fonde sur la facture d’origine enregistrée. | Coût Sortie · Vidéo produite · Estimation à des fins de comparaison uniquement $0.3 par seconde de vidéo Estimation à titre indicatif uniquement ; le montant définitif se fonde sur la facture d’origine enregistrée. |
| ConfigurationVidéo produite | Barème tarifaire— | Quantité prévisionnelle— | Résolution de sortie720P | Unité de facturationpar seconde de vidéo | Conditions de facturationEstimation indicative pour la vidéo produite à une résolution de 720P. Le montant définitif se fonde sur la facture d’origine enregistrée. | Coût Sortie · Vidéo produite · Estimation à des fins de comparaison uniquement $0.2 par seconde de vidéo Estimation à titre indicatif uniquement ; le montant définitif se fonde sur la facture d’origine enregistrée. |
| ConfigurationCoût estimé de la génération | Barème tarifaire— | Quantité prévisionnelleEstimation pour une génération | Résolution de sortie— | Unité de facturation— | Conditions de facturation— | Coût Sortie · Coût estimé de génération · Estimation à des fins de comparaison uniquement $0.2 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 →
Exemples de requêtes
Ailoot Ultra · Video
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
: "${AILOOT_IMAGE_URL:?Set an actual customer material or documented value}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "wan2.7-i2v", "image": "YOUR_ACCESSIBLE_IMAGE_URL"}')
p['image']=os.environ['AILOOT_IMAGE_URL']
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
# Submit once. Retain the complete result, original identifiers and every response header.
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_STATUS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path("result.json").read_text())
u=urljoin("https://api.ailoot.ai",r["polling_url"])
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or p.username or p.password:
raise SystemExit("Unexpected returned polling URL; preserve the response")
subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-D","status-headers.txt","-o","status.json"],check=True)
# Read this same original polling_url again while pending.
# Preserve unknown/result_pending_check; do not repeat creation.
PY_STATUS
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())
roles={}
def visit(v,path=""):
if isinstance(v,dict):
for k,x in v.items(): visit(x,path+"/"+k)
elif isinstance(v,list):
for i,x in enumerate(v): visit(x,path+"/"+str(i))
elif isinstance(v,str):
u=urljoin("https://api.ailoot.ai",v); p=urlsplit(u)
if p.scheme=="https" and p.netloc=="api.ailoot.ai" and not p.username and not p.password and p.path.startswith("/v1/media/assets/") and p.path.endswith("/content"):
roles.setdefault(u,[]).append(path)
visit(r)
if not roles: raise SystemExit("No completed owned assets; retain the original status")
manifest=[]
for i,(u,paths) in enumerate(roles.items()):
target=Path(f"asset-{i}.bin")
subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-o",str(target)],check=True)
raw=target.read_bytes()
if not raw: raise SystemExit("Empty asset; retain original status and metadata")
ext="glb" if raw[:4]==b"glTF" else "png" if raw[:8]==b"\x89PNG\r\n\x1a\n" else "jpg" if raw[:3]==b"\xff\xd8\xff" else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "mp4" if raw[4:8]==b"ftyp" else "bin"
name=f"asset-{i}.{ext}"
if target.name!=name: target.rename(name)
manifest.append({"file":name,"response_paths":paths,"bytes":len(raw)})
Path("asset-manifest.json").write_text(json.dumps(manifest,indent=2))
print("Saved",len(manifest),"unique owned assets; every response role retained")
PY_ASSETS
Recevoir et enregistrer les résultats
Ailoot Ultra · Video
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
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 la réponse complète et les en-têtes, les identifiants d’origine, chaque résultat réel et tous les champs de consommation et de comptabilisation. Enregistrez chaque ressource unique dont vous êtes propriétaire et conservez tous les rôles qui y font référence.
Si la réponse d’origine doit être vérifiée
Conservez l’identifiant public id de la tâche ou de l’opération renvoyée, ainsi que tous les en-têtes. Consultez uniquement la tâche d’origine ; unknown ou result_pending_check n’autorise pas une nouvelle création.
Champs de la réponse
| Champ | Type |
|---|---|
Champid | Typestring |
Champpolling_url | Typestring |
Champprovider_task_id | Typestring |
Champtask_id | Typestring |
Champstatus | Typestring |
Champvideo_url | Typestring |
Erreurs et étapes suivantes
| Réponse | Condition | Étape suivante |
|---|---|---|
Réponse400 · invalid_request_error | ConditionUn champ obligatoire, un sélecteur de modèle, un type ou une représentation des données d’entrée est invalide. | Étape suivanteExaminez les détails de validation renvoyés avant de préparer une requête distincte. |
Réponse | ConditionLa requête d’origine ou son résultat est inconnu ou nécessite un contrôle. | Étape suivanteConservez les identifiants et les en-têtes d’origine ; consultez uniquement les enregistrements d’état ou de bibliothèque pris en charge. Ne soumettez pas une nouvelle fois la requête de création. |
Alias
Alias du modèle
Ailoot Ultra wan2.7-i2v
Alias des chemins de méthode
/v1/videos/generations
ID d’appel associés
FAQ · wan2.7-i2v
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/videos·wan2.7-i2v:text,image→video- Quels champs la requête utilise-t-elle ?
POST /v1/videos·wan2.7-i2v:model,prompt,negative_prompt,image,end_image,driving_audio,resolution,ratio,duration,prompt_extend,watermark