Tous les produits
Search
Centre de documentation

Alibaba Cloud Model Studio:Wan2.7 - text-to-video API reference

Dernière mise à jour :Oct 11, 2026

Le modèle de génération vidéo Wan produit des vidéos fluides à partir d' invites textuelles .

Références : Guide utilisateur

Disponibilité

La région du modèle, l'URL de l'endpoint et la clé API doivent correspondre. Les appels interrégionaux échouent systématiquement.

  • Sélectionner un modèle : Vérifiez la disponibilité du modèle dans votre région cible.
  • Choisir une URL : Utilisez l'URL d'endpoint correspondant à la région concernée. Les protocoles HTTP et HTTPS sont tous deux pris en charge.
  • Configurer une clé API : Sélectionnez une région, obtenez une clé API, puis configurez-la dans les variables d'environnement.
  • Installer le SDK : Pour appeler l'API via un SDK, installez le SDK DashScope.

RemarqueLes exemples de code de cette rubrique utilisent la région Singapour.

ImportantAlibaba Cloud Model Studio a publié des domaines spécifiques aux espaces de travail pour les régions Chine (Pékin) et Singapour. Ces nouveaux domaines dédiés offrent des performances supérieures et une stabilité accrue pour les requêtes d'inférence. Nous vous recommandons de migrer vers ces nouveaux domaines :

  • Chine (Pékin) : de https://dashscope.aliyuncs.com vers https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapour : de https://dashscope-intl.aliyuncs.com vers https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

{WorkspaceId} correspond à l'ID de votre espace de travail, disponible sur la page Workspace Details de la console Alibaba Cloud Model Studio. Le domaine existant reste pleinement fonctionnel.

Instructions

HTTP (wan2.7)

ImportantCette interface utilise le nouveau protocole et prend uniquement en charge wan2.7.

Les tâches de génération vidéo à partir de texte nécessitent entre 1 et 5 minutes. L'API fonctionne de manière asynchrone : Créez une tâche → Interrogez régulièrement pour obtenir le résultat.

Étape 1 : Créer une tâche

Beijing

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Singapore

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Singapore

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Beijing

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Remplacez {WorkspaceId} par votre véritable ID d'espace de travail.

Remarque

  • Une fois la tâche créée, utilisez le task_id retourné pour interroger le résultat. Ce task_id reste valide pendant 24 heures. Ne créez pas de tâches en double. Privilégiez l'interrogation régulière pour récupérer le résultat.
  • Pour un guide destiné aux débutants, consultez Appeler des API avec Postman ou cURL.

Paramètres de requête

Narration multi-plans

Contrôlez la structure des plans en langage naturel dans le prompt. Le paramètre shot_type n'a aucun effet.

  • Plan unique : Saisissez « Générer une vidéo à plan unique ».
  • Plans multiples : Saisissez « Générer une vidéo à plans multiples » ou décrivez les plans avec des horodatages (par exemple, « Plan 1 [0–3 secondes] plan large : Rue new-yorkaise pluvieuse la nuit »).
  • Par défaut : Si rien n'est spécifié, le modèle interprète le contenu du prompt.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
            -H 'X-DashScope-Async: enable' \
            -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
            -H 'Content-Type: application/json' \
            -d '{
            "model": "wan2.7-t2v-2026-06-12",
            "input": {
                "prompt": "A tense detective story with cinematic storytelling. Shot 1 [0–3 seconds] wide shot: Rainy New York street at night, neon lights flicker, a detective in a black trench coat walks briskly. Shot 2 [3–6 seconds] medium shot: The detective enters an old building, rain wets his coat, the door closes slowly behind him. Shot 3 [6–9 seconds] close-up: The detective's focused eyes, distant sirens sound, he frowns slightly. Shot 4 [9–12 seconds] medium shot: The detective moves carefully down a dim hallway, his flashlight illuminating the way. Shot 5 [12–15 seconds] close-up: The detective discovers a key clue, his face shows sudden realization."
            },
            "parameters": {
                "resolution": "720P",
                "ratio": "16:9",
                "prompt_extend": true,
                "watermark": true,
                "duration": 15
            }
        }'

Fournir un fichier audio

Spécifiez l'URL d'un fichier audio personnalisé dans le paramètre input.audio_url.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
            -H 'X-DashScope-Async: enable' \
            -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
            -H 'Content-Type: application/json' \
            -d '{
            "model": "wan2.7-t2v-2026-06-12",
            "input": {
                "prompt": "An epic and cute scene. A small, adorable cartoon kitten general, wearing exquisitely detailed golden armor and a slightly oversized helmet, stands bravely on a cliff. He rides a small but heroic warhorse and says: 'The long clouds of Qinghai darken the snowy mountains, a lone city gazes at Yumen Pass from afar. Through a hundred battles in the yellow sand, the golden armor is worn, but we will not return until we have broken Loulan'. Below the cliff, a vast and endless army of mice with makeshift weapons is charging forward. This is a dramatic, large-scale battle scene inspired by ancient Chinese war epics. In the distance, dark clouds gather in the sky over the snowy mountains. The overall atmosphere is a comical and epic fusion of 'cute' and 'domineering'.",
                "audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250923/hbiayh/%E4%BB%8E%E5%86%9B%E8%A1%8C.mp3"
            },
            "parameters": {
                "resolution": "1080P",
                "ratio": "16:9",
                "prompt_extend": true,
                "duration": 10
            }
        }'

Doublage automatique

En l'absence de input.audio_url, le modèle génère une musique de fond ou des effets sonores adaptés au contenu vidéo.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
            -H 'X-DashScope-Async: enable' \
            -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
            -H 'Content-Type: application/json' \
            -d '{
            "model": "wan2.7-t2v-2026-06-12",
            "input": {
                "prompt": "An epic and cute scene. A small, adorable cartoon kitten general, wearing exquisitely detailed golden armor and a slightly oversized helmet, stands bravely on a cliff. He rides a small but heroic warhorse and says: 'The long clouds of Qinghai darken the snowy mountains, a lone city gazes at Yumen Pass from afar. Through a hundred battles in the yellow sand, the golden armor is worn, but we will not return until we have broken Loulan'. Below the cliff, a vast and endless army of mice with makeshift weapons is charging forward. This is a dramatic, large-scale battle scene inspired by ancient Chinese war epics. In the distance, dark clouds gather in the sky over the snowy mountains. The overall atmosphere is a comical and epic fusion of 'cute' and 'domineering'."
            },
            "parameters": {
                "resolution": "720P",
                "ratio": "16:9",
                "prompt_extend": true,
                "duration": 10
            }
        }'

