OrcaRouter는 비디오 생성을 위해 Kling을 네이티브로 지원합니다.
작업을 제출하고, 작업 ID로 상태를 폴링한 다음, 업스트림이 완료되면
렌더링된 MP4를 받습니다(보통 30 - 90초).
이 비동기 제출-후-폴링 패턴은 비디오에만 고유합니다. 채팅 / 이미지
/ TTS는 모두 동기 요청-응답이지만 Kling 비디오는 아닙니다.
제출 엔드포인트 POST /v1/video/generations는 비디오 프로바이더
간에 공유됩니다 — 요청 본문 형태는 당신의 model 접두사로
선택됩니다. 이 페이지는 model: kling/...를 다룹니다. ByteDance
Seedance 모델은 model: byteplus/...을 사용하고
Seedance 비디오를 따르세요. 가져오기
엔드포인트 GET /v1/video/generations/{task_id}는 둘에 동일합니다.
모든 모델이 텍스트-to-비디오와 이미지-to-비디오를 지원합니다. 고급
기능은 다음과 같이 다릅니다:
| 모델 | 멀티소스 참조¹ | 4K | 네이티브 오디오² | 멀티샷 |
|---|
kling/kling-v2-master | | | | |
kling/kling-v2-1-master | | | | |
kling/kling-v2-5-turbo | | | | |
kling/kling-v2-6 | | | pro 모드 | |
kling/kling-v3 | | ✓ | ✓ | ✓ |
kling/kling-video-o1 | ✓ (제한적) | | | |
kling/kling-v3-omni | ✓ (완전) | ✓ | ✓ | ✓ |
¹ 멀티소스 참조 = image_list / video_list 메타데이터 필드.
존재하면 Kling의 Omni-Video 업스트림 엔드포인트로 라우팅됩니다.
kling/kling-video-o1은 제한된 부분집합(5s/10s만, 멀티샷 없음,
오디오 없음); 전체 Omni 인터페이스에는 kling/kling-v3-omni를
선택하세요.
² 네이티브 오디오 = Kling이 비디오와 일치하는 사운드트랙을 자동
생성. 업스트림에서 추가 청구. metadata.sound: "on"으로 전환.
모든 모델의 제출 엔드포인트는 동일 — POST /v1/video/generations.
달라지는 것은 업스트림이 위 표에 따라 어떤 metadata 필드를
존중하는지입니다.
작업 제출
/v1/video/generations에 model, prompt 및 업스트림 고유
매개변수를 metadata 아래에 두고 POST 하세요:
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "kling/kling-v3-omni",
"prompt": "cat playing piano in a sunny room",
"metadata": {
"mode": "std",
"aspect_ratio": "16:9",
"duration": "5"
}
}'
응답에 작업 ID가 포함됩니다:
{
"id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
"task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
"object": "video",
"model": "kling/kling-v3-omni",
"status": "queued",
"progress": 0,
"created_at": 1777975188
}
POST는 소문자 status: "queued"를 반환합니다. GET은 대문자 상태
(SUBMITTED / IN_PROGRESS / SUCCESS / FAILURE)를 가진 래핑된
봉투를 반환합니다 — 아래 “결과 폴링” 참조.
공통 메타데이터 필드
이 세 가지는 모든 엔드포인트 변형에 적용됩니다:
| 필드 | 타입 | 비고 |
|---|
mode | string | std(720P) / pro(1080P) / 4k. 4k는 kling/kling-v3과 kling/kling-v3-omni에서만. 텍스트/이미지-to-비디오의 기본값은 std, Omni-Video의 기본값은 pro. |
aspect_ratio | string | 16:9 / 9:16 / 1:1. 첫 프레임 참조나 video_list를 제공하지 않는 한 Omni-Video에서 필수(그 경우 입력에서 추론). |
duration | string | 초 단위 길이. 기본값 "5". kling/kling-v3-omni와 kling/kling-v3는 "3"-"15"를 받음; v2 패밀리(v2-master, v2-1-master, v2-5-turbo, v2-6)와 kling/kling-video-o1은 "5" 또는 "10"을 받음. 권위 있는 모델별 범위는 Kling Capability Map 참조. |
이 두 가지는 텍스트-to-비디오와 이미지-to-비디오에만(Omni-Video는
NOT):
| 필드 | 타입 | 비고 |
|---|
negative_prompt | string | 피할 것. 최대 2500자. |
cfg_scale | float | 범위 [0, 1], 기본값 0.5. 높을수록 엄격한 프롬프트 준수. v2.x 모델에서 지원되지 않음(kling-v2-master / v2-1-master / v2-5-turbo / v2-6). |
결과 폴링
제출 시 반환된 작업 ID를 사용:
curl https://api.orcarouter.ai/v1/video/generations/task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw \
-H "Authorization: Bearer sk-orca-..."
응답 형태는 래핑됨:
{
"code": "success",
"message": "",
"data": {
"task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
"status": "SUCCESS",
"progress": "100%",
"result_url": "https://v16-kling-fdl.klingai.com/.../video.mp4?...",
"action": "omniVideo",
"submit_time": 1777975188,
"start_time": 1777975241,
"finish_time": 1777975277,
"fail_reason": ""
}
}
상태 값(대문자, 원시 작업 상태):
| 상태 | 의미 |
|---|
NOT_START | 작업 행 생성됨, 아직 디스패치되지 않음(일시적, 보통 2초 미만) |
SUBMITTED | Kling 업스트림에 보내짐, 그들의 큐에서 대기 |
IN_PROGRESS | Kling이 렌더링 중 |
SUCCESS | 완료. data.result_url이 MP4를 운반 |
FAILURE | 실패. data.fail_reason이 이유 |
진행 상황은 int가 아니라 퍼센트 문자열("30%", "100%")로
반환됩니다.
5 - 10초마다 폴링하세요. 전형적인 std 5초 클립은 30 - 60초에 완료;
4K, 15초, 멀티샷 작업은 2 - 5분 소요.
data.result_url은 Kling 서명 URL입니다(ksTime / ksSecret 쿼리
매개변수 주의). 장기 보관이 필요하면 즉시 다운로드하거나 다시
호스팅하세요 — 서명에는 업스트림에서 정의한 만료가 있습니다.
엔드포인트 변형
세 변형 모두 POST /v1/video/generations를 공유합니다. Kling이
실제로 제공하는 엔드포인트는 어떤 필드를 제공하는지에 따라
결정됩니다.
텍스트-to-비디오
model + prompt(+ 위의 선택적 메타데이터)만. 이미지 입력이
없으면 텍스트-to-비디오:
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "kling/kling-v2-6",
"prompt": "ocean waves at sunset, cinematic",
"metadata": {"mode": "pro", "duration": "5"}
}'
이미지-to-비디오
첫/마지막 프레임 i2v를 위해 최상위 image(첫 프레임) 및/또는
metadata.image_tail(마지막 프레임) 추가:
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "kling/kling-v2-master",
"prompt": "the cat starts dancing",
"image": "https://example.com/cat.png",
"metadata": {"mode": "std", "duration": "5"}
}'
멀티소스 참조 (Omni-Video)
image_list와 video_list는 요청을 Kling의 Omni-Video 엔드포인트
로 라우팅합니다. kling/kling-video-o1과 kling/kling-v3-omni에서
만 사용 가능.
image_list — 다중 이미지 참조:
{ "image_list": [{ "image_url": "...", "type": "first_frame" }] }
image_url(필수): URL 또는 원시 base64(data: 접두사 없음).
type(선택): first_frame / end_frame. 이미지가 프레임
앵커로 의도되지 않은 한 생략. end-only는 지원되지 않음(항상
first-frame 이미지와 함께).
video_list — 비디오 참조(최대 1 비디오, MP4/MOV, ≤200MB):
{ "video_list": [{ "video_url": "...", "refer_type": "base", "keep_original_sound": "yes" }] }
refer_type: base(비디오 편집 — 입력 비디오가 편집됨; 기본값)
또는 feature(스타일/구성 참조 — 다음/이전 샷 생성).
keep_original_sound: yes / no.
kling/kling-v3-omni에서 비디오 참조는 3-10s 지속 시간, std/pro
모드(4K가 아님)에서만 지원.
video_list가 설정되면 metadata.sound는 "off"여야 합니다 —
그렇지 않으면 Kling이 조합을 거부합니다.
프롬프트 내 이미지 / 비디오 / 요소를 <<<>>> 구문으로 참조:
<<<image_1>>>, <<<video_1>>>, <<<element_1>>>. Omni만.
인덱스는 배열 순서(1 기반)와 일치.
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "kling/kling-v3-omni",
"prompt": "<<<image_1>>> waves at the camera, then walks toward the ocean",
"metadata": {
"image_list": [{"image_url": "https://example.com/person.jpg"}],
"mode": "pro",
"aspect_ratio": "16:9",
"duration": "5",
"sound": "on"
}
}'
고급 기능
이 기능들은 텍스트-to-비디오, 이미지-to-비디오, Omni-Video 엔드포인트
에서 작동합니다 — 모델 지원이 다릅니다. metadata로 전달.
멀티샷
각각 자체 프롬프트와 지속 시간을 가진 여러 순차 샷으로 구성된
비디오를 생성합니다. kling/kling-v3와 kling/kling-v3-omni에서
사용 가능.
| 필드 | 타입 | 목적 |
|---|
multi_shot | bool | 활성화하려면 true로 설정. 최상위 prompt와 첫/마지막 프레임 입력 무시. |
shot_type | string | customize(multi_prompt를 문자 그대로 사용) 또는 intelligence(Kling이 자동 세그먼트). multi_shot=true일 때 필수. |
multi_prompt | array | [{index, prompt, duration}]. 1 - 6 스토리보드. 각 샷의 duration ≥ 1s; 합계는 작업의 총 duration과 같아야 함. 각 prompt ≤ 512자. |
네이티브 오디오
Kling이 비디오와 일치하는 사운드트랙을 자동 생성. 업스트림에서 추가
청구. metadata.sound: "on"(기본값 "off")으로 전환.
모델 지원:
kling/kling-v3와 kling/kling-v3-omni: 모든 모드(std / pro / 4K)
kling/kling-v2-6: pro 모드만
- 다른 모든 모델: 지원되지 않음
워터마크
metadata.watermark_info: {enabled: true}를 전달하여 렌더링된
비디오에 Kling 워터마크를 새깁니다. 기본값은 워터마크 없음.
Kling 비디오는 작업당 청구됩니다. OrcaRouter는 Kling이 청구하는 것을
정확히 청구합니다 — 업스트림 final_unit_deduction이 마크업 없이
지갑 차감이 됩니다. 최종 비용은 Kling이 공개한 요율 카드와 일치합니다.
제출 시 당신의 요청에 대한 가장 그럴듯한 최고 비용(예: 4K + 오디오)
을 커버하기 위해 작은 사전 소비 보류가 예약됩니다; 차액은 작업이
성공하는 즉시 환불됩니다.
실제 작업당 지출은 콘솔의 지갑 기록에서 확인하세요.
Kling SDK 직접 사용
이미 Kling 공식 SDK에 대해 작성된 코드가 있다면, OrcaRouter는
/kling/v1/videos/...에서 Kling의 네이티브 와이어 형식도 말합니다.
본문 필드는 플랫하게 유지(model_name, mode 등) — base URL,
Authorization 헤더, model_name 값만 변경됩니다:
curl https://api.orcarouter.ai/kling/v1/videos/omni-video \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model_name": "kling/kling-v3-omni",
"prompt": "cat playing piano",
"mode": "pro",
"aspect_ratio": "16:9",
"duration": "5",
"sound": "on"
}'
model_name은 OrcaRouter 측 모델 신원(즉 /v1/video/generations
에서 사용할 동일한 이름)을 사용해야 하며, Kling의 베어 모델 이름이
아닙니다. OrcaRouter는 채널의 model_mapping을 통해 해결한 다음
Kling으로 전달합니다.
해당 가져오기 경로는
GET /kling/v1/videos/omni-video/{task_id}(또는 text2video,
image2video)입니다.
기존 코드에 맞는 와이어 형식을 선택하세요. 둘 다 동일하게 청구
됩니다.
관련 항목