Claude Opus 5 is now live on CometAPI →
Q

Wan2.6

Par Seconde:$0.08
Publié:May 31, 2026

Wan2.6 est un modèle de génération de vidéos conçu pour une synthèse vidéo stable et efficace. Il offre une qualité visuelle fiable et une génération de mouvements fluide pour des tâches générales de création de vidéos.

Nouveau
Usage commercial

Spécifications techniques de Wan 2.6

ÉlémentSuite vidéo Wan 2.6
FournisseurAlibaba / Tongyi Lab
Famille de modèlesWan 2.6
Période de sortieGénération de décembre 2025
Types d'entréeTexte, images, vidéos de référence, entrées audio
Type de sortieVidéo avec audio synchronisé en option
Modes principauxTexte-vers-vidéo (T2V), Image-vers-vidéo (I2V), Référence-vers-vidéo (R2V)
Variantes FlashI2V Flash, R2V Flash
Prise en charge de la résolution720P et 1080P
Durée prise en charge2–15 secondes (selon le flux de travail)
Fonctionnalités audioGénération audio native, références vocales, synchronisation labiale
Prise en charge multi-plans2–8 segments de scène dans un seul flux de travail
Prise en charge des référencesJusqu'à 5 références (mélange image/vidéo selon le flux de travail)
Flux de travail APICréation de tâches asynchrones + interrogation périodique

Qu'est-ce que Wan 2.6 ?

Wan 2.6 est le système de génération vidéo multimodale d'Alibaba, axé sur la production courte et contrôlable. Plutôt que d'être purement piloté par des invites, le modèle combine des invites textuelles, des références d'images, des vidéos de référence, un conditionnement audio et l'enchaînement de scènes pour les flux des créateurs. La principale amélioration par rapport aux versions précédentes de Wan est l'introduction d'une cohérence plus robuste pilotée par les références et d'une génération narrative plus longue.

Fonctionnalités principales de Wan 2.6

  • Flux de travail de référence vers vidéo : Les utilisateurs peuvent fournir des références d'images ou de vidéos pour maintenir l'identité des personnages, le style et la continuité de la voix entre les générations.
  • Génération narrative multi-plans : Prend en charge l'enchaînement de plusieurs invites pour les transitions de scènes et la progression de l'histoire dans un seul flux de génération.
  • Synchronisation audio native : Prise en charge intégrée de l'audio généré, des téléchargements d'audio personnalisé et des flux de synchronisation labiale.
  • Modes d'entrée flexibles : Prend en charge la génération uniquement par invite, l'animation à partir de la première image et les flux pilotés par des références.
  • Variantes Flash pour l'itération : Des versions plus rapides permettent des tests rapides avant les rendus finaux de haute qualité.
  • Clips plus longs : Durée de clip étendue par rapport aux générations antérieures, facilitant la création de contenus narratifs.

Performances de référence de Wan 2.6

La transparence des benchmarks formels pour Wan 2.6 demeure limitée ; Alibaba a publié moins de chiffres de benchmark standardisés que les fournisseurs de LLM textuels. La plupart des évaluations proviennent de tests de flux de travail et de comparaisons dans l'écosystème plutôt que de classements publics. Les tests de la communauté soulignent de manière constante :

  • Une meilleure cohérence des personnages par rapport aux anciennes versions de Wan.
  • Une meilleure synchronisation audio-vidéo.
  • Une continuité multi-plans renforcée.
  • Un conditionnement par références plus fiable.

Étant donné la rareté des publications de benchmarks, les tests en production restent importants avant le déploiement.

Wan 2.6 vs autres modèles vidéo

FonctionnalitéWan 2.6Wan 2.7Modèles de la famille Veo
Génération audio nativeFortePlus forteForte
Flux de travail multi-plansOuiAmélioréModéré
Référence-vers-vidéoAccent fortContrôles renforcésModéré
Durée des clipsJusqu'à 15 sSimilaire / dépend du flux de travailVariable
Prise en charge de multiples référencesJusqu'à 5 référencesFlux de travail étendusModéré
Flux de travail d'éditionModéréMeilleure prise en charge de l'éditionForte