Utiliser un prompt négatif

Utilisez negative_prompt pour exclure l'élément « flower » et empêcher son apparition dans la vidéo.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
            -H 'X-DashScope-Async: enable' \
            -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
            -H 'Content-Type: application/json' \
            -d '{
            "model": "wan2.7-t2v-2026-06-12",
            "input": {
                "prompt": "A kitten running in the moonlight",
                "negative_prompt": "flower"
            },
            "parameters": {
                "resolution": "720P",
                "ratio": "16:9"
            }
        }'
En-têtes

Content-Type string (Required)

Type de contenu de la requête. Doit être application/json.

Authorization string (Required)

Authentifie la requête avec une clé API Model Studio. Exemple : Bearer sk-xxxx.

X-DashScope-Async string (Required)

Active le traitement asynchrone. Les requêtes HTTP ne prennent en charge que les appels asynchrones. La valeur doit être enable.

ImportantSi cet en-tête de requête est absent, l'erreur « current user api does not support synchronous calls » est retournée.

Corps de la requête

model string (Required)

Nom du modèle. Pour la liste des modèles et les tarifs, consultez Tarification des modèles.

Exemple : wan2.7-t2v, wan2.7-t2v-2026-06-12.

input object (Required)

Données d'entrée, incluant le prompt.

Propriétés

prompt string (Required)

Prompt textuel décrivant le contenu vidéo et le style visuel.

Prend en charge le chinois et l'anglais. Chaque caractère ou lettre compte pour une unité. Le texte dépassant la limite est automatiquement tronqué. Longueur maximale selon le modèle :

  • wan2.7-t2v, wan2.7-t2v-2026-06-12 : Jusqu'à 5 000 caractères.

Exemple : Un chaton courant au clair de lune.

Pour des conseils de rédaction, consultez Guide des prompts pour la génération vidéo/image vers vidéo.

negative_prompt string (Optional)

Éléments à exclure de la vidéo générée.

Prend en charge le chinois et l'anglais. Maximum de 500 caractères ; le texte excédentaire est automatiquement tronqué.

Exemple : low resolution, error, worst quality, low quality, deformed, extra fingers, bad proportions.

audio_url string (Optional)

URL du fichier audio pour la génération vidéo.

Formats pris en charge :

  1. URL publique :

Limites audio :

  • Format : WAV, MP3.
  • Durée : 2 à 30 secondes.
  • Taille du fichier : Jusqu'à 15 Mo.
  • Gestion de la durée : Si l'audio dépasse la valeur duration (par exemple, 5 secondes), seules les 5 premières secondes sont utilisées. Si l'audio est plus court que la vidéo, le reste de la vidéo est silencieux. Par exemple, un audio de 3 secondes avec une vidéo de 5 secondes produit 3 secondes de son suivies de 2 secondes de silence.

parameters object (Optional)

Paramètres de génération vidéo : résolution, réécriture du prompt et filigrane.

Propriétés

resolution string (Optional)

ImportantLa résolution influence le coût. Consultez la Tarification des modèles avant d'effectuer l'appel.

Niveau de résolution de la vidéo générée. Définit la clarté de sortie (nombre total de pixels).

  • wan2.7-t2v, wan2.7-t2v-2026-06-12 : Valeurs valides : 720P, 1080P. Par défaut : 1080P.

ratio string (Optional)

Format d'image de la vidéo de sortie.

  • 16:9 (par défaut)
  • 9:16
  • 1:1
  • 4:3
  • 3:4

Résolutions de sortie (largeur*hauteur) selon le format d'image :

Niveau de résolution

Format d'image

Résolution vidéo de sortie (largeur*hauteur)

720P

16:9

1280*720

9:16

720*1280

1:1

960*960

4:3

1104*832

3:4

832*1104

1080P

16:9

1920*1080

9:16

1080*1920

1:1

1440*1440

4:3

1648*1248

3:4

1248*1648

duration integer (Optional)

ImportantLa durée influence le coût. La facturation s'effectue à la seconde. Consultez la Tarification des modèles avant d'effectuer l'appel.

Durée de la vidéo de sortie, en secondes.

  • wan2.7-t2v, wan2.7-t2v-2026-06-12 : Entier compris entre 2 et 15. Par défaut : 5.

prompt_extendboolean (Optional)

Active la réécriture du prompt. Lorsqu'elle est activée, un LLM reformule le prompt d'entrée afin d'améliorer la qualité de génération. Idéal pour les prompts courts, mais augmente la latence.

  • true (par défaut)
  • false

watermark boolean (Optional)

Ajoute un filigrane dans le coin inférieur droit avec le texte « AI Generated ».

  • false (par défaut)
  • true

seed integer (Optional)

La graine de nombre aléatoire doit être un entier compris dans l'intervalle [0, 2147483647].

Si aucune valeur n'est spécifiée, une graine aléatoire est générée. Une graine fixe améliore la reproductibilité.

La génération du modèle étant probabiliste, une même graine ne garantit pas des résultats identiques.

Paramètres de réponse

Réponse réussie

Conservez le task_id pour interroger l'état et le résultat de la tâche.

{
        "output": {
            "task_status": "PENDING",
            "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
        },
        "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
    }

Réponse d'erreur

La création de la tâche a échoué. Consultez Codes d'erreur.

{
        "code": "InvalidApiKey",
        "message": "No API-key provided.",
        "request_id": "7438d53d-6eb8-4596-8835-xxxxxx"
    }

output object

Sortie de la tâche.

Propriétés

task_id string

Identifiant de la tâche. Valide pour les requêtes pendant 24 heures.

task_status string

État de la tâche.

Valeurs d'énumération

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN : La tâche n'existe pas ou son état est inconnu.

request_id string

Identifiant unique de requête pour le suivi et le dépannage.

code string

Code d'erreur. Retourné uniquement pour les requêtes ayant échoué. Consultez Codes d'erreur.

message string

Message d'erreur détaillé. Retourné uniquement pour les requêtes ayant échoué. Consultez Codes d'erreur.

Étape 2 : Interroger le résultat

Beijing

GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}

Singapore

GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Singapore

GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Beijing

GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}

Remplacez {WorkspaceId} par votre véritable ID d'espace de travail.

