Claude Opus 5 is now live on CometAPI →
Q

Wan2.6

초당:$0.08
출시일:May 31, 2026

Wan2.6은 안정적이고 효율적인 비디오 합성을 위해 설계된 비디오 생성 모델입니다. 일반적인 비디오 제작 작업을 위해 신뢰할 수 있는 시각적 품质과 부드러운 모션 생성을 제공합니다.

새로운
상업적 사용

Wan 2.6의 기술 사양

항목Wan 2.6 Video Suite
제공사Alibaba / Tongyi Lab
모델 계열Wan 2.6
출시 시기2025년 12월 세대
입력 유형텍스트, 이미지, 레퍼런스 비디오, 오디오 입력
출력 유형동기화 가능한 오디오가 포함된 비디오
핵심 모드텍스트-투-비디오(T2V), 이미지-투-비디오(I2V), 레퍼런스-투-비디오(R2V)
Flash 버전I2V Flash, R2V Flash
해상도 지원720P 및 1080P
지속 시간 지원2–15초(워크플로 종속)
오디오 기능네이티브 오디오 생성, 음성 레퍼런스, 립싱크
멀티샷 지원단일 워크플로에서 2–8개 장면 세그먼트
레퍼런스 지원최대 5개 레퍼런스(워크플로에 따라 이미지/비디오 혼합)
API 워크플로비동기 작업 생성 + 폴링

Wan 2.6이란?

Wan 2.6은 Alibaba의 제어 가능한 숏폼 제작에 초점을 맞춘 멀티모달 비디오 생성 시스템입니다. 순수하게 프롬프트만으로 구동되기보다는, 모델은 텍스트 프롬프트, 이미지 레퍼런스, 레퍼런스 비디오, 오디오 컨디셔닝, 장면 체이닝을 결합해 크리에이터 워크플로를 구성합니다. 이전 Wan 릴리스 대비 주요 업그레이드는 레퍼런스 주도 일관성을 강화하고 더 긴 내러티브 생성을 도입한 점입니다.

Wan 2.6의 주요 기능

  • 레퍼런스-투-비디오 워크플로: 사용자는 이미지 또는 비디오 레퍼런스를 제공하여, 여러 번의 생성에 걸쳐 캐릭터 정체성, 스타일, 음성의 연속성을 유지할 수 있습니다.
  • 멀티샷 내러티브 생성: 단일 생성 워크플로에서 여러 프롬프트를 연결해 장면 전환과 스토리 전개를 지원합니다.
  • 네이티브 오디오 동기화: 생성 오디오, 커스텀 오디오 업로드, 립싱크 워크플로를 기본 지원합니다.
  • 유연한 입력 모드: 프롬프트 전용 생성, 첫 프레임 애니메이션, 레퍼런스 주도 워크플로를 지원합니다.
  • 반복을 위한 Flash 버전: 더 빠른 버전을 통해 최종 고품질 렌더링 전에 신속한 테스트가 가능합니다.
  • 더 긴 클립: 이전 세대 대비 클립 길이가 연장되어 내러티브 콘텐츠 제작을 지원합니다.

Wan 2.6의 벤치마크 성능

Wan 2.6에 대한 정식 벤치마크의 투명성은 여전히 제한적이며, Alibaba는 텍스트 LLM 제공업체들에 비해 표준화된 벤치마크 수치를 덜 공개했습니다. 대부분의 평가는 공개 리더보드보다 워크플로 테스트와 생태계 비교에서 도출됩니다. 커뮤니티 테스트에서는 일관되게 다음을 강조합니다:

  • 이전 Wan 릴리스 대비 향상된 캐릭터 일관성.
  • 향상된 오디오-비디오 동기화.
  • 더 강한 멀티샷 연속성.
  • 더 신뢰성 있는 레퍼런스 컨디셔닝.

벤치마크 공개가 드문 만큼, 배포 전에 프로덕션 환경에서의 테스트가 여전히 중요합니다.

Wan 2.6 vs 기타 비디오 모델

기능Wan 2.6Wan 2.7Veo 계열 모델
네이티브 오디오 생성강함더 강함강함
멀티샷 워크플로개선됨보통
레퍼런스-투-비디오강력히 강조더 강력한 제어보통
클립 길이최대 15초유사 / 워크플로 종속가변적
멀티 레퍼런스 지원최대 5개 레퍼런스확장된 워크플로보통
편집 워크플로보통더 나은 편집 지원강함

Wan 2.6의 한계

  • 짧은 클립 길이로 인해 장편 제작에는 여전히 한계가 있습니다.
  • 고속 동작 장면에서 시간적 불안정성이 여전히 나타날 수 있습니다.
  • 레퍼런스 비중이 큰 워크플로는 설정 복잡도를 높입니다.
  • 공개 벤치마크 보고는 여전히 제한적입니다.
  • 비동기 생성 파이프라인은 통합 복잡도를 증가시킵니다.

대표적 사용 사례

  1. 캐릭터 일관성을 유지하는 마케팅 비디오.
  2. 다중 장면 소셜 미디어 클립.
  3. 크리에이터 아바타 애니메이션.
  4. 레퍼런스 주도 제품 비디오.
  5. 오디오 동기화를 갖춘 AI 스토리텔링.
  6. 브랜드 아이덴티티 보존이 필요한 콘텐츠.

자주 묻는 질문

Wan2.6 가격

[모델명]의 경쟁력 있는 가격을 살펴보세요. 다양한 예산과 사용 요구에 맞게 설계되었습니다. 유연한 요금제로 사용한 만큼만 지불하므로 요구사항이 증가함에 따라 쉽게 확장할 수 있습니다. [모델명]이 비용을 관리 가능한 수준으로 유지하면서 프로젝트를 어떻게 향상시킬 수 있는지 알아보세요.

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

Wan2.6의 샘플 코드 및 API

[모델 이름]의 포괄적인 샘플 코드와 API 리소스에 액세스하여 통합 프로세스를 간소화하세요. 자세한 문서는 단계별 가이드를 제공하여 프로젝트에서 [모델 이름]의 모든 잠재력을 활용할 수 있도록 돕습니다.

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

Wan2.6의 버전

Wan2.6에 여러 스냅샷이 존재하는 이유는 업데이트 후 출력 변동으로 인해 일관성을 유지하기 위해 이전 스냅샷을 보관하거나, 개발자에게 적응 및 마이그레이션을 위한 전환 기간을 제공하거나, 글로벌 또는 지역별 엔드포인트에 따라 다양한 스냅샷을 제공하여 사용자 경험을 최적화하기 위한 것 등이 포함될 수 있습니다. 버전 간 상세한 차이점은 공식 문서를 참고해 주시기 바랍니다.

Version
wan2.6