소개
Wan 2.6 Spicy 이미지→영상은 모델 계열 Wan 2.6 Spicy의 유일한 엔드포인트입니다. 사용 권한이 있는 시작 프레임이 정확히 5초, 10초 또는 15초 길이의 720p 또는 1080p 클립이 되어 사운드와 함께 돌아옵니다. 의상, 신체, 세트, 조명, 화면 형태는 프레임이, 움직임은 프롬프트가 맡습니다. 요청에는 클립을 구분하는 항목이 없으며, 요청마다 따로 신고할 필요도 없습니다.
필수 항목은 image_url 하나뿐입니다. 프롬프트, 네거티브 프롬프트, 오디오 트랙, 숏 유형, 프롬프트 확장, 시드는 모두 선택 사항입니다.
핵심 기능 및 하이라이트
세 가지 고정 길이
duration_seconds는 범위가 아니라 5, 10, 15 중에서 고르는 열거값입니다. 7을 보내면 반올림된 클립 대신 검증 오류가 돌아오므로 몇 초에 대해 지불하는지 항상 알 수 있고, 편집도 세 가지 길이를 기준으로 계획할 수 있습니다. 물, 머리카락, 손은 5초에서는 잘 유지되지만 15초에서는 더 흐트러지므로, 가장 긴 옵션을 고르기 전에 고려하십시오.
audio_url로 쓰는 나만의 트랙
클립은 항상 사운드와 함께 돌아오며 소리를 끄는 스위치는 없습니다. 대사나 음악 큐를 특정 프레임에 맞춰야 한다면 audio_url로 보내면 되고, 클립은 립싱크와 템포를 그 소리에 맞춥니다. 파일은 WAV 또는 MP3, 길이 3~30초, 크기 15MB 이하여야 합니다.
제외 전용 필드
negative_prompt는 두 번째 인물, 소품, 화면 속 글자, 프레임이 자꾸 재현하는 워터마크 등을 최대 500자로 막아 두는 곳입니다. 최대 1,500자인 프롬프트는 움직임에 온전히 쓸 수 있습니다. 프롬프트에서 의상이나 세트를 다시 설명하면 프레임이 이미 정한 것을 모델이 다시 그리게 만드는 빌미가 됩니다.
요청 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
image_url | 예 | 첫 프레임입니다. 의상과 몸, 세트, 빛의 방향, 클립의 화면비가 전부 여기서 나오므로, 납품 형태로 먼저 크롭하세요. |
prompt | 아니요 | 선택입니다. 프레임 다음에 일어나는 일을 적으세요. 1500자 이하 |
negative_prompt | 아니요 | 나오면 안 되는 것을 적습니다. 두 번째 인물, 소품, 화면 위 글자, 원본 컷이 자꾸 재현하는 워터마크 같은 것들입니다. 500자 이하 |
duration_seconds | 아니요 | 정확히 5, 10, 15 중 하나입니다. 그 밖의 값은 반올림되지 않고 거절되니, 돈을 내는 길이가 예상 밖일 일이 없습니다. |
resolution | 아니요 | 720p 또는 1080p이고 기본값은 720p입니다. 가격과 작업이 돌아오는 시간을 둘 다 움직입니다. |
audio_url | 아니요 | 클립이 따라갈 오디오 트랙이고 입 모양과 호흡을 이끕니다. 대사나 음악 큐가 특정 프레임에 떨어져야 할 때 쓰세요. |
seed | 아니요 | 0에서 2147483647까지입니다. 같은 원본 컷으로 해상도나 길이를 비교하는 동안에는 고정해 두세요. |
shot_type | 아니요 | 싱글은 전체를 한 컷으로 갑니다. 멀티는 모델이 컷을 나눠 짧은 장면에 어울리지만 연속성은 끊깁니다. |
enable_prompt_expansion | 아니요 | 기본으로 꺼져 있어 프롬프트가 쓴 그대로 전달됩니다. 얄팍한 브리프를 채우고 싶을 때 켜십시오. 기본값: |
요금
| 사양 | 요금 |
|---|---|
| $0.095 / 초 |
| $0.1425 / 초 |
활용 사례
물과 빛
공개된 수영장 예시는 블루 아워에 옥상 수영장에서 올라오는 수영하는 사람의 정지 화면에서 시작합니다. 프레임에 의상, 물, 뒤의 도시가 모두 담겨 있으므로, 프롬프트는 그녀가 더 일어나고, 머리를 뒤로 쓸어 넘기고, 카메라를 향해 눈을 뜬다고만 말합니다. 720p에서 5초입니다.
두 사람의 장면
두 사람이 나오는 프레임도 다른 이어 가기와 똑같이 처리됩니다. 클립은 시작 프레임에 보이는 것을 그대로 이어 가며, 그 뒤에 아무것도 걸러지지 않습니다. 그린룸 예시는 한 사람이 다른 사람 뒤에서 움직이는 동안 클립 전체에서 같은 구도를 유지하며, 1080p로 5초 렌더링했습니다.
직접 녹음한 목소리로 말하는 컴패니언 캐릭터
캐릭터 이미지 하나를 시작 프레임으로 재사용하고 녹음한 대사를 audio_url로 업로드합니다. 입술 움직임과 템포가 녹음에 맞춰 진행되므로 같은 얼굴이 일반적인 입 모양 대신 대본을 말할 수 있습니다.
한 번의 호출로 만드는 15초 스폿
15초면 프리롤 한 편이나 스토리 카드 한 장을 편집 없이 채울 수 있습니다. 시작 프레임 하나, 동작 문장 하나, 요청 한 번이면 되고, 길이가 세 가지 고정값 중 하나이므로 제출 전에 이미 정해져 있습니다.
프롬프트 가이드 및 실전 팁
프레임을 납품 형식에 맞게 자르기
인물, 의상, 장소, 조명, 클립의 비율은 사진이 정합니다. 화면비 필드가 없으므로 보내기 전에 16:9, 9:16 또는 정사각형으로 자르십시오. 나중에 구도를 바꾸면 다시 렌더링해야 합니다. JPEG, 투명도 없는 PNG, BMP, WEBP 중 하나로, 각 변 240~8,000픽셀, 20MB 이하의 이미지를 보내십시오.
작은 움직임으로 클립 만들기
살대 모양 빛 예시는 발이 굽혀지고 무릎이 펴지는 두 가지 작은 움직임으로 이루어지며, 그 밑에서 실크가 흔들립니다. 블라인드가 흔들리면 살대 모양의 빛이 기어가듯 움직이며 나머지를 맡고, 카메라는 이동이 아니라 손으로 든 1인칭 시점의 흔들림입니다. 이런 작고 구체적인 동작은 프레임이 바뀌도록 요구하지 않으면서도 할 일을 줍니다.
카메라가 고정되면 경계를 프롬프트에 쓰기
10초짜리 그린룸 예시에서는 눈여겨볼 것이 모두 하나의 수평선 위에 놓여 있으며, 프롬프트는 프레임 밖으로 나가면 안 되는 것을 분명히 적습니다. 카메라가 움직이지 않을 때는 프레이밍으로 피하려 하기보다 프롬프트에 제약을 적는 편이 더 안정적으로 유지됩니다. 클립 전체에서 지켜져야 하기 때문입니다.
포함된 예시 응용하기
duration_seconds: 5, image_url: a publicly accessible URL, resolution: 720p로 된 공개 예시에서 시작하십시오. 이 모드의 입력 형식은 그대로 두고 피사체와 움직임만 바꿉니다.
She rises further out of the water, sheets of it running off her shoulders and swimsuit, slicks her wet hair straight back with both hands and opens her eyes toward camera, droplets scattering. Blue-hour city towers glow behind, slow-motion water detail, ambient pool lap and distant traffic.
이 엔드포인트의 클립을 만든 실제 요청이며, 옆에 표시된 시작 프레임에서 생성했습니다.
720p에서 다듬고 고른 버전을 1080p로 렌더링하기
해상도에 따라 가격과 작업 소요 시간이 모두 달라집니다. 움직임은 720p에서 다듬고, 고른 버전을 같은 프레임과 같은 seed(0~2147483647)로 1080p에서 다시 렌더링하십시오. 5초와 15초를 비교할 때도 둘 다 고정합니다. 그렇지 않으면 두 설정이 아니라 서로 다른 두 클립을 비교하게 됩니다. 시드는 결과를 안정시키지만 똑같은 클립을 보장하지는 않습니다.
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-2.6-spicy/image-to-video",
"input": {
"duration_seconds": 5,
"image_url": "https://example.com/reference.png",
"resolution": "720p",
"shot_type": "single"
}
}'
# 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 레퍼런스에서 확인하세요.




