Remarque

  • Recommandation d'interrogation : La génération vidéo prend plusieurs minutes. Mettez en place un mécanisme d'interrogation avec un intervalle raisonnable, par exemple 15 secondes.
  • Transition d'état de la tâche : PENDING → RUNNING → SUCCEEDED ou FAILED.
  • Lien du résultat : Une fois la tâche terminée avec succès, une URL vidéo valide pendant 24 heures est retournée. Téléchargez et enregistrez la vidéo dans un stockage permanent, tel qu'OSS.
  • Validité du task_id : 24 heures. Passé ce délai, les requêtes retournent l'état UNKNOWN pour la tâche.

Paramètres de requête

Interroger le résultat de la tâche

Remplacez {task_id} par la valeur task_id retournée par l'appel API précédent. Le task_id est valide pour les requêtes pendant 24 heures, Remplacez {WorkspaceId} par votre véritable ID d'espace de travail.

curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
    --header "Authorization: Bearer $DASHSCOPE_API_KEY"
En-têtes

Authorization string (Required)

Authentifie la requête avec une clé API Model Studio. Exemple : Bearer sk-xxxx.

Paramètres de chemin

task_id string (Required)

Identifiant de la tâche.

Paramètres de réponse

Tâche exécutée avec succès

Les URL vidéo ne sont valides que pendant 24 heures, puis sont automatiquement supprimées. Enregistrez rapidement les vidéos générées.

{
    "request_id": "caa62a12-8841-41a6-8af2-xxxxxx",
    "output": {
        "task_id": "eff1443c-ccab-4676-aad3-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-09-29 14:18:52.331",
        "scheduled_time": "2025-09-29 14:18:59.290",
        "end_time": "2025-09-29 14:23:39.407",
        "orig_prompt": "An epic and cute scene. A small, adorable cartoon kitten general, wearing exquisitely detailed golden armor and a slightly oversized helmet, stands bravely on a cliff. He rides a small but heroic warhorse and says: 'The long clouds of Qinghai darken the snowy mountains, a lone city gazes at Yumen Pass from afar. Through a hundred battles in the yellow sand, the golden armor is worn, but we will not return until we have broken Loulan'. Below the cliff, a vast and endless army of mice with makeshift weapons is charging forward. This is a dramatic, large-scale battle scene inspired by ancient Chinese war epics. In the distance, dark clouds gather in the sky over the snowy mountains. The overall atmosphere is a comical and epic fusion of 'cute' and 'domineering'.",
        "video_url": "https://dashscope-result-sh.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx"
    },
    "usage": {
        "duration": 10,
        "input_video_duration": 0,
        "output_video_duration": 10,
        "video_count": 1,
        "ratio": "16:9",
        "SR": 720
    }
}

Échec de l'exécution de la tâche

Lorsqu'une tâche échoue, task_status prend la valeur FAILED, accompagnée d'un code et d'un message d'erreur. Consultez Codes d'erreur.

{
        "request_id": "e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
        "output": {
            "task_id": "86ecf553-d340-4e21-af6e-a0c6a421c010",
            "task_status": "FAILED",
            "code": "InvalidParameter",
            "message": "The size does not match xxxxxx"
        }
    }

Requête de tâche expirée

Le task_id est valide pendant 24 heures. Passé ce délai, les requêtes retournent l'erreur suivante.

{
        "request_id": "a4de7c32-7057-9f82-8581-xxxxxx",
        "output": {
            "task_id": "502a00b1-19d9-4839-a82f-xxxxxx",
            "task_status": "UNKNOWN"
        }
    }

outputobject

Sortie de la tâche.

Propriétés

task_id string

Identifiant de la tâche. Valide pour les requêtes pendant 24 heures.

task_status string

État de la tâche.

Valeurs d'énumération

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN : La tâche n'existe pas ou son état est inconnu.
Transitions d'état lors de l'interrogation :
  • PENDING → RUNNING → SUCCEEDED ou FAILED.
  • L'état initial de la requête est généralement PENDING ou RUNNING.
  • Lorsque l'état passe à SUCCEEDED, la réponse contient l'URL de la vidéo générée.
  • Si l'état est FAILED, vérifiez le message d'erreur et relancez la tâche.

submit_time string

Heure de soumission de la tâche. L'heure est en UTC+8 et le format est AAAA-MM-JJ HH:mm:ss.SSS.

scheduled_time string

Heure d'exécution de la tâche. L'heure est en UTC+8 et le format est AAAA-MM-JJ HH:mm:ss.SSS.

end_time string

Heure de fin de la tâche. L'heure est en UTC+8 et le format est AAAA-MM-JJ HH:mm:ss.SSS.

video_url string

URL de la vidéo générée. Retournée uniquement lorsque task_status est SUCCEEDED.

Valide pendant 24 heures. La vidéo est au format MP4 avec un encodage H.264.

orig_prompt string

Prompt d'entrée original, correspondant au paramètre de requête prompt.

code string

Code d'erreur. Retourné uniquement pour les requêtes ayant échoué. Consultez Codes d'erreur.

message string

Message d'erreur détaillé. Retourné uniquement pour les requêtes ayant échoué. Consultez Codes d'erreur.

usage object

Statistiques de sortie. Retournées uniquement pour les tâches réussies.

Propriétés

duration float

Durée totale de la vidéo, utilisée pour la facturation.

Égale à output_video_duration.

input_video_duration integer

Valeur fixe : 0.

output_video_duration integer

Durée de la vidéo de sortie en secondes. Correspond à la valeur input.duration.

SR integer

Niveau de résolution de la vidéo de sortie. Exemple : 720.

ratio string

Format d'image de la vidéo de sortie. Exemple : 16:9.

video_count integer

Nombre de vidéos générées. Toujours égal à 1.

request_id string

Identifiant unique de requête pour le suivi et le dépannage.

HTTP (wan2.6 et versions antérieures)

ImportantCette interface utilise le protocole hérité et prend en charge les versions wan2.6 et antérieures (wan2.5/wan2.2/wan2.1).

Les tâches de génération vidéo à partir de texte nécessitent entre 1 et 5 minutes. L'API fonctionne donc de manière asynchrone : Créer une tâche → Interroger le résultat.

Étape 1 : Créer une tâche

Singapore

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Virginia

POST https://dashscope-us.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Beijing

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Frankfurt

POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Remplacez {WorkspaceId} par votre véritable ID d'espace de travail.