Limitations de Wan 2.6

  • La courte durée des clips limite encore la production long format.
  • Les scènes à forte dynamique peuvent encore présenter une instabilité temporelle.
  • Les flux fortement basés sur des références augmentent la complexité de configuration.
  • Les rapports publics de benchmark restent limités.
  • Les pipelines de génération asynchrones augmentent la complexité d'intégration.

Cas d'utilisation représentatifs

  1. Vidéos marketing cohérentes en termes de personnages.
  2. Clips pour les réseaux sociaux à plusieurs scènes.
  3. Animation d'avatar de créateur.
  4. Vidéos produits pilotées par des références.
  5. Narration IA avec audio synchronisé.
  6. Contenu de marque nécessitant la préservation de l'identité.

FAQ

Tarification pour Wan2.6

Découvrez des tarifs compétitifs pour Wan2.6, conçus pour s'adapter à différents budgets et besoins d'utilisation. Nos formules flexibles garantissent que vous ne payez que ce que vous utilisez, ce qui facilite l'adaptation à mesure que vos besoins évoluent. Découvrez comment Wan2.6 peut améliorer vos projets tout en maîtrisant les coûts.

Wan Video Generation Pricing

Pricing (Per Second)

Model720p1080p
wan2.6$0.08$0.12
wan2.7$0.08$0.12

💡 Billed per second. Total cost = price per second × video duration (seconds).

Exemple de code et API pour Wan2.6

Accédez à des exemples de code complets et aux ressources API pour Wan2.6 afin de simplifier votre processus d'intégration. Notre documentation détaillée fournit des instructions étape par étape pour vous aider à exploiter tout le potentiel de Wan2.6 dans vos projets.

# Create a video with wan2.6
# Step 1: Submit the video generation request
echo "Submitting video generation request..."
response=$(curl -s https://api.cometapi.com/v1/videos \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -F "model=wan2.6" \
  -F "prompt=Create a cinematic multi-shot chase across a moonlit desert market. Shot 1 [0-2s]: a wide establishing view of lanterns and dust in the air. Shot 2 [2-4s]: a small brass robot darts between fabric stalls. Shot 3 [4-5s]: close-up on the robot finding a glowing compass." \
  -F "seconds=5" \
  -F "size=1280x720")

echo "Response: $response"

