소개
Wan 2.2 LoRA는 Alibaba의 Wan 2.2 이미지→영상 모델로 시작 프레임을 움직이고, 그 위에 직접 학습시킨 LoRA 가중치를 얹어 스타일, 캐릭터, 움직임을 조정할 수 있는 모델입니다. 시작 프레임과 움직임을 설명하는 프롬프트는 필수입니다. LoRA는 선택 사항인 세 슬롯에 각각 최대 3개까지 넣을 수 있고, 각 항목은 1GB 이하 가중치 파일의 직접 URL과 0부터 4까지의 강도로 이루어집니다. 클립 길이는 정확히 5초 또는 8초이며 해상도는 480p 또는 720p입니다.
핵심 기능 및 하이라이트
두 번의 노이즈 제거 패스에 대응하는 세 슬롯
Wan 2.2는 두 단계로 노이즈를 제거합니다. high_noise_loras는 구도와 움직임이 정해지는 고노이즈 전문가에, low_noise_loras는 디테일과 질감이 완성되는 저노이즈 전문가에 가중치를 적용하고, loras는 양쪽 모두에 적용합니다. 선화나 그레인 처리는 대개 저노이즈 슬롯에, 카메라나 움직임 스타일은 고노이즈 슬롯에 어울립니다.
카메라 스타일과 렌더링 스타일에 각각 다른 강도
슬롯마다 적용되는 패스가 다르므로, 움직임 LoRA와 질감 LoRA를 한 요청에 함께 넣고 각자 강도를 줄 수 있습니다. 하나로 섞인 가중치의 균형을 맞추는 대신 한쪽은 올리고 다른 쪽은 내리는 식으로 조정합니다. 같은 슬롯에 쌓은 LoRA는 층을 이루지 않고 섞이므로 하나씩 추가하는 편이 안전합니다.
가중치는 직접 호스팅한 곳에 그대로
각 파일은 실행하는 동안에만 지정한 URL에서 가져오며 플랫폼에는 아무것도 저장되지 않습니다. 직접 내려받을 수 있는 링크는 물론 Civitai 모델 페이지나 다운로드 링크, Hugging Face의 blob 또는 resolve 링크도 쓸 수 있고, 이런 링크는 자동으로 실제 파일로 연결됩니다. 그 밖의 공유 페이지나 로그인이 필요한 위치는 가져오기에 실패합니다. 비공개로 두어야 하는 가중치는 서명된 링크 뒤에 두십시오.
슬롯이 비어 있으면 기본 모델 그대로
세 배열의 기본값은 모두 비어 있습니다. LoRA 없이 보낸 요청은 같은 이미지와 프롬프트에 대한 기본 Wan 2.2 이미지→영상 결과를 반환하며, 강도를 바꿔 가며 비교할 때 이것이 기준이 됩니다.
요청 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
prompt | 예 | 필수입니다. 무엇이 움직이고 카메라가 어떻게 도는지 적으세요. 1자 이상 |
image_url | 예 | 첫 프레임입니다. 피사체와 의상, 세트, 클립의 화면비가 전부 여기서 나옵니다. 1자 이상 |
resolution | 아니요 | 480p 또는 720p이고 기본값은 480p입니다. LoRA 조합을 480p에서 검증하고 나서 720p로 다시 렌더링하세요. |
duration_seconds | 아니요 | 정확히 5 또는 8입니다. 다른 값은 반올림되지 않고 거절되니, 돈을 내는 길이가 예상 밖일 일이 없습니다. |
loras | 아니요 | 두 노이즈 전문가 모두에 적용되는 LoRA를 최대 세 개까지 받습니다. 항목마다 가중치 파일의 직접 URL과 강도가 필요하고, 스타일이 구도와 질감에 모두 닿아야 할 때 쓰는 슬롯입니다. 기본값: |
high_noise_loras | 아니요 | 구도와 움직임이 정해지는 고노이즈 전문가에 LoRA를 최대 세 개까지 붙입니다. 카메라나 움직임 스타일에 맞는 슬롯입니다. 기본값: |
low_noise_loras | 아니요 | 디테일과 질감이 확정되는 저노이즈 전문가에 LoRA를 최대 세 개까지 붙입니다. 선화나 그레인, 렌더링 처리에 맞는 슬롯입니다. 기본값: |
seed | 아니요 | 0에서 2147483647까지입니다. LoRA 강도를 훑는 동안에는 고정해 두세요. |
요금
| 사양 | 요금 |
|---|---|
| $0.024 / 초 |
| $0.048 / 초 |
활용 사례
자사 일러스트 스타일을 시리즈 전체에
선화와 채색 방식으로 LoRA를 학습시키고, 강도 1 안팎으로 저노이즈 슬롯에 불러옵니다. 각 클립의 캐릭터와 세트는 시작 프레임이, 렌더링은 LoRA가 맡으므로 시리즈의 모든 클립이 같은 렌더링을 공유합니다. 옥상 산책 예시가 그 출발점에 해당합니다. 밤의 옥상에 선 셀 셰이딩 캐릭터를 LoRA 없이 움직이고, 프롬프트는 트래킹 이동 중에도 애니메이션 스타일을 유지하라고 요청합니다.
카메라 스타일과 렌더링 스타일 분리하기
한 요청 안에서 움직임이나 카메라 LoRA는 고노이즈 슬롯에, 질감 LoRA는 저노이즈 슬롯에 넣습니다. 움직임은 맞는데 질감이 너무 강하다면 저노이즈 쪽 강도만 낮추고 같은 이미지, 프롬프트, 시드로 다시 실행하십시오.
무검열 스타일 가중치
무검열 스타일로 학습한 가중치도 다른 파일과 똑같이 실행됩니다. 요청에서 내용을 신고하지 않고 LoRA를 검사하지도 않습니다. 작업의 한계를 정하는 것은 가중치, 학습 데이터, 첫 프레임에 대한 사용자의 권리와, 등장하는 모든 사람의 동의, 나이, 현지 법률입니다.
알맞은 강도 찾기
이미지, 프롬프트, 시드를 고정한 채 LoRA 하나의 강도를 480p에서 0.5부터 1.5까지 네 번에 나눠 바꿔 봅니다. 대략 1.5를 넘으면 스타일이 피사체를 꾸미기보다 집어삼키기 시작하는 경향이 있습니다. 스타일이 살아 있으면서 이미지 속 피사체가 아직 온전한 실행을 골라, 그 조합을 720p로 다시 렌더링하십시오.
프롬프트 가이드 및 실전 팁
쓰기 전에 슬롯부터 정하기
LoRA가 무엇을 바꾸게 할지 먼저 정합니다. 렌더링 스타일은 저노이즈 슬롯, 움직임이나 카메라 스타일은 고노이즈 슬롯, 구도와 질감 모두에 영향을 주고 싶다면 공통 슬롯입니다. 그러면 프롬프트에는 무엇이 움직이고 카메라가 어떻게 움직이는지만 쓰면 됩니다.
스타일을 두 번 지정하지 않기
LoRA를 불러오면서 프롬프트에도 같은 스타일 이름을 쓰면 효과가 두 배로 걸리기 쉽습니다. 외형을 LoRA에 맡길 때는 프롬프트를 동작과 카메라에 집중시키고, 스타일 단어를 더하는 대신 강도로 조정하십시오.
포함된 예시 응용하기
옥상 산책 예시는 duration_seconds 5, resolution 480p로, LoRA 슬롯 세 개를 모두 비운 채 실행되었습니다.
She pushes off the railing, straightens her blazer over one shoulder and turns to walk along the rooftop, city lights and the vending machine glow sliding past behind her, hair lifting in the night wind. Smooth tracking move, anime cel-shaded style held stable.
먼저 직접 준비한 이미지로, 같은 형태의 프롬프트(동작 하나, 카메라 움직임 하나)와 고정한 시드를 사용해 기본 클립을 만듭니다. 그다음 한 슬롯에 가중치 URL 하나를 강도 1로 추가하고 나머지는 그대로 둔 채 실행해 두 클립을 비교하면, 그 LoRA가 무엇을 바꾸는지 알 수 있습니다.
길이, 시드, 이미지를 의도적으로 설정하기
duration_seconds는 5 또는 8만 받으며, 다른 값은 반올림되지 않고 거부됩니다. 시드에 0을 넣으면 무작위로 생성되므로, 강도를 바꿔 가며 비교하는 동안에는 0이 아닌 값을 쓰십시오. 이미지는 투명도가 없는 PNG, JPEG, BMP, WebP 형식으로 20MB까지 가능하며, 클립의 화면비는 이미지에서 정해지므로 먼저 납품할 형태로 잘라 두십시오.
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.2-lora/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": "480p"
}
}'
# 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 레퍼런스에서 확인하세요.




