Remarque

  • Une fois la tâche créée, utilisez l'identifiant task_id retourné pour interroger le résultat. Ce task_id reste valide pendant 24 heures. Ne créez pas de tâches en double. Privilégiez plutôt l'interrogation régulière pour obtenir le résultat.
  • Pour un guide destiné aux débutants, consultez la rubrique Appeler des API avec Postman ou cURL.

Paramètres de requête

Narration multi-plans

  • Pour créer une narration multi-plans, définissez shot_type sur "multi".
  • Réglez prompt_extend sur true afin d'activer la réécriture du prompt pour optimiser le storyboard.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
            -H 'X-DashScope-Async: enable' \
            -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
            -H 'Content-Type: application/json' \
            -d '{
            "model": "wan2.6-t2v",
            "input": {
                "prompt": "Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: \"The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them \".",
                "audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3"
            },
            "parameters": {
                "size": "1280*720",
                "prompt_extend": true,
                "duration": 10,
                "shot_type":"multi"
            }
        }'

Fournir un fichier audio

Modèles pris en charge : séries wan2.6 et wan2.5.

Définissez le paramètre input.audio_url avec l'URL d'un fichier audio personnalisé.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
            -H 'X-DashScope-Async: enable' \
            -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
            -H 'Content-Type: application/json' \
            -d '{
            "model": "wan2.5-t2v-preview",
            "input": {
                "prompt": "Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: \"The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them \".",
                "audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3"
            },
            "parameters": {
                "size": "832*480",
                "prompt_extend": true,
                "duration": 10
            }
        }'

Doublage automatique

Modèles pris en charge : séries wan2.6 et wan2.5.

En l'absence du paramètre input.audio_url, le modèle génère une musique de fond ou des effets sonores adaptés au contenu vidéo.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
            -H 'X-DashScope-Async: enable' \
            -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
            -H 'Content-Type: application/json' \
            -d '{
            "model": "wan2.5-t2v-preview",
            "input": {
                "prompt": "Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: \"The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them \""
            },
            "parameters": {
                "size": "832*480",
                "prompt_extend": true,
                "duration": 10
            }
        }'

Générer une vidéo muette

Seuls les modèles des séries wan2.2 et wan2.1 permettent la génération de vidéos muettes. Ces modèles produisent des vidéos sans son par défaut, sans configuration supplémentaire.

Les modèles des séries wan2.6 et wan2.5 génèrent par défaut des vidéos avec du son.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
            -H 'X-DashScope-Async: enable' \
            -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
            -H 'Content-Type: application/json' \
            -d '{
            "model": "wan2.2-t2v-plus",
            "input": {
                "prompt": "Low contrast. In a retro 1970s-style subway station, a street musician plays amidst dim colors and rough textures. He wears an old-fashioned jacket and holds a guitar, playing with concentration. Commuters hurry past, and a small crowd gradually gathers to listen. The camera slowly pans to the right, capturing a scene where the sound of the instrument mixes with the city's noise, with old-fashioned subway signs and mottled walls in the background."
            },
            "parameters": {
                "size": "832*480",
                "prompt_extend": true
            }
        }'

Utiliser un prompt négatif

Modèles pris en charge : tous les modèles.

Le champ negative_prompt permet d'exclure certains éléments (comme « fleurs ») de la vidéo générée.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
            -H 'X-DashScope-Async: enable' \
            -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
            -H 'Content-Type: application/json' \
            -d '{
            "model": "wan2.2-t2v-plus",
            "input": {
                "prompt": "A kitten running in the moonlight",
                "negative_prompt": "flowers"
            },
            "parameters": {
                "size": "832*480"
            }
        }'
En-têtes de requête

Content-Type string (Obligatoire)

Type de contenu de la requête. Doit être application/json.

Authorization string (Obligatoire)

Authentifie la requête à l'aide d'une clé API Model Studio. Exemple : Bearer sk-xxxx.

X-DashScope-Async string (Obligatoire)

Active le traitement asynchrone. Les requêtes HTTP ne prennent en charge que les appels asynchrones. La valeur doit être enable.

ImportantSi cet en-tête est absent, l'erreur « current user api does not support synchronous calls » est renvoyée.

Corps de la requête

model string (Obligatoire)

Nom du modèle. Pour la liste des modèles et leurs tarifs, consultez la rubrique Tarification des modèles.

Exemple : wan2.6-t2v.

input object (Obligatoire)

Données d'entrée, incluant le prompt.

Propriétés

prompt string (Obligatoire)

Prompt textuel décrivant le contenu vidéo et le style visuel souhaités.

Compatible avec le chinois et l'anglais. Chaque caractère ou lettre compte pour une unité. Le texte excédentaire est automatiquement tronqué. Longueur maximale selon le modèle :

  • Séries wan2.6 et wan2.5 : jusqu'à 1 500 caractères.
  • Séries wan2.2 et wan2.1 : jusqu'à 800 caractères.

Exemple : Un chaton courant au clair de lune.

Pour obtenir des conseils, reportez-vous au Guide des prompts Texte-vers-Vidéo/Image-vers-Vidéo.

negative_prompt string (Facultatif)

Éléments à exclure de la vidéo générée.

Compatible avec le chinois et l'anglais. Maximum de 500 caractères ; le texte plus long est tronqué automatiquement.

Exemple : basse résolution, erreur, meilleure qualité, mauvaise qualité, défiguré, doigts supplémentaires, mauvaises proportions.

audio_url string (Facultatif)

Modèles pris en charge : séries wan2.6 et wan2.5.

URL du fichier audio utilisé pour la génération vidéo.

Formats acceptés :

  1. URL publique :

Limites audio :

  • Format : WAV, MP3.
  • Durée : de 3 s à 30 s.
  • Taille du fichier : jusqu'à 15 Mo.
  • Gestion de la durée : si l'audio dépasse la valeur duration (par exemple 5 s), seules les 5 premières secondes sont utilisées. Si l'audio est plus court que la vidéo, le reste de la vidéo sera muet. Par exemple, un audio de 3 s combiné à une vidéo de 5 s produit 3 s de son suivies de 2 s de silence.

parameters object (Facultatif)

Paramètres de génération vidéo : résolution, réécriture du prompt et filigrane.

Propriétés

size string (Facultatif)

Important

  • Le paramètre size influence le coût : Coût = Prix unitaire (selon la résolution) x Durée (secondes). Pour un même modèle : 1080p > 720p > 480p. Consultez la tarification des modèles.
  • Spécifiez une résolution précise pour size (comme 1280*720), et non un ratio d'aspect (1:1) ou un libellé de niveau (480p).

