Claude Opus 5 is now live on CometAPI โ†’
Q

Wan2.6

Per Detik:$0.08
Dirilis:May 31, 2026

Wan2.6 adalah model generasi video yang dirancang untuk sintesis video yang stabil dan efisien. Model ini memberikan kualitas visual yang andal serta generasi gerak yang mulus untuk tugas pembuatan video umum.

Baru
Penggunaan komersial

Spesifikasi Teknis Wan 2.6

ItemWan 2.6 Video Suite
ProviderAlibaba / Tongyi Lab
Model familyWan 2.6
Release timeframeGenerasi Desember 2025
Input typesTeks, gambar, video referensi, input audio
Output typeVideo dengan audio tersinkron opsional
Core modesTeks-ke-Video (T2V), Gambar-ke-Video (I2V), Referensi-ke-Video (R2V)
Flash variantsI2V Flash, R2V Flash
Resolution support720P dan 1080P
Duration support2โ€“15 detik (bergantung alur kerja)
Audio capabilitiesPembuatan audio bawaan, referensi suara, sinkronisasi bibir
Multi-shot support2โ€“8 segmen adegan dalam satu alur kerja
Reference supportHingga 5 referensi (campuran gambar/video bergantung alur kerja)
API workflowPembuatan tugas asinkron + polling

Apa itu Wan 2.6?

Wan 2.6 adalah sistem pembuatan video multimodal milik Alibaba yang berfokus pada produksi format pendek yang dapat dikendalikan. Alih-alih semata-mata digerakkan oleh prompt, model ini menggabungkan prompt teks, referensi gambar, video referensi, pengondisian audio, dan perangkaian adegan untuk alur kerja kreator. Peningkatan utama dibanding rilis Wan sebelumnya adalah diperkenalkannya konsistensi berbasis referensi yang lebih kuat dan pembuatan narasi yang lebih panjang.

Fitur Utama Wan 2.6

  • Alur kerja Referensi-ke-Video: Pengguna dapat memasukkan referensi gambar atau video untuk menjaga identitas karakter, gaya, dan kontinuitas suara lintas generasi.
  • Pembuatan narasi multi-shot: Mendukung mengaitkan beberapa prompt menjadi satu untuk transisi adegan dan perkembangan cerita dalam satu alur generasi.
  • Sinkronisasi audio bawaan: Dukungan bawaan untuk audio yang dihasilkan, unggahan audio kustom, dan alur kerja sinkronisasi bibir.
  • Mode input fleksibel: Mendukung pembuatan hanya berbasis prompt, animasi frame pertama, dan alur kerja berbasis referensi.
  • Varian Flash untuk iterasi: Versi yang lebih cepat memungkinkan pengujian cepat sebelum render akhir berkualitas tinggi.
  • Klip lebih panjang: Durasi klip diperpanjang dibanding generasi sebelumnya, mendukung pembuatan konten naratif.

Performa Benchmark Wan 2.6

Transparansi benchmark formal untuk Wan 2.6 masih terbatas; Alibaba menerbitkan lebih sedikit angka benchmark terstandardisasi dibanding penyedia LLM teks. Sebagian besar evaluasi berasal dari pengujian alur kerja dan perbandingan ekosistem alih-alih papan peringkat publik. Pengujian komunitas secara konsisten menyoroti:

  • Konsistensi karakter yang lebih baik dibanding rilis Wan sebelumnya.
  • Sinkronisasi audio-video yang lebih baik.
  • Kontinuitas multi-shot yang lebih kuat.
  • Pengondisian referensi yang lebih andal.

Karena publikasi benchmark masih jarang, pengujian produksi tetap penting sebelum penerapan.

Wan 2.6 vs Model Video Lain

FiturWan 2.6Wan 2.7Model keluarga Veo
Pembuatan audio bawaanKuatLebih kuatKuat
Alur kerja multi-shotYaLebih baikModerat
Referensi-ke-VideoPenekanan kuatKontrol lebih kuatModerat
Durasi klipHingga 15 detikMirip / bergantung alur kerjaBervariasi
Dukungan multi-referensiHingga 5 referensiAlur kerja diperluasModerat
Alur kerja penyuntinganModeratDukungan penyuntingan yang lebih baikKuat

Keterbatasan Wan 2.6

  • Durasi klip yang pendek masih membatasi produksi format panjang.
  • Adegan dengan gerakan cepat masih dapat menunjukkan ketidakstabilan temporal.
  • Alur kerja yang sangat bergantung pada referensi meningkatkan kompleksitas penyiapan.
  • Pelaporan benchmark publik tetap terbatas.
  • Pipeline pembuatan asinkron meningkatkan kompleksitas integrasi.

Kasus Penggunaan Representatif

  1. Video pemasaran dengan konsistensi karakter.
  2. Klip media sosial multi-adegan.
  3. Animasi avatar kreator.
  4. Video produk berbasis referensi.
  5. Penceritaan AI dengan audio tersinkron.
  6. Konten merek yang memerlukan pelestarian identitas.

FAQ

Harga untuk Wan2.6

Jelajahi harga kompetitif untuk Wan2.6, dirancang untuk berbagai anggaran dan kebutuhan penggunaan. Paket fleksibel kami memastikan Anda hanya membayar untuk apa yang Anda gunakan, memudahkan untuk meningkatkan skala seiring berkembangnya kebutuhan Anda. Temukan bagaimana Wan2.6 dapat meningkatkan proyek Anda sambil menjaga biaya tetap terkendali.

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).

Kode contoh dan API untuk Wan2.6

Akses kode sampel komprehensif dan sumber daya API untuk Wan2.6 guna mempermudah proses integrasi Anda. Dokumentasi terperinci kami menyediakan panduan langkah demi langkah, membantu Anda memanfaatkan potensi penuh Wan2.6 dalam proyek Anda.

# 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);
}

Versi Wan2.6

Alasan Wan2.6 memiliki beberapa _snapshot_ mungkin mencakup faktor-faktor potensial seperti variasi keluaran setelah pembaruan yang memerlukan _snapshot_ lama untuk konsistensi, memberikan masa transisi bagi pengembang untuk beradaptasi dan bermigrasi, serta _snapshot_ berbeda yang sesuai dengan _endpoint_ global atau regional untuk mengoptimalkan pengalaman pengguna. Untuk perbedaan detail antar versi, silakan merujuk ke dokumentasi resmi.

Version
wan2.6