소개
Kling O3 이미지→영상은 직접 준비한 첫 프레임을 움직입니다. 이미지를 업로드하고, 선택적으로 마지막 프레임을 추가해 끝부분을 고정한 다음, 그 사이에 일어나는 일을 설명하세요. 프롬프트 필드는 최대 2,500자입니다. 길이는 3~15초 사이 정수 초, 해상도는 최대 4K까지 선택할 수 있고, 영상과 함께 네이티브 오디오를 생성할지도 정할 수 있습니다.
시작 소재별 Kling O3 모드 선택
| 시작 시점에 가진 것 | 모드 |
|---|---|
| 글로 쓴 장면뿐 | Kling O3 텍스트→영상 |
| 승인된 첫 프레임 | Kling O3 이미지→영상 |
| 최대 7장의 레퍼런스 사진 | Kling O3 레퍼런스→영상 |
| 이미 가진 영상 | Kling O3 영상 편집 |
핵심 기능 및 하이라이트
첫 프레임을 충실히 따라갑니다
프레임 속 인물, 의상, 공간이 무엇이든 클립은 그것을 그대로 유지합니다. 저희 우산 예시에서는 두 여성의 얼굴이 5초 클립 내내 첫 프레임과 일치했고, 프롬프트는 새로운 동작만 설명하면 됐습니다.
마지막 프레임으로 끝부분을 고정할 수 있습니다
last_image_url을 추가하면 클립이 모델이 임의로 멈추는 지점 대신 그 프레임에서 끝나도록 만들어집니다. 두 프레임의 조명, 각도, 프레이밍을 비슷하게 유지하세요. 둘 사이 차이가 크면 긴 클립의 중간 부분이 흔들리게 됩니다.
움직임과 함께 생성되는 사운드
generate_audio는 애니메이션과 같은 과정에서 대사, 효과음, 배경음을 추가하며, 나중에 별도 단계로 붙이는 것이 아니라 설명한 동작에 맞춰 타이밍이 맞춰집니다.
요청 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
prompt | 예 | 첫 프레임 이후에 일어나는 일만 설명하세요. 동작, 카메라 움직임, 사운드를 켠 경우 대사와 효과음입니다. 1자 이상 · 2500자 이하 |
image_url | 예 | 첫 프레임입니다. JPEG 또는 PNG. |
last_image_url | 아니요 | 클립이 끝나야 할 마지막 프레임입니다(선택). 첫 프레임과 조명·프레이밍을 비슷하게 맞추세요. |
resolution | 아니요 | 720p, 1080p, 4K 중 선택합니다. 상위 등급일수록 초당 비용이 더 듭니다. |
generate_audio | 아니요 | 같은 과정에서 따옴표로 쓴 대사, 효과음, 배경음이 담긴 사운드트랙을 생성합니다. 720p와 1080p에서는 무음보다 초당 비용이 더 들지만, 4K에서는 음성을 켜든 끄든 가격이 같습니다. 기본값: |
duration_seconds | 아니요 | 정수 초 단위로 3~15초 사이입니다. 해상도, 오디오와 함께 가격을 결정합니다. |
shot_type | 아니요 | single은 한 테이크로 이어지는 촬영을 요청합니다(Kling O3가 그래도 알아서 컷을 나눌 수 있으니, 중요하다면 "one continuous shot, no cuts"를 추가하세요). multi는 프롬프트를 여러 샷으로 나누게 합니다. |
multi_prompt | 아니요 | shot_type이 customize일 때 쓰는 샷 목록입니다. 최대 6개 샷을 순서대로 넣고 각 샷에 프롬프트(최대 512자)와 정수 초 길이를 지정합니다. 1개 이상 · 6개 이하 |
요금
출력 초당 과금됩니다. 요율은 해상도와 네이티브 오디오 사용 여부에 따라 달라집니다.
| 해상도 | 오디오 생성: 아니요 | 오디오 생성: 예 |
|---|---|---|
| $0.0672 / 초 | $0.0896 / 초 |
| $0.0896 / 초 | $0.112 / 초 |
| $0.336 / 초 | $0.336 / 초 |
활용 사례
이미 승인한 프레임 움직이기
정확한 인물, 의상, 구도가 중요할 때는 스틸 이미지를 먼저 생성하거나 선택한 다음 여기로 보내세요. 텍스트 프롬프트에 맡기면 실행할 때마다 새로 그려집니다.
이미 가진 두 프레임을 이어주기
image_url과 last_image_url을 모두 설정하면 승인된 시작과 승인된 끝 사이를 그럴듯한 움직임으로 채웁니다. 특정 최종 구도로 끝나야 하는 장면에 유용합니다.
이미 마음에 드는 스틸에 대사 추가하기
generate_audio를 켜고 동작과 함께 대사 한 줄을 설명하세요. 룩은 이미지가, 움직임과 대사는 프롬프트가 제공합니다.
프롬프트 가이드 및 실전 팁
이미 있는 것이 아니라 이후를 설명하세요
프레임 속 인물이나 그들이 입은 옷을 다시 설명하지 마세요. 이미지가 이미 답을 정했습니다. 프롬프트는 바뀌는 것—동작, 카메라 움직임, 사운드—에 집중하세요.
마지막 프레임을 첫 프레임과 비슷하게 유지하세요
last_image_url을 쓴다면 첫 이미지와 조명, 프레이밍이 비슷한 프레임을 고르거나 생성하세요. 서로 가까울수록 그 사이 움직임이 자연스러워지고, 차이가 크면 모델이 안정적으로 유지할 수 있는 것보다 더 많이 지어내야 합니다.
연속성이 중요하면 테이크를 고정하세요
shot_type single은 선호일 뿐 보장이 아닙니다. 끊기면 안 되는 장면—예를 들어 끊김 없는 하나의 리액션—이라면 프롬프트 끝에 "one continuous shot, no cuts"를 추가하세요.
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": "kling/o3/image-to-video",
"input": {
"duration_seconds": 5,
"generate_audio": false,
"image_url": "https://example.com/reference.png",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"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 레퍼런스에서 확인하세요.