Résolution de la vidéo de sortie au format largeur*hauteur. Les valeurs par défaut et valides dépendent du modèle :

  • wan2.6-t2v : la valeur par défaut est 1920*1080 (1080p). Résolutions valides : toutes celles des niveaux 720p et 1080p.
  • wan2.6-t2v-us : la valeur par défaut est 1920*1080 (1080p). Résolutions valides : toutes celles des niveaux 720p et 1080p.
  • wan2.5-t2v-preview : la valeur par défaut est 1920*1080 (1080p). Résolutions valides : toutes celles des niveaux 480p, 720p et 1080p.
  • wan2.2-t2v-plus : la valeur par défaut est 1920*1080 (1080p). Résolutions valides : toutes celles des niveaux 480p et 1080p.
  • wan2.1-t2v-turbo : la valeur par défaut est 1280*720 (720p). Résolutions valides : toutes celles des niveaux 480p et 720p.
  • wan2.1-t2v-plus : la valeur par défaut est 1280*720 (720p). Résolutions valides : toutes celles du niveau 720p.

Résolutions et ratios d'aspect du niveau 480p :

  • 832*480 : 16:9.
  • 480*832 : 9:16.
  • 624*624 : 1:1.

Résolutions et ratios d'aspect du niveau 720p :

  • 1280*720 : 16:9.
  • 720*1280 : 9:16.
  • 960*960 : 1:1.
  • 1088*832 : 4:3.
  • 832*1088 : 3:4.

Résolutions et ratios d'aspect du niveau 1080p :

  • 1920*1080 : 16:9.
  • 1080*1920 : 9:16.
  • 1440*1440 : 1:1.
  • 1632*1248 : 4:3.
  • 1248*1632 : 3:4.

duration integer (Facultatif)

ImportantLa durée impacte le coût : Coût = Prix unitaire (selon la résolution) x Durée (secondes). Consultez la tarification des modèles.

Durée de la vidéo de sortie en secondes. Les valeurs valides varient selon le modèle :

  • wan2.6-t2v : entier compris entre 2 et 15. La valeur par défaut est 5.
  • wan2.6-t2v-us : les valeurs valides sont 5 et 10. La valeur par défaut est 5.
  • wan2.5-t2v-preview : les valeurs valides sont 5 et 10. La valeur par défaut est 5.
  • wan2.2-t2v-plus : fixée à 5 secondes, non modifiable.
  • wan2.1-t2v-plus : fixée à 5 secondes, non modifiable.
  • wan2.1-t2v-turbo : fixée à 5 secondes, non modifiable.

prompt_extendboolean (Facultatif)

Active la réécriture du prompt. Lorsqu'elle est activée, un LLM reformule le prompt d'entrée pour améliorer la qualité. Idéal pour les prompts courts, mais ajoute de la latence.

  • true (par défaut)
  • false

shot_type string (Facultatif)

Modèles pris en charge : modèles wan2.6.

Structure des plans pour la vidéo de sortie : un plan continu unique ou plusieurs plans avec transitions.

Valeurs valides :

  • single (par défaut)
  • multi

Ce paramètre n'est effectif que si "prompt_extend": true est défini.

Priorité : shot_type prévaut sur le prompt. Définir shot_type sur single génère une vidéo à plan unique, même si le prompt demande plusieurs plans.

watermark boolean (Facultatif)

Ajoute un filigrane dans le coin inférieur droit portant la mention « AI Generated ».

  • false (par défaut)
  • true

seed integer (Facultatif)

La graine aléatoire doit être un entier compris dans l'intervalle [0, 2147483647].

Si aucune valeur n'est spécifiée, une graine aléatoire est générée. Utiliser une graine fixe améliore la reproductibilité.

La génération du modèle étant probabiliste, une même graine ne garantit pas des résultats strictement identiques.

Paramètres de réponse

Réponse réussie

Conservez le task_id pour interroger l'état et le résultat de la tâche.

{
        "output": {
            "task_status": "PENDING",
            "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
        },
        "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
    }

Réponse d'erreur

Échec de la création de la tâche. Consultez la rubrique Codes d'erreur.

{
        "code": "InvalidApiKey",
        "message": "No API-key provided.",
        "request_id": "7438d53d-6eb8-4596-8835-xxxxxx"
    }

output object

Sortie de la tâche.

Propriétés

task_id string

Identifiant de la tâche. Valide pour les requêtes pendant 24 heures.

task_status string

État actuel de la tâche.

Valeurs d'énumération

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN : la tâche n'existe pas ou son état est inconnu.

request_id string

Identifiant unique de la requête, utilisé pour le suivi et le dépannage.

code string

Code d'erreur. Renvoyé uniquement en cas d'échec de la requête. Consultez la rubrique Codes d'erreur.

message string

Message d'erreur détaillé. Renvoyé uniquement en cas d'échec de la requête. Consultez la rubrique Codes d'erreur.

Étape 2 : Interroger le résultat

Singapore

GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Virginia

GET https://dashscope-us.aliyuncs.com/api/v1/tasks/{task_id}

Beijing

GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}

Frankfurt

GET https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Remplacez {WorkspaceId} par votre véritable ID d'espace de travail.

Remarque

  • Recommandation de polling : La génération vidéo prend plusieurs minutes. Mettez en place un mécanisme de polling avec un intervalle raisonnable, par exemple 15 secondes.
  • Transition des états de tâche : PENDING → RUNNING → SUCCEEDED ou FAILED.
  • Lien du résultat : Une fois la tâche terminée avec succès, une URL vidéo valide pendant 24 heures est renvoyée. Téléchargez et enregistrez la vidéo dans un stockage permanent, tel que OSS.
  • Validité dutask_id:24 heures**. Passé ce délai, les requêtes renvoient le statut de la tâche comme UNKNOWN.

Paramètres de la requête

Interroger le résultat de la tâche

Remplacez {task_id} par la valeur task_id renvoyée par l'appel API précédent. Le task_id reste valide pour les requêtes pendant 24 heures. Remplacez {WorkspaceId} par votre véritable ID d'espace de travail.

curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
    --header "Authorization: Bearer $DASHSCOPE_API_KEY"
Headers

Authorization string (Required)

Authentifie la requête à l'aide d'une clé API Model Studio. Exemple : Bearer sk-xxxx.

Path parameters

task_id string (Required)

Identifiant de la tâche.

Paramètres de la réponse

Tâche exécutée avec succès

Les URL vidéo ne sont valides que pendant 24 heures, puis automatiquement supprimées. Enregistrez rapidement les vidéos générées.

