Wan 3.0은 들어오는 길이 세 개인 하나의 모델 계열이고, 어느 길로 시작하느냐에 따라 통제할 수 있는 것, 지불하는 비용, 그리고 이 API에서 무검열 콘텐츠를 어떻게 다루느냐가 갈립니다. 단어를 보낼지, 정지 화면 한 장을 보낼지, 참조를 여러 개 보낼지는 결국 질문 하나로 줄어듭니다.
결론부터. 클립 안에서 바뀌면 안 되는 것이 무엇인지 물어보세요:
- 아직 정해진 것이 없고 장면을 찾는 중: 텍스트→영상.
prompt필드 하나만 있으면 됩니다. - 첫 프레임(선택적으로 마지막 프레임도): 이미지→영상. 이미지를 정확히 1번 프레임으로 쓰므로, 프롬프트는 움직임만 설명하면 됩니다.
- 이어져야 하는 인물, 방, 목소리 또는 움직임 스타일: 참조→영상. 이미지 최대 10개, 클립 5개, 오디오 트랙 5개에 문서나 웹 페이지 하나를 덧붙일 수 있으며, 프롬프트에서 각각에 역할을 줍니다.
세 가지 모두 같은 파일에 소리 포함 2~30초를 반환하며, 베이스와 Prime에서는 480p, 720p, 1080p를 쓸 수 있습니다(Pro 등급은 1080p, 2K, 4K를 렌더링하고, 2K와 4K는 1080p 렌더를 확대합니다). 다른 영상 모델은 무검열 AI 영상 API 카탈로그에 있습니다.
세 작업을 나란히 비교
| 텍스트→영상 | 이미지→영상 | 참조→영상 | |
|---|---|---|---|
| 필수 입력 | prompt | image_url (프롬프트 선택) | 다음 중 하나 이상: reference_image_urls, reference_video_urls, reference_audio_urls, reference_file_url, reference_link_url (프롬프트 선택) |
| 고정하는 것 | 아무것도 고정하지 않음. 문장이 유일한 출처 | 1번 프레임을 정확히 고정. last_image_url은 마지막 프레임을 고정 | 아무것도 정확히 고정하지 않음. 참조가 인물, 모습, 움직임, 목소리를 유도 |
| 보내면 안 되는 것 | 모든 이미지와 참조 | reference_* 필드 | image_url, last_image_url |
| 제한 | 모델 페이지별 프롬프트 길이 | 이미지 한 변 240~8000 px, 20 MB, 종횡비 8:1보다 넓지 않음 | 이미지 10개, 클립 5개, 오디오 트랙 5개. 참조 클립과 오디오는 각각 총 15초 한도 |
| 잘 맞는 용도 | 장면 탐색, 긴 단일 테이크 | 팩샷, 승인된 아트, 루프, 프레임에서 이어가기 | 반복 등장 인물, 방·목소리·카메라 무빙에 맞춤 |
세 작업 모두 길이는 2~30초이며, -1을 주면 모델이 길이를 고릅니다(30초를 미리 예약하고 실제 전달된 길이로 과금이 정산됩니다).
작업이 열거하지 않은 필드, 예를 들어 텍스트→영상에 image_url을 보내면 생성 호출이 400을 반환합니다. 이웃한 엔드포인트를 복사하지 말고 모델 페이지에서 스키마를 가져오세요.
클립은 얼마인가
초당 가격은 텍스트, 이미지, 참조 입력 모두에서 같습니다.
| 등급(모든 작업 공통) | 해상도와 초당 가격 | 5초 클립 | 최저 해상도 30초 클립 |
|---|---|---|---|
| Wan 3.0 | 480p $0.045 / 720p $0.09 / 1080p $0.18 | $0.225 / $0.45 / $0.90 | $1.35 (480p) |
| Wan 3.0 Prime (더 빠름) | 480p $0.0612 / 720p $0.126 / 1080p $0.252 | $0.31 / $0.63 / $1.26 | $1.84 (480p) |
| Wan 3.0 Pro | 1080p $0.144 / 2K $0.16 / 4K $0.184 | $0.72 / $0.80 / $0.92 | $4.32 (1080p) |
| Wan 3.0 Pro Prime | 1080p $0.234 / 2K $0.252 / 4K $0.279 | $1.17 / $1.26 / $1.40 | $7.02 (1080p) |
참조→영상에는 주의할 점이 하나 있습니다. 참조 영상의 초는 출력에 더해 과금되며, 참조 클립과 출력을 합쳐 30초 이내로 유지해야 합니다. 참조 이미지, 오디오, 문서, 웹 페이지는 과금되지 않습니다. 참조 클립이 있는 작업의 견적이나 예약은 15초 최댓값을 가정하며, 실제로 사용한 초에 대해서만 과금됩니다.
이전 세대의 Wan 2.6은 길이가 고정된 대안입니다. 텍스트→영상과 이미지→영상은 720p(초당 $0.09) 또는 1080p($0.135)에서 정확히 5, 10, 15초를 반환합니다. 참조→영상 작업은 별도의 계약으로 참조 클립을 최대 3개 받고 이미지는 받지 않으며, Unrestricted가 아니라 Filtered content 라벨이 붙습니다.
텍스트→영상: 분위기가 아니라 샷을 쓰세요
장면이 아직 열려 있고 승인된 이미지가 없거나, 자체 오디오를 갖춘 긴 테이크 하나를 원할 때 사용하세요. 첫 프레임을 잡아 주는 것이 없으므로, 시청자가 보아야 할 모든 것을 프롬프트에 넣으세요: 주제, 동작 하나, 카메라 무빙 하나, 그리고 빛과 소리. 명확한 동작 하나가 긴 형용사 목록보다 낫습니다. 시작 구도가 승인된 이미지와 일치해야 한다면 다른 곳을 보세요. 그건 이미지→영상입니다.
{
"model": "alibaba/wan-3.0/text-to-video",
"input": {
"prompt": "A ceramic bottle stands on a brushed-steel counter. One bead of condensation rolls down the glass while the camera pushes in slowly. Cool side light, no cut. Sound: a faint fridge hum and the tick of the droplet landing.",
"duration_seconds": 10,
"resolution": "720p",
"aspect_ratio": "9:16",
"generate_audio": true
}
}이 요청은 베이스 Wan 3.0에서 10 x $0.09 = $0.90입니다. 도움이 되는 습관 세 가지:
- 30초를 요청하기 전에 5초에서 화면을 확정하세요. 긴 클립일수록 더 흘러가므로, 나쁜 아이디어는 짧을 때 찾는 편이 저렴합니다.
- 긴 테이크에는 프롬프트를 시간별 비트로 나누세요. 한 커뮤니티 예시에서는 동작(반죽, 소스, 토핑, 오븐)마다 2초 비트를 쓰고, 15초 클립에 대한 연속성 문장을 하나 더 넣었습니다.
- 요구사항이 확정되면 prompt expansion은 꺼 두세요. 내용이 얇은 프롬프트에는 도움이 되지만 자세한 프롬프트와는 충돌합니다. Wan 3.0 Pro 텍스트→영상에서는 기본으로 켜져 있습니다.
이미지→영상: 프레임이 상한입니다
1번 프레임을 양보할 수 없을 때 사용하세요: 크롭이 고정된 제품 팩샷, 승인된 캐릭터 보드, 이전 클립의 키 프레임. 이미지가 의상, 세트, 조명을 정하므로 프롬프트가 담고 있는 것은 움직임뿐입니다. 장면이 아직 열려 있을 때(텍스트→영상) 또는 인물이 여러 샷에 걸쳐 반복 등장해야 할 때(참조→영상)는 다른 곳을 보세요. aspect_ratio를 빠뜨리면 클립이 이미지의 형상을 그대로 상속하고, 충돌하는 값을 넣으면 잘려 나옵니다.
last_image_url을 주면 클립이 두 번째 이미지에서 정확히 끝납니다. 같은 파일을 첫 프레임과 마지막 프레임에 모두 전달하면 이음새 없는 루프가 됩니다. 이 제품 병 예시가 그렇습니다. 하이라이트가 유리를 가로지르도록 4분의 1 바퀴 회전시킨 뒤 시작 위치로 돌아옵니다.
image_url과 last_image_url에 같은 이미지, 소리 끔. 1080p에서 5초는 $0.90입니다.
{
"model": "alibaba/wan-3.0/image-to-video",
"input": {
"image_url": "https://cdn.spicyapi.ai/models/examples/inputs/e82b71db9e3d0e5f.png",
"last_image_url": "https://cdn.spicyapi.ai/models/examples/inputs/e82b71db9e3d0e5f.png",
"prompt": "The bottle rotates a quarter turn so the highlight travels across the glass, then returns to its starting angle. Locked camera, single soft key from the left, no music.",
"duration_seconds": 5,
"resolution": "1080p",
"generate_audio": false,
"seed": 20260907
}
}넘긴 프레임을 먼저 설명하고 그다음 움직임을 설명하세요. 다른 방은 절대 쓰면 안 됩니다. 프롬프트가 정지 화면과 다른 장면을 지목하면 Wan 3.0은 정지 화면으로 시작한 뒤 새 장면으로 컷할 수 있습니다. last_image_url만으로는 거부되며 image_url이 필요합니다.
참조→영상: 모든 참조에 역할을 주세요
반복되어야 할 것이 있을 때 사용하세요: 여러 샷에 걸친 같은 인물, 특정 방, 목소리, 움직임 또는 카메라 스타일. Wan 3.0은 참조를 넘긴 순서대로 읽고, 프롬프트가 무엇이 무엇인지 알려 줍니다. 그렇지 않으면 모델은 참조들을 평균내어 어느 것과도 맞지 않는 피사체로 만들어 버립니다. 승인된 정지 화면 한 장이 이미 모든 것을 말해 준다면 다른 곳을 보세요. 참조를 더 넣는 것은 서로 경쟁할 뿐 통제가 자동으로 늘어나지는 않습니다. 아래 예시는 첫 번째 이미지에서 인물을, 두 번째 이미지에서 방을 가져옵니다.