# Extract video_id from response (handle JSON with spaces like "id": "xxx")
video_id=$(echo "$response" | tr -d '
' | sed 's/.*"id"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
echo "Video ID: $video_id"

# Step 2: Poll for progress until 100%
echo ""
echo "Checking video generation progress..."
while true; do
  status_response=$(curl -s "https://api.cometapi.com/v1/videos/$video_id" \
    -H "Authorization: Bearer $COMETAPI_KEY")

  progress=$(echo "$status_response" | grep -o '"progress"[[:space:]]*:[[:space:]]*"\?[^",}]*"\?' | head -1 | sed 's/.*:[[:space:]]*"\?//;s/"$//')
  status=$(echo "$status_response" | grep -o '"status"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*"status"[[:space:]]*:[[:space:]]*"//;s/"$//')

  echo "Progress: $progress, Status: $status"

  if [ "$status" = "FAILURE" ] || [ "$status" = "failed" ] || [ "$status" = "error" ]; then
    echo "Video generation failed!"
    exit 1
  fi

  if [ "$progress" = "100%" ] || [ "$progress" = "100" ] || [ "$status" = "completed" ] || [ "$status" = "success" ]; then
    echo "Video generation completed!"
    break
  fi

  sleep 10
done

# Step 3: Download the video to output directory
echo ""
echo "Downloading video to ./output/$video_id.mp4..."
mkdir -p ./output
curl -s "https://api.cometapi.com/v1/videos/$video_id/content" \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -o "./output/$video_id.mp4"

if [ -f "./output/$video_id.mp4" ]; then
  echo "Video saved to ./output/$video_id.mp4"
  ls -la "./output/$video_id.mp4"
else
  echo "Failed to download video"
  exit 1
fi

cURL Code Example

# Create a video with wan2.6
# Step 1: Submit the video generation request
echo "Submitting video generation request..."
response=$(curl -s https://api.cometapi.com/v1/videos \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -F "model=wan2.6" \
  -F "prompt=Create a cinematic multi-shot chase across a moonlit desert market. Shot 1 [0-2s]: a wide establishing view of lanterns and dust in the air. Shot 2 [2-4s]: a small brass robot darts between fabric stalls. Shot 3 [4-5s]: close-up on the robot finding a glowing compass." \
  -F "seconds=5" \
  -F "size=1280x720")

echo "Response: $response"

# Extract video_id from response (handle JSON with spaces like "id": "xxx")
video_id=$(echo "$response" | tr -d '\n' | sed 's/.*"id"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
echo "Video ID: $video_id"

# Step 2: Poll for progress until 100%
echo ""
echo "Checking video generation progress..."
while true; do
  status_response=$(curl -s "https://api.cometapi.com/v1/videos/$video_id" \
    -H "Authorization: Bearer $COMETAPI_KEY")
  
  progress=$(echo "$status_response" | grep -o '"progress"[[:space:]]*:[[:space:]]*"\?[^",}]*"\?' | head -1 | sed 's/.*:[[:space:]]*"\?//;s/"$//')
  status=$(echo "$status_response" | grep -o '"status"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*"status"[[:space:]]*:[[:space:]]*"//;s/"$//')
  
  echo "Progress: $progress, Status: $status"
  
  if [ "$status" = "FAILURE" ] || [ "$status" = "failed" ] || [ "$status" = "error" ]; then
    echo "Video generation failed!"
    exit 1
  fi
  
  if [ "$progress" = "100%" ] || [ "$progress" = "100" ] || [ "$status" = "completed" ] || [ "$status" = "success" ]; then
    echo "Video generation completed!"
    break
  fi
  
  sleep 10
done

# Step 3: Download the video to output directory
echo ""
echo "Downloading video to ./output/$video_id.mp4..."
mkdir -p ./output
curl -s "https://api.cometapi.com/v1/videos/$video_id/content" \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -o "./output/$video_id.mp4"

if [ -f "./output/$video_id.mp4" ]; then
  echo "Video saved to ./output/$video_id.mp4"
  ls -la "./output/$video_id.mp4"
else
  echo "Failed to download video"
  exit 1
fi

Python Code Example

# Create a video with wan2.6 using raw HTTP requests
import os
import time
import requests

api_key = os.environ.get("COMETAPI_KEY")
base_url = "https://api.cometapi.com/v1"
headers = {"Authorization": f"Bearer {api_key}"}

# Step 1: Submit the video generation request
print("Submitting video generation request...")
response = requests.post(
    f"{base_url}/videos",
    headers=headers,
    files={
        "model": (None, "wan2.6"),
        "prompt": (None, "Create a cinematic multi-shot chase across a moonlit desert market. Shot 1 [0-2s]: a wide establishing view of lanterns and dust in the air. Shot 2 [2-4s]: a small brass robot darts between fabric stalls. Shot 3 [4-5s]: close-up on the robot finding a glowing compass."),
        "seconds": (None, "5"),
        "size": (None, "1280x720"),
    },
)

result = response.json()
print(f"Response: {result}")

video_id = result.get("id") or result.get("task_id")
print(f"Video ID: {video_id}")

# Step 2: Poll for progress until 100%
print("\nChecking video generation progress...")
while True:
    try:
        status_response = requests.get(f"{base_url}/videos/{video_id}", headers=headers)
        status_result = status_response.json()

        data = status_result.get("data") or status_result
        progress = data.get("progress", "0%")
        status = data.get("status", "unknown")

        print(f"Progress: {progress}, Status: {status}")

        if status in ["FAILURE", "failed", "error"]:
            print("Video generation failed!")
            print(status_result)
            exit(1)

        if progress == "100%" or progress == 100 or status in ["completed", "success"]:
            print("Video generation completed!")
            break
    except Exception as e:
        print(f"Temporary error: {e}, retrying...")

    time.sleep(10)

# Step 3: Download the video to output directory
print(f"\nDownloading video to ./output/{video_id}.mp4...")
os.makedirs("./output", exist_ok=True)

video_response = requests.get(f"{base_url}/videos/{video_id}/content", headers=headers)

output_path = f"./output/{video_id}.mp4"
with open(output_path, "wb") as f:
    f.write(video_response.content)

if os.path.exists(output_path):
    file_size = os.path.getsize(output_path)
    print(f"Video saved to {output_path}")
    print(f"File size: {file_size} bytes")
else:
    print("Failed to download video")
    exit(1)

JavaScript Code Example

// Create a video with wan2.6 using raw HTTP requests
import fs from "fs";
import path from "path";

const apiKey = process.env.COMETAPI_KEY;
const baseUrl = "https://api.cometapi.com/v1";
const headers = { Authorization: `Bearer ${apiKey}` };

function sleep(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

// Step 1: Submit the video generation request
console.log("Submitting video generation request...");
const formData = new FormData();
formData.append("model", "wan2.6");
formData.append("prompt", "Create a cinematic multi-shot chase across a moonlit desert market. Shot 1 [0-2s]: a wide establishing view of lanterns and dust in the air. Shot 2 [2-4s]: a small brass robot darts between fabric stalls. Shot 3 [4-5s]: close-up on the robot finding a glowing compass.");
formData.append("seconds", "5");
formData.append("size", "1280x720");

const submitResponse = await fetch(`${baseUrl}/videos`, {
  method: "POST",
  headers,
  body: formData,
});

const result = await submitResponse.json();
console.log("Response:", JSON.stringify(result, null, 2));

const videoId = result.id || result.task_id;
console.log("Video ID:", videoId);

// Step 2: Poll for progress until 100%
console.log("\nChecking video generation progress...");
while (true) {
  try {
    const statusResponse = await fetch(`${baseUrl}/videos/${videoId}`, { headers });
    const statusResult = await statusResponse.json();
    const data = statusResult.data || statusResult;
    const progress = data.progress || "0%";
    const status = data.status || "unknown";

    console.log(`Progress: ${progress}, Status: ${status}`);

    if (status === "FAILURE" || status === "failed" || status === "error") {
      console.log("Video generation failed!");
      console.log(JSON.stringify(statusResult, null, 2));
      process.exit(1);
    }

    if (progress === "100%" || progress === 100 || status === "completed" || status === "success") {
      console.log("Video generation completed!");
      break;
    }
  } catch (e) {
    console.log(`Temporary error: ${e.message}, retrying...`);
  }

  await sleep(10000);
}

// Step 3: Download the video to output directory
console.log(`\nDownloading video to ./output/${videoId}.mp4...`);
fs.mkdirSync("./output", { recursive: true });

const videoResponse = await fetch(`${baseUrl}/videos/${videoId}/content`, { headers });
const outputPath = path.join("./output", `${videoId}.mp4`);
fs.writeFileSync(outputPath, Buffer.from(await videoResponse.arrayBuffer()));

if (fs.existsSync(outputPath)) {
  const stats = fs.statSync(outputPath);
  console.log(`Video saved to ${outputPath}`);
  console.log(`File size: ${stats.size} bytes`);
} else {
  console.log("Failed to download video");
  process.exit(1);
}

Versions de Wan2.6

La raison pour laquelle Wan2.6 dispose de plusieurs instantanés peut inclure des facteurs potentiels tels que des variations de sortie après des mises à jour nécessitant des instantanés plus anciens pour la cohérence, offrant aux développeurs une période de transition pour l'adaptation et la migration, et différents instantanés correspondant à des points de terminaison globaux ou régionaux pour optimiser l'expérience utilisateur. Pour les différences détaillées entre les versions, veuillez consulter la documentation officielle.

Version
wan2.6