{
            "request_id": "abbf7aa3-9652-4785-a622-xxxxxx",
            "output": {
                "task_id": "38513c71-5190-48e1-9f3b-xxxxxx",
                "task_status": "SUCCEEDED",
                "submit_time": "2025-09-29 14:05:22.119",
                "scheduled_time": "2025-09-29 14:05:28.278",
                "end_time": "2025-09-29 14:10:00.437",
                "orig_prompt": "Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective's office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: 'The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them'.",
                "video_url": "https://dashscope-result-sh.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx"
            },
            "usage": {
                "duration": 10,
                "size": "1280*720",
                "input_video_duration": 0,
                "output_video_duration": 10,
                "video_count": 1,
                "SR": 720
            }
        }

Échec de l'exécution de la tâche

En cas d'échec d'une tâche, task_status prend la valeur FAILED, accompagnée d'un code et d'un message d'erreur. Consultez la section Codes d'erreur.

{
        "request_id": "e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
        "output": {
            "task_id": "86ecf553-d340-4e21-af6e-a0c6a421c010",
            "task_status": "FAILED",
            "code": "InvalidParameter",
            "message": "The size is not match xxxxxx"
        }
    }

Requête de tâche expirée

Le task_id est valide pendant 24 heures. Au-delà de cette période, les requêtes renvoient l'erreur suivante.

{
        "request_id": "a4de7c32-7057-9f82-8581-xxxxxx",
        "output": {
            "task_id": "502a00b1-19d9-4839-a82f-xxxxxx",
            "task_status": "UNKNOWN"
        }
    }

outputobject

Sortie de la tâche.

Properties

task_id string

Identifiant de la tâche. Valide pour les requêtes pendant 24 heures.

task_status string

État de la tâche.

Enumeration values

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN : La tâche n'existe pas ou son état est inconnu.
Transitions d'état lors du polling :
  • PENDING → RUNNING → SUCCEEDED ou FAILED.
  • La première requête indique généralement l'état PENDING ou RUNNING.
  • Lorsque l'état passe à SUCCEEDED, la réponse contient l'URL de la vidéo générée.
  • Si l'état est FAILED, examinez le message d'erreur et relancez la tâche.

submit_time string

Heure de soumission de la tâche. L'heure est exprimée en UTC+8 et le format est AAAA-MM-JJ HH:mm:ss.SSS.

scheduled_time string

Heure d'exécution de la tâche. L'heure est exprimée en UTC+8 et le format est AAAA-MM-JJ HH:mm:ss.SSS.

end_time string

Heure de fin de la tâche. L'heure est exprimée en UTC+8 et le format est AAAA-MM-JJ HH:mm:ss.SSS.

video_url string

URL de la vidéo générée. Renvoyée uniquement lorsque task_status vaut SUCCEEDED.

Valide pendant 24 heures. La vidéo est au format MP4 avec un encodage H.264.

orig_prompt string

Prompt d'entrée original, correspondant au paramètre de requête prompt.

actual_prompt string

Lorsque prompt_extend=true, le système réécrit le prompt d'entrée. Ce champ contient le prompt réécrit utilisé pour la génération.

  • Non renvoyé lorsque prompt_extend=false.
  • Le modèle wan2.6 ne renvoie jamais ce champ, quelle que soit la valeur de prompt_extend.

code string

Code d'erreur. Renvoyé uniquement pour les requêtes ayant échoué. Consultez la section Codes d'erreur.

message string

Message d'erreur détaillé. Renvoyé uniquement pour les requêtes ayant échoué. Consultez la section Codes d'erreur.

usage object

Statistiques de sortie. Renvoyées uniquement pour les tâches réussies.

Properties

video_duration integer

Renvoyé uniquement pour wan2.5 et versions antérieures (utilisé pour la facturation).

Durée de la vidéo de sortie en secondes. Valeurs valides : 5, 10.

duration float

Renvoyé uniquement pour wan2.6 (utilisé pour la facturation).

Durée totale de la vidéo. Formule : duration=input_video_duration+output_video_duration.

input_video_duration integer

Renvoyé uniquement pour wan2.6. Valeur fixe : 0.

output_video_duration integer

Renvoyé uniquement pour wan2.6.

Durée de la vidéo de sortie en secondes. Correspond à la valeur input.duration.

SR integer

Renvoyé uniquement pour wan2.6. Niveau de résolution de la vidéo de sortie. Exemple : 720.

size string

Renvoyé uniquement pour wan2.6. Résolution de sortie au format « largeur×hauteur ». Exemple : 1920×1080.

video_ratio string

Renvoyé uniquement pour wan2.5 et versions antérieures. Résolution de sortie au format « largeur×hauteur ». Exemple : 832×480.

video_count integer

Nombre de vidéos générées. Toujours égal à 1.

request_id string

Identifiant unique de la requête pour le suivi et le dépannage.

DashScope SDK

Les noms de paramètres du SDK correspondent en grande partie à ceux de l'API HTTP, tandis que les structures suivent les conventions spécifiques à chaque langage.

Les tâches de conversion texte-en-vidéo prennent entre 1 et 5 minutes. Le SDK encapsule le flux d'appels HTTP asynchrones et prend en charge l'invocation synchrone et asynchrone.

Le temps de traitement réel dépend de la profondeur de la file d'attente et de la charge du service.

Python SDK

Important

  • Ce SDK prend en charge wan2.6 et les versions antérieures. wan2.7 n'est pas pris en charge.

  • La version 1.25.8 ou ultérieure du DashScope Python SDK est requise.

    Les versions plus anciennes peuvent renvoyer « url error, please check url! ». Pour effectuer la mise à jour, consultez Installer le SDK.

Définissez dashscope.base_http_api_url sur l'endpoint de la région :

Beijing

dashscope.base_http_api_url = 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1'

Singapore

dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

Virginia

dashscope.base_http_api_url = 'https://dashscope-us.aliyuncs.com/api/v1'

Remplacez {WorkspaceId} par votre véritable ID d'espace de travail.

Invocation synchrone

Exemple de requête
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os

# URL for the Singapore region. URLs vary by region. For more information, see https://www.alibabacloud.com/help/en/model-studio/text-to-video-api-reference.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# If no environment variable is configured, replace with your Model Studio API key: api_key="sk-xxx".
# API keys vary by region. For more information, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key = os.getenv("DASHSCOPE_API_KEY")