장식용 일러스트이며, 모델 출력이나 아래 예시의 도해가 아닙니다.
{
"model": "alibaba/wan-3.0/reference-to-video",
"input": {
"reference_image_urls": [
"https://cdn.spicyapi.ai/models/examples/inputs/a4d8d93ce949c527.png",
"https://cdn.spicyapi.ai/models/examples/inputs/27753da99f960815.png"
],
"prompt": "The first image is the character: keep her face, hair and the black slip dress exactly. The second image is the room. She crosses from the doorway to the window and leans against the frame, looking out. Slow lateral track, one practical lamp, night ambience.",
"duration_seconds": 8,
"resolution": "720p",
"aspect_ratio": "16:9",
"seed": 771120
}
}참조 이미지 2개, 참조 영상 없음: 8초 클립은 8 x $0.09 = $0.72입니다.
넘길 수 있는 것:
- 이미지(최대 10개)는 인물, 의상, 세트 플레이트용입니다. 실제 사람의 사진은 얼굴 검사로 거부되는 경우가 있습니다("The input content is suspected to include real human faces"). 일러스트, 3D 렌더, 생성 캐릭터를 사용하세요. 거부된 작업은 과금되지 않습니다.
- 영상(최대 5개 클립, 각각 1~15초, 총 15초)은 얼굴이 아니라 움직임과 카메라 스타일용입니다. 제출 전에 클립 길이를 확인하세요. 한도는 생성 중 적용되며 접수 시점이 아닙니다.
- 오디오(최대 5개 클립, 총 15초)는 목소리나 실내 앰비언스용입니다.
- 문서 1개 또는 공개 웹 페이지 1개(둘 동시 불가)를 모델이 인물, 의상, 배경, 동작을 읽는 데 쓰게 합니다. 100 MB까지 50페이지까지의 PDF, DOCX, TXT, Markdown 파일, 또는 로그인 없이 열리는 페이지입니다. 둘 중 하나를 첨부하면 설정에서 끄지 않은 한 thinking(Pro 등급에서는 사용 불가)과 prompt expansion이 켜집니다. creator tutorial이 아이디어를 보여 줍니다. 페이지 읽기에 실패하면 과금되지 않습니다.
1번 프레임이 정확해야 한다면 이미지→영상을 사용하세요. 참조→영상에 이미지에서 시작하라고 지시할 수는 있지만(Alibaba의 Wan 3.0 prompt guide 참고), 그것을 보장하는 것은 이미지→영상뿐입니다.
무검열 작업에서는 무엇이 달라지나
무검열은 Wan의 단일 스위치가 아닙니다. 어떤 작업을 고르느냐에 따라 결과가 달라집니다. 2026년 9월 테스트 기준(전체 표는 Wan uncensored test 참고):
- 베이스 Wan 3.0은 테스트에서 mild부터 strong까지 모든 강도를 텍스트, 이미지, 참조 입력 모두에서 통과시켰습니다. 다만 요청한 범위를 넘어서는 경우도 잦습니다. 억제를 주제로 한 프롬프트가 다른 성인 두 명의 장면으로 돌아오면서 두 번째 인물이 추가되기도 했습니다.
- Wan 3.0 Prime 이미지→영상은 성인 두 명의 장면을 약하게 만들었습니다. 반면 Prime 텍스트와 참조는 그대로 전달했습니다. 정지 화면에서 시작한다면 먼저 베이스 Wan 3.0을 시도하세요.
- Wan 3.0 Spicy와 Prime Spicy는 이미지→영상으로만 존재합니다(480p에서 초당 $0.057부터). 요청하지 않았는데도 성인 쪽으로 기우며 옷을 바꾸거나 벗겨 놓는 경우가 많습니다. 의상을 그대로 유지해야 한다면 베이스 Wan 3.0을 쓰세요.
- Wan 2.6 참조→영상은 저희 참조 영상을 거부했습니다.
동작은 엔드포인트마다 다르므로, 고른 곳에서 직접 프롬프트를 실행해 보세요. 30초를 넘어 이야기를 이어 가려면 chaining clips를 보세요.
먼저 Playground에서 해 보세요
각 작업마다 Playground 탭이 있는 전용 페이지가 있습니다(Form 뷰를 유지하세요. 실행하려면 잔액이 있는 계정으로 로그인해야 합니다). 코드를 쓰기 전에 거기서 짧고 저렴한 클립 하나를 돌려 보세요.
- 해당 작업의 페이지를 엽니다: text to video, image to video, reference to video.
- 그 작업에 필요한 입력란을 채웁니다. text to video는 Prompt. image to video는 Input image, 그리고 클립이 두 번째 이미지로 끝나야 한다면 Closing frame도 필요합니다. Prompt는 선택 사항입니다. reference to video는 Reference images, Reference videos, Reference audio(참조 입력 중 적어도 하나). 프롬프트에서 각각이 무엇을 통제하는지 밝히세요.
- Resolution을 480p로, Duration을 5로 설정합니다. 둘 다 가격에 영향을 준다고 표시되어 있으며, 바꾸면 페이지의 추정 금액이 갱신됩니다.
- 클립을 직접 평가할 일이 아니라면 Generate audio는 켜 두세요. 프롬프트가 확정되면 Prompt expansion은 끄세요. 두 가지 변경을 비교하려면 Seed를 지정하세요.
- Run model을 누르고 Output에서 클립을 본 뒤, 화면이 맞으면 해상도와 길이를 올리세요.
Form 옆의 JSON 뷰는 요청 본문을 보여 주고, 그 옆 코드 탭은 같은 호출을 보여 줍니다. 여기서 동작한 클립은 그대로 코드에 옮길 수 있습니다.
다음으로 코드에서 실행하기
Python SDK를 설치하고(pip install spicyapi), 환경 변수에 SPICY_API_KEY를 설정한 뒤 다음을 실행하세요. 위의 텍스트→영상 본문을 사용합니다. 다른 두 작업 중 하나로 바꾸려면 모델 ID와 input을 교체하세요. 가격을 보여 주고, 작업을 만들기 전에 확인을 기다립니다:
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
MODEL = "alibaba/wan-3.0/text-to-video"
body = {
"prompt": "A ceramic bottle stands on a brushed-steel counter. One bead of condensation "
"rolls down the glass while the camera pushes in slowly. Cool side light, no cut. "
"Sound: a faint fridge hum and the tick of the droplet landing.",
"duration_seconds": 10,
"resolution": "720p",
"aspect_ratio": "9:16",
"generate_audio": True,
}
quote = client.quote_task(model=MODEL, input_data=body)
print("Estimated", quote["estimatedCost"], "maximum", quote["maxCharge"])
if input("Create the task? [y/N] ").strip().lower() != "y":
raise SystemExit
task = client.create_task(
model=MODEL,
input_data=body,
idempotency_key=str(uuid.uuid4()),
quote_id=quote["quoteId"],
expected_cost=quote["estimatedCost"],
)
print("Task", task["taskId"], flush=True) # save it: after a timeout, look this task up instead of creating another
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise SystemExit(f"{task['taskId']} ended as {final['state']}: {final.get('errorCode')}")
assets = output_assets(final)
if not assets or any(
not asset.get("url") or asset.get("pending") or asset.get("unavailable")
for asset in assets
):
raise RuntimeError(f"{task['taskId']} has no complete downloadable output; look up this task before retrying")
print(assets[0]["url"]) # copy the clip to your own storage now이미지, 클립, 오디오 입력에는 공개 HTTPS 링크나 업로드한 파일을 사용하세요(media guide). 이 호출 이후의 내용은 tasks guide와 Python SDK reference에 있습니다. 서비스에서는 webhook도 쓸 수 있습니다. 클립은 약 14일간 보관되므로 원하는 것은 복사해 두세요(retention and delivery).
또는 Agent에 맡기기
어시스턴트가 클립을 실행해야 할 때, 공식 도구 세 가지 모두 가격을 보여 주고 유료 호출 전에 확인을 요청합니다.
- CLI. 같은
input객체를input.json에 넣고 다음을 실행하세요:
``bash spicyapi tasks create --model alibaba/wan-3.0/text-to-video --input-file input.json --wait ``
로컬 정지 화면은 spicyapi files upload still.png를 쓰면 image_url에 쓸 spicy:// 주소를 돌려줍니다. CLI docs를 보세요. npx @spicyapi/cli는 설치 없이도 동작합니다.
- MCP server. 어시스턴트에 MCP server를 추가한 뒤 이렇게 물어보세요: "Make a 10-second 9:16 clip at 720p with Wan 3.0 text-to-video from this prompt." 그러면
spicyapi_task_create를 호출해 가격 확인에서 멈추고, 이어서spicyapi_task_wait를 호출합니다. 컴퓨터에 있는 파일은spicyapi_upload_file로 처리합니다. - Skill.
npx skills add spicyapi-ai/spicy-skill로 Agent Skill을 설치하면, 코딩 어시스턴트가 필드를 추측하지 않고 실제 모델 스키마를 읽게 됩니다.
결과가 틀렸다면 한 가지만 바꾸세요
| 보이는 것 | 예상 원인 | 다음 단계 |
|---|---|---|
| Create 호출이 400을 반환함 | 작업이 열거하지 않은 필드이거나 범위를 벗어난 값 | 작업의 스키마와 비교 |
| 참조 인물이 다른 사람으로 합쳐짐 | 프롬프트에서 참조에 이름을 붙이지 않음 | "the first image is the character, the second is the room" 이라고 명시 |
| 사진에서 참조 작업이 실패함 | 실제 사람에 대한 얼굴 검사 | 생성, 일러스트, 3D 캐릭터로 전환 |
| 클립이 사용자의 크롭을 무시함 | aspect_ratio가 이미지와 충돌 | 그 값을 빼고 클립이 이미지 형상을 상속하게 하세요 |
| 클립이 주지 않은 장면으로 컷함 | 프롬프트가 정지 화면과 다른 방을 설명함 | 넘긴 프레임을 설명한 뒤 움직임만 서술 |
두 시도를 비교할 때는 필드 하나만 바꾸고 seed, 프롬프트, 길이, 해상도는 그대로 두세요. 타임아웃, 잔액 부족 등 일반적인 오류는 error reference에 있습니다.
어느 등급으로 시작할까
베이스 Wan 3.0의 480p로 시작하고, 화면이 맞으면 해상도를 올리세요. Prime은 480p에서 초당 36퍼센트 더 비싸고 빠르며, 720p와 1080p에서는 40퍼센트 더 비쌉니다. 1080p부터 4K까지는 Pro를 쓰세요. 5초, 10초, 15초로 길이를 고정하려면 Wan 2.6의 텍스트 또는 이미지 입력을 사용하세요.
FAQ
얼굴을 유지하는 데는 image-to-video가 reference-to-video보다 나은가요?
얼굴이 첫 프레임에 있다면 image-to-video입니다. 이미지를 그대로 1번 프레임으로 씁니다. reference-to-video는 얼굴이 여러 샷에 걸쳐 이어져야 할 때 위한 것이고, 참조는 고정하는 것이 아니라 방향을 주는 역할을 합니다.
image-to-video가 text-to-video보다 나은가요?
일반적으로 어느 쪽이 더 낫지는 않습니다. 1번 프레임이 특정의 승인된 비주얼이어야 하면 image-to-video가 유리하고, 단어로 장면을 계속 찾고 있다면 text-to-video가 유리하며 소스 파일도 필요 없습니다.
작업 종류가 가격을 바꾸나요?
아니요. 초당 가격은 등급과 해상도에 의해서만 정해집니다. 참조→영상에는 참조 클립의 과금 대상 초가 더해집니다.
요약하면, 장면을 찾을 때는 단어를, 1번 프레임을 고정할 때는 정지 화면을, 샷을 넘어 반복돼야 하는 것에는 참조를 쓰세요.











