API vidéo Wan
Spécification d’appel de wan3.0-video et wan3.0-video-prime.
Cette page décrit l’appel des modèles vidéo Wan d’Alibaba, wan3.0-video et wan3.0-video-prime. Comme les autres modèles vidéo, ils se créent avec POST /v1/videos et s’interrogent avec GET /v1/videos/{id} ; l’authentification, le téléversement des médias, les états d’interrogation, le téléchargement des résultats et la gestion des erreurs sont décrits dans la spécification complète de l’API vidéo. Cette page ne présente que les champs et règles propres à Wan. Wan peut aussi être appelé avec POST /v1/responses ; voir « Appel via l’API Responses » ci-dessous.
Mis à jour le 2026-10-12. Les anciens
wan3.0-video-480p,wan3.0-video-720petwan3.0-video-1080psont regroupés danswan3.0-video, la résolution se choisissant avecresolution. Il est recommandé d’envoyer les images de début et de fin et les médias de référence dans le tableaumediaau niveau racine (first_frame,last_frame,reference_image, etc.).metadata.firstFrame,metadata.lastFrame,metadata.referenceImages,metadata.referenceVideosetmetadata.referenceAudios(ainsi que les formes snake_case commemetadata.first_frame) etfirstFrame/first_frameoulastFrame/last_frameau niveau racine sont aussi acceptés et convertis enmedia, sans pouvoir être combinés avecmedia. Un champ de média non reconnu renvoie directement une erreur 400. Wan prend en charge uniquement l’interrogation : ne définissez pascallback_url.
Modèles
| Modèle | Résolution | Durée | Format d’image | Limites des médias de référence |
|---|---|---|---|---|
wan3.0-video | 480P / 720P / 1080P, 1080P par défaut | -1 ou 2–30 s, 5 s par défaut | adaptive 16:9 9:16 1:1 4:3 3:4 21:9, adaptive par défaut | 10 images / 5 vidéos / 5 audios |
wan3.0-video-prime | Idem | Idem | Idem | Idem |
Les deux modèles offrent les mêmes capacités : les règles de résolution, de durée, de format, d’images de début et de fin et de références multiples sont identiques, les paramètres de requête sont les mêmes et il suffit de changer model pour passer de l’un à l’autre. La différence porte sur la vitesse de génération : wan3.0-video-prime est la version rapide, nettement plus rapide de bout en bout, adaptée lorsque vous avez besoin de la vidéo au plus vite ; wan3.0-video est la version standard, à choisir lorsque le délai n’est pas critique.
Règles communes
- Résolution :
resolutionau niveau racine accepte480p,720pou1080p(insensible à la casse) ; 1080P par défaut. Vous pouvez aussi indiquer des dimensions en pixels avecsize(par exemple1280x720ou1920x1080), qui fixent à la fois la résolution et le format d’image ;sizeaccepte aussi un format d’image (par exemple"size": "9:16"), et une valeur différente deratio/aspect_ratiorenvoie 400. - Durée : nombre entier de secondes dans
duration(ouseconds) ;-1laisse le modèle déterminer intelligemment la durée. - Format d’image : utilisez
ratio(ou son équivalentaspect_ratio) ; si les deux diffèrent, la requête renvoie 400.adaptiveadapte le format aux médias d’entrée. - Prompt :
promptpeut être omis en présence d’une image de début ou de médias de référence, mais il est conseillé de décrire le mouvement et la caméra ; une requête sans aucun des deux renvoie 400. - Champs facultatifs :
negative_prompt: prompt négatif ;prompt_extend: réécriture automatique du prompt, booléen,truepar défaut ;watermark: ajout d’un filigrane, booléen ;seed: entier de -1 à 2147483647.
{
"model": "wan3.0-video",
"prompt": "Voiture de sport argentée dans une ville pluvieuse la nuit, travelling en contre-plongée, reflets de néons, rendu cinématographique",
"duration": 10,
"resolution": "1080p",
"ratio": "16:9"
}Image de début et images de début et de fin
Placez les images de début et de fin dans le tableau media : first_frame pour l’image de début, last_frame pour l’image de fin (une image de fin exige une image de début). Les images de référence passent aussi par media (reference_image), voir la section suivante.
{
"model": "wan3.0-video-prime",
"prompt": "Transition fluide d’une place vide à l’aube vers le même cadrage la nuit, lumières allumées",
"duration": 8,
"resolution": "720p",
"media": [
{ "type": "first_frame", "url": "https://cdn.example.com/start.jpg" },
{ "type": "last_frame", "url": "https://cdn.example.com/end.jpg" }
]
}Comment envoyer les champs de média
Utilisez media (recommandé). images / image au niveau racine (1re = image de début, 2e = image de fin), metadata.firstFrame (ou metadata.first_frame) et firstFrame / first_frame au niveau racine fonctionnent aussi. Un champ de média illisible (par exemple metadata.image ou metadata.images) renvoie 400 avec une invitation à utiliser media ; le même média envoyé sous plusieurs noms avec des URL différentes renvoie aussi 400.
Références multimédias : le tableau media
Les images, vidéos et audios de référence se placent tous dans le tableau media au niveau racine ; chaque élément a la forme { "type": "...", "url": "..." } :
type | Usage | Limite |
|---|---|---|
first_frame | Image de début | 1 |
last_frame | Image de fin, nécessite aussi first_frame | 1 |
reference_image | Image de référence | 10 |
reference_video | Vidéo de référence | 5 |
reference_audio | Audio de référence | 5 |
- L’image de début et l’image de fin ne peuvent pas être combinées avec des images, vidéos ou audios de référence.
- Lorsque
mediaest envoyé, seulmediaest lu ; siimages,imageou un champ similaire contient un média absent demedia, la requête renvoie 400. Placez aussi les images de début et de fin dansmedia. - Les URL des médias doivent être accessibles anonymement ; voir Exigences relatives aux URL des médias. Pour un fichier local, obtenez d’abord une URL comme indiqué dans Téléverser un média local. Wan n’accepte pas le téléversement de fichiers en
multipart/form-data.
{
"model": "wan3.0-video",
"prompt": "La personne de l’image danse sur le rythme de l’audio de référence, avec le style de mouvement de la vidéo de référence",
"duration": 10,
"resolution": "720p",
"ratio": "9:16",
"media": [
{ "type": "reference_image", "url": "https://cdn.example.com/dancer.jpg" },
{ "type": "reference_video", "url": "https://cdn.example.com/dance-motion.mp4" },
{ "type": "reference_audio", "url": "https://cdn.example.com/music.mp3" }
]
}Appel via l’API Responses
Les deux modèles peuvent aussi être appelés avec POST /v1/responses, pratique pour les clients ou workflows qui ne savent appeler que l’API Responses. La tâche vidéo créée est la même qu’avec /v1/videos, avec les mêmes règles de paramètres et la même facturation.
- Le prompt se place dans
input: une chaîne ou un tableau de messages. Les partiesinput_textdes messages forment le prompt et les partiesinput_imagedeviennent des images, selon la même règle queimagesau premier niveau (1re image = image de début, 2e image = image de fin). - Les autres paramètres (
resolution,duration,ratio,media,negative_prompt, etc.) restent au premier niveau de la requête, écrits comme décrit plus haut. - Trois façons d’obtenir le résultat :
| Mode | Écriture | Remarques |
|---|---|---|
| Attente synchrone | Sans stream ni background | La connexion reste ouverte jusqu’à ce que la vidéo soit prête, puis le résultat est renvoyé directement ; attente maximale d’environ 10 minutes. En cas de dépassement, la réponse a "status": "incomplete" ; la tâche continue, interrogez-la avec l’id renvoyé |
| Arrière-plan | "background": true | Renvoie immédiatement un id (statut queued ou in_progress) ; interrogez ensuite GET /v1/responses/{id} jusqu’à ce que status vaille completed ou failed |
| Streaming | "stream": true | Événements SSE response.created, response.in_progress (avec la progression), puis response.output_text.done et response.completed en cas de succès, ou response.failed en cas d’échec |
{
"model": "wan3.0-video-prime",
"input": "Une voiture de sport argentée dans une ville pluvieuse la nuit, travelling en contre-plongée, reflets de néons, style cinéma",
"duration": 5,
"resolution": "720p",
"ratio": "16:9",
"background": true
}Une fois la vidéo prête, son adresse se trouve dans output[0].content[0].text sous la forme <video controls src="adresse de la vidéo"></video> ; récupérez la valeur de src pour la télécharger :
{
"id": "resp_BVQwZLWyXB2dEU99F7nrER7XNJdVh8RS",
"object": "response",
"model": "wan3.0-video-prime",
"status": "completed",
"output": [
{
"type": "message",
"role": "assistant",
"status": "completed",
"content": [
{ "type": "output_text", "text": "<video controls src=\"https://...\"></video>" }
]
}
],
"metadata": {
"task_id": "task_BVQwZLWyXB2dEU99F7nrER7XNJdVh8RS",
"task_status": "completed"
}
}metadata.task_id est l’identifiant de la tâche vidéo correspondante ; vous pouvez aussi interroger la même tâche avec GET /v1/videos/{task_id}.
Les API de chat ne génèrent pas de vidéo
Seul Wan prend en charge /v1/responses. /v1/chat/completions, /v1/messages et les API d’images ne peuvent pas appeler les modèles vidéo et renvoient une erreur 400 video_model_wrong_endpoint.
Facturation
wan3.0-video et wan3.0-video-prime sont les versions officielles ; l’URL de résultat est officielle. La facturation suit la règle officielle :
Durée facturée = durée de la vidéo d’entrée + durée de la vidéo de sortie
- Durée d’entrée : secondes réelles de la vidéo de référence ; 0 s’il n’y en a pas.
- Durée de sortie : secondes de la vidéo générée avec succès.
- Le prix à la seconde est celui de la résolution de sortie (480P / 720P / 1080P). L’entrée et la sortie utilisent le même palier.
- Les images, audios, fichiers et pages de référence ne sont pas ajoutés à la durée facturée.
- Avec une vidéo de référence, ou si
durationvaut-1, 30 secondes sont réservées à la création ; après achèvement, le montant est régularisé sur les secondes entrée + sortie renvoyées par la plateforme du modèle, et le surplus est remboursé.
Les prix à la seconde sont ceux affichés sur la place des modèles. N’estimez pas une tâche avec vidéo de référence à partir des seules secondes de sortie.