def sample_sync_call_t2v():
    # Call the sync API and return the result.
    print('Please wait...')
    rsp = VideoSynthesis.call(api_key=api_key,
                              model='wan2.6-t2v',
                              prompt="Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: 'The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them.'",
                              audio_url='https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3',
                              size='1280*720',
                              duration=10,
                              negative_prompt="",
                              prompt_extend=True,
                              watermark=False,
                              seed=12345)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.video_url)
    else:
        print('Failed. Status code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))

if __name__ == '__main__':
    sample_sync_call_t2v()
Exemple de réponse

L'URL video_url expire après 24 heures. Téléchargez-la rapidement.

{
    "status_code": 200,
    "request_id": "167f3beb-3dd0-47fe-a83c-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "5b65411f-d946-4e29-859e-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-bj.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
        "submit_time": "2025-10-23 11:47:23.879",
        "scheduled_time": "2025-10-23 11:47:34.351",
        "end_time": "2025-10-23 11:52:35.323",
        "orig_prompt": "Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective's office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: 'The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them '."
    },
    "usage": {
        "video_count": 1,
        "video_duration": 0,
        "video_ratio": "",
        "duration": 10,
        "size": "1280*720",
        "input_video_duration": 0,
        "output_video_duration": 10,
        "SR": 720
    }
}

Invocation asynchrone

Exemple de requête
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os

# This is the Singapore region URL. URLs vary by region. For more information, see: https://www.alibabacloud.com/help/en/model-studio/text-to-video-api-reference
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# If an environment variable is not configured, replace this with your Model Studio API key: api_key="sk-xxx"
# API keys vary by region. For more information, see: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

