소개
Wan 3.0 이미지→영상는 준비한 정지 이미지를 움직입니다. image_url은 그대로 첫 프레임으로 쓰이므로 의상, 몸, 세트, 빛의 방향은 이미지에서 가져오고 프롬프트에는 움직임만 적으면 됩니다. 프롬프트는 생략할 수 있으며, 없으면 모델이 스스로 프레임을 움직입니다. 선택 항목인 last_image_url을 넣으면 마지막 프레임을 정확히 고정합니다. 클립은 480p, 720p, 1080p에서 2~30초이고 생성 오디오는 기본으로 켜져 있습니다. 모드 가운데 가장 문자 그대로 따르는 모드이므로, 결과가 문장과 맞아야 할 때는 모습은 이미지에 맡기고 프롬프트는 움직임에 쓰십시오.
시작 자료에 따라 모드 선택하기
| 시작 자료 | 모드 |
|---|---|
| 작성한 브리프가 장면, 행동, 카메라, 필요한 경우 사운드를 정합니다. | Wan 3.0 텍스트→영상 |
| 승인된 시작 이미지가 피사체와 구성을 정하고, 지시문이 이후의 움직임을 이끕니다. | Wan 3.0 이미지→영상 |
| 분리된 참조 자료에 정체성, 장소, 움직임 또는 사운드의 역할을 명확히 배정할 수 있습니다. | Wan 3.0 레퍼런스→영상 |
핵심 기능 및 하이라이트
첫 프레임이 화질의 상한을 정합니다
첫 프레임이 곧 준비한 이미지이므로 그 선명도, 조명, 구도가 클립의 상한이 됩니다. 이미지는 JPEG, 투명도 없는 PNG, BMP, WEBP를 쓸 수 있고, 한 변 240~8000픽셀, 가로세로 비율 8:1 이내, 최대 20MB입니다. aspect_ratio를 빼면 클립이 이미지의 비율을 이어받고, 맞지 않는 비율을 넣으면 잘립니다.
마지막 프레임은 제안이 아니라 고정입니다
last_image_url은 느슨한 참고가 아닙니다. 클립은 정확히 그 이미지에서 끝나며, image_url과 함께일 때만 동작합니다. 병 예시는 같은 패킷 샷을 양 끝에 넣었기 때문에 병이 4분의 1 바퀴 돌면서 하이라이트가 유리를 가로지르고, 라벨이 읽히는 처음 각도로 돌아와 멈춥니다.
고정된 두 순간 사이의 긴 구간
양 끝을 모두 넣으면 그 사이의 흐름만 생성됩니다. 루프톱 예시는 오픈 홀드를 첫 프레임으로, 딥 동작의 가장 낮은 지점을 마지막 프레임으로 고정하고, 그 사이 5초를 720p로 모델이 채웁니다. 이 엔드포인트의 duration_seconds는 최대 30이므로 같은 두 장으로 훨씬 긴 동작을 감쌀 수도 있습니다.
요청 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
prompt | 아니요 | 선택 사항입니다. 생략하면 모델이 첫 프레임만 보고 움직임을 만듭니다. 1자 이상 |
image_url | 예 | 첫 프레임으로 그대로 쓰이며, 컷의 실제 품질 상한이기도 합니다. 의상과 몸, 세트, 빛의 방향이 여기서 넘어오므로 프롬프트는 움직임만 실어 나르면 됩니다. |
last_image_url | 아니요 | 선택 사항이며 image_url과 함께일 때만 쓸 수 있습니다. 클립은 이 이미지에서 그대로 끝납니다. |
aspect_ratio | 아니요 | 16:9, 9:16, 1:1, 4:3, 3:4, adaptive 중에서 고릅니다. adaptive는 모델이 고르게 두는 값입니다. |
enable_thinking | 아니요 | 생성 전에 모델이 요청과 참고 자료를 충분히 검토하게 합니다. 분량이 많은 문서, 웹 페이지, 복잡한 참고 이미지에 도움이 되지만 처리 시간이 길어집니다. 기본값: |
resolution | 아니요 | 480p, 720p, 1080p 중에서 고릅니다. 기본은 720p입니다. |
duration_seconds | 아니요 | 2에서 30까지 정수 초라면 어떤 값이든 되고, -1이면 스마트 길이입니다. 스마트 길이는 모델이 길이를 정하며, 최대치인 30초를 먼저 잡아 두고 실제로 나온 길이로 정산합니다. |
generate_audio | 아니요 | 기본으로 켜져 있습니다. 소리가 화면과 이미 맞물린 채로 클립이 돌아옵니다. 기본값: |
enable_prompt_expansion | 아니요 | 기본은 꺼짐입니다. 켜면 생성 전에 프롬프트를 다시 쓰는데, 얄팍한 브리프에는 도움이 되고 자세한 브리프와는 다툽니다. 기본값: |
seed | 아니요 | 0에서 2147483647까지입니다. 필드 하나씩 바꿔 비교하려면 고정하고, 다양성을 원하면 빼세요. |
요금
| 사양 | 요금 |
|---|---|
| $0.045 / 초 |
| $0.09 / 초 |
| $0.18 / 초 |
활용 사례
대표 각도로 돌아오는 제품 회전
패킷 샷이라면 승인된 이미지를 첫 프레임과 마지막 프레임에 모두 넣고, 카메라를 고정한 뒤 움직임 하나만 적습니다. 병 예시는 왼쪽에서 오는 부드러운 키 라이트 하나, 음악 없음(generate_audio를 false로), 시드 20260907 고정을 사용합니다. 이렇게 하면 문장을 조금 바꾼 뒤 같은 움직임을 다시 돌려 두 파일을 비교하기 쉽습니다.
문장대로 움직이는 스타일링된 샷
의상, 몸, 세트가 승인된 그대로 보여야 한다면 첫 프레임에 넣으십시오. 창가에서 돌아서는 예시는 실크 슈미즈 차림 여성의 정지 이미지에서 시작하고, 프롬프트에는 렌즈 쪽으로 돌아서는 동작, 빛 앞을 흐르는 얇은 커튼, 새벽빛이 짙어지는 동안의 느린 푸시 인만 적었습니다. 클립은 1080p에서 5초이며 오디오가 포함됩니다.
프롬프트 가이드 및 실전 팁
보이는 것 말고 바뀌는 것을 쓰기
화면에 이미 있는 것은 모두 이어받으므로, 그것을 다시 묘사하면 움직임에 써야 할 단어만 줄어듭니다. 누가 또는 무엇이 어느 방향으로 얼마나 빠르게 움직이는지 쓰고, 그다음 카메라가 무엇을 하는지 쓰십시오. 예: ‘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.’
두 프레임을 한 쌍으로 준비하기
last_image_url을 추가할 때는 두 이미지를 같은 크롭, 같은 세트로 만들고, 한쪽이 어떻게 다른 쪽이 되는지 프롬프트로 설명합니다. 루프톱 예시는 오픈 홀드로 춤추는 두 사람의 첫 프레임과, 같은 두 사람이 같은 루프톱, 같은 카메라 위치에서 딥 동작을 마친 마지막 프레임을 짝지어 프롬프트에는 그 사이의 움직임만 적습니다. 그가 손을 잡아 그녀를 끌어당긴 뒤 천천히 뒤로 눕히고, 카메라는 고정된 채입니다.
양 끝뿐 아니라 중간도 확인하기
마지막 프레임이 맞는다고 해서 전환이 자연스럽다는 뜻은 아닙니다. 시작, 중간, 끝 지점에서 인물과 형태를 확인하고, 흔들린다면 길이를 늘리기 전에 동시에 일어나는 움직임의 수를 줄이십시오. 먼저 5초에서 움직임을 확정한 뒤 늘리고, 세밀한 움직임 지시가 쓴 그대로 실행되도록 enable_prompt_expansion은 기본값 false로 두십시오.
API 빠른 시작
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "alibaba/wan-3.0/image-to-video",
"input": {
"duration_seconds": 5,
"image_url": "https://example.com/reference.png",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"resolution": "720p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
인증, 전체 스키마, 폴링과 오류 처리는 API 레퍼런스에서 확인하세요.



