def sample_async_call_t2v():
    # Call the asynchronous API and return the task information.
    # Use the task ID to check the status.
    rsp = VideoSynthesis.async_call(api_key=api_key,
                                    model='wan2.6-t2v',
                                    prompt="Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: 'The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them '.",
                                    audio_url='https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3',
                                    size='1280*720',
                                    duration=10,
                                    negative_prompt="",
                                    prompt_extend=True,
                                    watermark=False,
                                    seed=12345)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print("task_id: %s" % rsp.output.task_id)
    else:
        print('Failed. Status code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))

    # Retrieve the task information, including the task status.
    status = VideoSynthesis.fetch(task=rsp, api_key=api_key)
    if status.status_code == HTTPStatus.OK:
        print(status.output.task_status)  # Check the task status.
    else:
        print('Failed. Status code: %s, code: %s, message: %s' %
              (status.status_code, status.code, status.message))

    # Wait for the task to complete. This method calls fetch at intervals and checks if the task is in a finished state.
    rsp = VideoSynthesis.wait(task=rsp, api_key=api_key)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.video_url)
    else:
        print('Failed. Status code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))

if __name__ == '__main__':
    sample_async_call_t2v()
Exemple de réponse
  1. Exemple de réponse de création de tâche

    {
        "status_code": 200,
        "request_id": "c86ff7ba-8377-917a-90ed-xxxxxx",
        "code": "",
        "message": "",
        "output": {
            "task_id": "721164c6-8619-4a35-a6d9-xxxxxx",
            "task_status": "PENDING",
            "video_url": ""
        },
        "usage": null
    }
    
  2. Exemple de réponse de requête de tâche

    L'URL video_url expire après 24 heures. Téléchargez-la rapidement.

    {
        "status_code": 200,
        "request_id": "167f3beb-3dd0-47fe-a83c-xxxxxx",
        "code": null,
        "message": "",
        "output": {
            "task_id": "5b65411f-d946-4e29-859e-xxxxxx",
            "task_status": "SUCCEEDED",
            "video_url": "https://dashscope-result-bj.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
            "submit_time": "2025-10-23 11:47:23.879",
            "scheduled_time": "2025-10-23 11:47:34.351",
            "end_time": "2025-10-23 11:52:35.323",
            "orig_prompt": "Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective's office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: 'The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them '."
        },
        "usage": {
            "video_count": 1,
            "video_duration": 0,
            "video_ratio": "",
            "duration": 10,
            "size": "1280*720",
            "input_video_duration": 0,
            "output_video_duration": 10,
            "SR": 720
        }
    }
    

Java SDK

Important

  • Ce SDK prend en charge wan2.6 et les versions antérieures. wan2.7 n'est pas pris en charge.

  • La version 2.22.6 ou ultérieure du DashScope Java SDK est requise.

    Les versions plus anciennes peuvent renvoyer « url error, please check url! ». Pour effectuer la mise à jour, consultez Installer le SDK.

Définissez Constants.baseHttpApiUrl sur l'endpoint de la région :

Singapore

Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";

Virginia

Constants.baseHttpApiUrl = "https://dashscope-us.aliyuncs.com/api/v1";

Beijing

Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";

Remplacez {WorkspaceId} par votre véritable ID d'espace de travail.

Invocation synchrone

Exemple de requête
// Copyright (c) Alibaba, Inc. and its affiliates.

// dashscope SDK version 2.18.2 or later
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

import java.util.HashMap;
import java.util.Map;

public class Text2Video {

    static {
        // Singapore region URL. URLs vary by region. For more information, see https://www.alibabacloud.com/help/en/model-studio/text-to-video-api-reference.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If no environment variable is configured, replace the value with your Model Studio API key: apiKey = "sk-xxx".
    // API keys vary by region. For more information, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
    public static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void text2Video() throws ApiException, NoApiKeyException, InputRequiredException {
        VideoSynthesis vs = new VideoSynthesis();
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", 12345);

        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.6-t2v")
                        .prompt("Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: 'The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them'.")
                        .audioUrl("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3")
                        .negativePrompt("")
                        .size("1280*720")
                        .duration(10)
                        .parameters(parameters)
                        .build();
        System.out.println("Please wait...");
        VideoSynthesisResult result = vs.call(param);
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        try {
            text2Video();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
Exemple de réponse

L'URL vidéo (video_url) expire au bout de 24 heures. Téléchargez-la rapidement.

{
    "request_id": "c1209113-8437-424f-a386-xxxxxx",
    "output": {
        "task_id": "966cebcd-dedc-4962-af88-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-sh.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
        "orig_prompt": "Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: 'The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them '",
        "submit_time": "2026-01-22 23:13:40.553",
        "scheduled_time": "2026-01-22 23:13:49.415",
        "end_time": "2026-01-22 23:17:56.380"
    },
    "usage": {
        "video_count": 1,
        "duration": 10.0,
        "size": "1280*720",
        "input_video_duration": 0.0,
        "output_video_duration": 10.0,
        "SR": "720"
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Invocation asynchrone

Exemple de requête
// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisListResult;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.task.AsyncTaskListParam;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

import java.util.HashMap;
import java.util.Map;

public class Text2Video {
    static {
        // The URL for the Singapore region. URLs vary by region. For more information, see https://www.alibabacloud.com/help/en/model-studio/text-to-video-api-reference
        Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

     // If an environment variable is not set, replace the placeholder with your Model Studio API key, for example: apiKey="sk-xxx"
    // API keys vary by region. For more information, see https://www.alibabacloud.com/help/en/model-studio/get-api-key
    public static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void text2Video() throws ApiException, NoApiKeyException, InputRequiredException {
        VideoSynthesis vs = new VideoSynthesis();
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", 12345);

        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.6-t2v")
                        .prompt("Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: 'The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them '.")
                        .audioUrl("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3")
                        .negativePrompt("")
                        .size("1280*720")
                        .duration(10)
                        .parameters(parameters)
                        .build();

        // Make an asynchronous call.
        VideoSynthesisResult task = vs.asyncCall(param);
        System.out.println(JsonUtils.toJson(task));
        System.out.println("please wait...");

        // Retrieve the result.
        VideoSynthesisResult result = vs.wait(task, apiKey);
        System.out.println(JsonUtils.toJson(result));
    }

     // Retrieve the task list.
    public static void listTask() throws ApiException, NoApiKeyException {
        VideoSynthesis is = new VideoSynthesis();
        AsyncTaskListParam param = AsyncTaskListParam.builder().build();
        param.setApiKey(apiKey);
        VideoSynthesisListResult result = is.list(param);
        System.out.println(result);
    }

    // Retrieve the result of a single task.
    public static void fetchTask(String taskId) throws ApiException, NoApiKeyException {
        VideoSynthesis is = new VideoSynthesis();
        // If you set the DASHSCOPE_API_KEY environment variable, you can set apiKey to null.
        VideoSynthesisResult result = is.fetch(taskId, apiKey);
        System.out.println(result.getOutput());
        System.out.println(result.getUsage());
    }

    public static void main(String[] args) {
        try {
            text2Video();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
Exemple de réponse
  1. Exemple de réponse lors de la création d'une tâche.

    {
            "request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
        "output": {
            "task_id": "7277e20e-aa01-4709-xxxxxxxx",
            "task_status": "PENDING"
        }
    }
    
  2. Exemple de réponse lors de l'interrogation d'une tâche

    L'URL vidéo (video_url) expire au bout de 24 heures. Téléchargez-la rapidement.

    {
        "request_id": "c1209113-8437-424f-a386-xxxxxx",
        "output": {
            "task_id": "966cebcd-dedc-4962-af88-xxxxxx",
            "task_status": "SUCCEEDED",
            "video_url": "https://dashscope-result-sh.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
            "orig_prompt": "Shot from a low angle, in a medium close-up, with warm tones, mixed lighting (the practical light from the desk lamp blends with the overcast light from the window), side lighting, and a central composition. In a classic detective office, wooden bookshelves are filled with old case files and ashtrays. A green desk lamp illuminates a case file spread out in the center of the desk. A fox, wearing a dark brown trench coat and a light gray fedora, sits in a leather chair, its fur crimson, its tail resting lightly on the edge, its fingers slowly turning yellowed pages. Outside, a steady drizzle falls beneath a blue sky, streaking the glass with meandering streaks. It slowly raises its head, its ears twitching slightly, its amber eyes gazing directly at the camera, its mouth clearly moving as it speaks in a smooth, cynical voice: 'The case was cold, colder than a fish in winter. But every chicken has its secrets, and I, for one, intended to find them '",
            "submit_time": "2026-01-22 23:13:40.553",
            "scheduled_time": "2026-01-22 23:13:49.415",
            "end_time": "2026-01-22 23:17:56.380"
        },
        "usage": {
            "video_count": 1,
            "duration": 10.0,
            "size": "1280*720",
            "input_video_duration": 0.0,
            "output_video_duration": 10.0,
            "SR": "720"
        },
        "status_code": 200,
        "code": "",
        "message": ""
    }
    

Limites

  • Rétention des données : l'ID de tâche (task_id) et l'URL vidéo (video_url) expirent après 24 heures. Une fois ce délai écoulé, il n'est plus possible de les interroger ni de les télécharger.
  • Modération du contenu : les entrées et sorties font l'objet d'une modération automatique. Tout contenu prohibé déclenche une erreur de type « IPInfringementSuspect » ou « DataInspectionFailed ». Consultez la rubrique Codes d'erreur.

Codes d'erreur

Si l'appel au modèle échoue et renvoie un message d'erreur, reportez-vous à la rubrique Codes d'erreur pour obtenir des instructions de résolution.

FAQ

Q : Quelles modifications de code sont nécessaires pour passer de wan2.6 à wan2.7 ?

R : Deux changements s'imposent :

  • Contrôle de la résolution : wan2.7 remplace le champ size. Il utilise désormais une combinaison de resolution (niveau de résolution) et de ratio (format d'image) pour définir la résolution de sortie, là où les modèles précédents recouraient au champ size.
  • Suppression du type de plan : le champ shot_type disparaît dans wan2.7. Décrivez plutôt la structure du plan directement dans le prompt.

Q : Comment convertir un lien vidéo temporaire en lien permanent ?

R : La conversion directe est impossible. Téléchargez la vidéo depuis l'URL fournie, puis importez-la vers un stockage persistant (tel qu'Alibaba Cloud OSS) afin de générer un lien permanent.

Exemple de code : Télécharger une vidéo sur un appareil local

import requests

def download_and_save_video(video_url, save_path):
    try:
        response = requests.get(video_url, stream=True, timeout=300)
        response.raise_for_status()
        with open(save_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                f.write(chunk)
        print(f"Video successfully downloaded to: {save_path}")
        # You can add logic to upload the video to permanent storage here
    except requests.exceptions.RequestException as e:
        print(f"Failed to download video: {e}")

if __name__ == '__main__':
    video_url = "http://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxxx"
    save_path = "video.mp4"
    download_and_save_video(video_url, save_path)

Q : Le lien vidéo retourné est-il directement lisible dans un navigateur ?

R : Non. Ce lien expire au bout de 24 heures. Téléchargez la vidéo, conservez-la dans un stockage persistant, puis utilisez un lien permanent pour la lecture.