> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Kling Videos Generation API 연동 설명

> Kling video generation API guide - Ace Data Cloud

본 문서는 Kling Videos Generation API 연동 설명을 소개하며, 이는 사용자 정의 매개변수를 입력하여 Kling 공식 비디오를 생성할 수 있습니다.

## 신청 절차

Kling Videos Generation API를 사용하려면 먼저 [Ace Data Cloud 콘솔](https://platform.acedata.cloud/console/applications)에서 API Token을 받아야 하며, 이를 보관해 두십시오.

![](https://cdn.acedata.cloud/5hmkdg.jpg)

로그인 또는 등록이 되어 있지 않은 경우, 자동으로 로그인 페이지로 리디렉션되어 등록 및 로그인을 초대합니다. 완료 후 현재 페이지로 자동으로 돌아옵니다.

**하나의 API Token으로 플랫폼의 모든 서비스를 호출할 수 있으며, 각 서비스별로 별도로 신청할 필요가 없습니다.** 처음 신청 시 무료 한도가 제공되어 무료로 체험할 수 있으며, 한도가 부족할 경우 [콘솔](https://platform.acedata.cloud/console/coin)에서 일반 잔액을 충전할 수 있습니다.

> 📘 전체 문서: [Kling Videos Generation API →](https://platform.acedata.cloud/documents/kling-videos)

## 기본 사용법

먼저 기본 사용법을 이해해야 하며, 이는 입력 프롬프트 `prompt`, 생성 행동 `action`, 첫 프레임 참조 이미지 `start_image_url` 및 모델 `model`을 입력하여 처리된 결과를 얻는 것입니다. 먼저 간단히 `action` 필드를 전달해야 하며, 그 값은 `text2video`입니다. 이는 주로 세 가지 행동을 포함합니다: 문생 비디오(`text2video`), 이미지 생 비디오(`image2video`), 확장 비디오(`extend`). 그리고 모델 `model`을 입력해야 하며, 현재 주요 모델은 `kling-v1`, `kling-v1-6`, `kling-v2-master`, `kling-v2-1-master`, `kling-v2-5-turbo`, `kling-v2-6`, `kling-v3`, `kling-v3-omni`, `kling-o1`입니다. 구체적인 내용은 다음과 같습니다:

<p>
  <img src="https://cdn.acedata.cloud/ke1bok.png" width="500" className="m-auto" />
</p>

여기서 Request Headers를 설정한 것을 볼 수 있습니다. 포함된 내용은 다음과 같습니다:

* `accept`: 어떤 형식의 응답 결과를 받고 싶은지, 여기서는 `application/json`으로 작성하여 JSON 형식으로 설정합니다.
* `authorization`: API 호출을 위한 키로, 신청 후 직접 드롭다운에서 선택할 수 있습니다.

또한 Request Body를 설정하였으며, 포함된 내용은 다음과 같습니다:

* `model`: 비디오를 생성하는 모델로, 주요 모델은 `kling-v1`, `kling-v1-6`, `kling-v2-master`, `kling-v2-1-master`, `kling-v2-5-turbo`, `kling-v2-6`, `kling-v3`, `kling-v3-omni`, `kling-o1`입니다.
* `mode`: 비디오 생성 모드로, 선택 가능한 값은 표준 모드 `std`, 초고속 모드 `pro`, 원본 4K 모드 `4k`입니다. `4k`는 `kling-v3` 및 `kling-v3-omni`에서만 지원되며, `camera_control`(운영 제어)과는 호환되지 않습니다.
* `action`: 이번 비디오 생성 작업의 행동으로, 주로 세 가지 행동을 포함합니다: 문생 비디오(`text2video`), 이미지 생 비디오(`image2video`), 확장 비디오(`extend`).
* `start_image_url`: 이미지 생 비디오 행동 `image2video`를 선택할 경우 반드시 업로드해야 하는 첫 프레임 참조 이미지 링크입니다.
* `end_image_url`: 이미지 생 비디오 시 선택 사항으로, 마지막 프레임을 지정합니다.
* `duration`: 비디오 길이, 단위는 초입니다. `kling-v3` 및 `kling-v3-omni`는 3-15초의 정수 길이를 지원하며, `kling-o1`은 5초만 지원합니다. 다른 모델은 5초 또는 10초를 지원합니다.
* `generate_audio`: 오디오를 동기화하여 생성할지 여부로, 선택 사항이며 불리언 값입니다. `kling-v3`, `kling-v3-omni`, `kling-v2-6`(단, pro 모드)에서 지원됩니다. 기본값은 `false`입니다.
* `aspect_ratio`: 비디오의 가로 세로 비율로, 선택 사항이며 `16:9`, `9:16`, `1:1`을 지원하며 기본값은 `16:9`입니다.
* `cfg_scale`: 관련성 강도, 범위는 \[0,1]이며, 값이 클수록 프롬프트에 더 잘 맞습니다.
* `camera_control`: 선택 사항으로, 카메라 움직임을 제어하는 객체 매개변수이며, type/simple 프리셋 및 horizontal, vertical, pan, tilt, roll, zoom 등의 구성을 지원합니다.
* `negative_prompt`: 선택 사항으로, 나타나지 않기를 원하는 반대 프롬프트로 최대 200자입니다.
* `image_list`: Omni 참조 이미지 목록으로, 모델 `kling-o1` 및 `kling-v3-omni`에 적합하며, 사용법은 아래의 "Omni 전천후 참조"를 참조하십시오.
* `video_list`: Omni 참조 비디오 목록(비디오 편집 지원)으로, 모델 `kling-o1` 및 `kling-v3-omni`에 적합하며, 사용법은 아래의 "Omni 전천후 참조"를 참조하십시오.
* `prompt`: 프롬프트입니다.
* `callback_url`: 결과를 회신받을 URL입니다.
* `async`: 선택 사항으로, `true`로 설정하면 인터페이스가 즉시 `task_id`를 반환하며, `callback_url`을 제공할 필요가 없고, 이후 해당 작업 조회 인터페이스를 통해 결과를 폴링하여 얻을 수 있습니다.

선택 후, 오른쪽에 해당 코드가 생성된 것을 확인할 수 있습니다. 아래와 같이:

<p>
  <img src="https://cdn.acedata.cloud/3yjql0.png" width="500" className="m-auto" />
</p>

"Try" 버튼을 클릭하여 테스트를 진행할 수 있으며, 위 그림과 같이 다음과 같은 결과를 얻을 수 있습니다:

```json theme={null}
{
  "success": true,
  "video_id": "900798310464749610",
  "video_url": "https://platform2.cdn.acedata.cloud/kling/6c68c267-065b-4423-b66b-a0e4c59ee0d5.mp4",
  "duration": "5.041",
  "state": "succeed",
  "task_id": "6c68c267-065b-4423-b66b-a0e4c59ee0d5"
}
```

반환된 결과는 여러 필드를 포함하며, 설명은 다음과 같습니다:

* `success`: 현재 비디오 생성 작업의 상태입니다.
* `task_id`: 현재 비디오 생성 작업 ID입니다.
* `video_id`: 현재 비디오 생성 작업의 비디오 ID입니다.
* `video_url`: 현재 비디오 생성 작업의 비디오 링크입니다.
* `duration`: 현재 비디오 생성 작업의 비디오 길이입니다.
* `state`: 현재 비디오 생성 작업의 상태입니다.

우리는 만족스러운 비디오 정보를 얻었으며, 결과의 `data`에서 비디오 링크 주소를 통해 생성된 Kling 비디오를 얻을 수 있습니다.

또한, 해당 연동 코드를 생성하고 싶다면 직접 복사하여 생성할 수 있으며, 예를 들어 CURL의 코드는 다음과 같습니다:

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/kling/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "text2video",
  "model": "kling-v3",
  "prompt": "White ceramic coffee mug on glossy marble countertop with morning window light. Camera slowly rotates 360 degrees around the mug, pausing briefly at the handle."
}'
```

## 모델 능력 매트릭스

다양한 모델이 매개변수에 대한 지원 상황이 크게 다릅니다. 아래 매트릭스는 [Kling 공식 video models 문서](https://app.klingai.com/global/dev/document-api/apiReference/model/videoModels)에서 정리한 것으로, 호출 전에 현재 `model` / `mode` / `duration` 조합이 필요한 기능을 지원하는지 확인하십시오. 그렇지 않으면 상위에서 `model/mode/duration(...) is not supported with image_tail` 등의 오류가 반환됩니다.

| 모델                  | 모드             | `end_image_url`（끝 이미지） | `generate_audio`（오디오 생성） | `camera_control`（카메라 제어） | 비고                                                |
| ------------------- | -------------- | ---------------------- | ------------------------ | ------------------------ | ------------------------------------------------- |
| `kling-v1`          | std / pro      | ✅  단지 `duration=5`     | ❌                        | ✅  단지 `duration=5`       | `extend`는 `negative_prompt`와 `cfg_scale`를 지원하지 않음 |
| `kling-v1-6`        | std            | ❌                      | ❌                        | ❌                        | 다중 이미지 비디오, `extend` 모든 모드 사용 가능                  |
| `kling-v1-6`        | pro            | ✅                      | ❌                        | ❌                        |                                                   |
| `kling-v2-master`   | —              | ❌                      | ❌                        | ❌                        | 단일 모드, 단지 `duration=5/10`                         |
| `kling-v2-1-master` | —              | ❌                      | ❌                        | ❌                        | 단일 모드, 단지 `duration=5/10`                         |
| `kling-v2-5-turbo`  | std            | ❌                      | ❌                        | ❌                        |                                                   |
| `kling-v2-5-turbo`  | pro            | ✅                      | ❌                        | ❌                        |                                                   |
| `kling-v2-6`        | std            | ❌                      | ❌                        | ❌                        |                                                   |
| `kling-v2-6`        | pro            | ✅                      | ✅                        | ❌                        | 유일하게 오디오를 동시에 지원하는 비 v3 모델                        |
| `kling-v3`          | std / pro      | ✅                      | ✅                        | ✅                        | `duration` 범위 3–15 초                              |
| `kling-v3`          | 4k             | ✅                      | ✅                        | ❌                        | 4K 모드는 카메라 제어와 호환되지 않음                            |
| `kling-v3-omni`     | std / pro / 4k | ✅                      | ✅                        | ❌                        |                                                   |
| `kling-o1`          | std / pro      | ✅                      | ❌                        | ❌                        | 단지 `duration=5`만 지원                               |

주의 사항：

* `mode=4k`는 오직 `kling-v3`와 `kling-v3-omni`만 지원하며, 카메라 제어와는 상충됨.
* `end_image_url`은 `action=image2video`일 때만 `start_image_url`과 함께 사용 가능. 단지 `end_image_url`만 전달하면 거부됨.
* `kling-v3` / `kling-v3-omni`는 임의의 3–15 초의 정수 `duration`을 수용하며, `kling-o1`은 단지 5만 수용; 나머지 모델은 5 또는 10만 수용.
* `generate_audio`는 기본값이 `false`이며, 오직 `kling-v3`、`kling-v3-omni`와 `kling-v2-6`（pro 모드）만 지원.

## 비디오 확장 기능

이미 생성된 Kling 비디오를 계속 생성하고 싶다면, `action` 매개변수를 `extend`로 설정하고 계속 생성할 비디오의 ID를 입력해야 합니다. 비디오 ID는 기본 사용에 따라 얻을 수 있으며, 아래 그림과 같이 표시됩니다:

<p>
  <img src="https://cdn.acedata.cloud/om6p6g.png" width="500" className="m-auto" />
</p>

이때 비디오의 ID는 다음과 같습니다:

```
"video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c"
```

> 주의: 여기서 비디오의 `video_id`는 생성된 비디오의 ID입니다. 비디오 생성 방법을 모른다면, 위의 기본 사용을 참조하여 비디오를 생성할 수 있습니다.

다음 단계로 확장할 프롬프트를 입력하여 비디오 생성을 사용자 정의해야 하며, 다음과 같은 내용을 지정할 수 있습니다:

* `model`：비디오 생성을 위한 모델, 주로 `kling-v1`、`kling-v1-5` 및 `kling-v1-6` 모델이 있습니다.
* `mode`：비디오 생성을 위한 모드, 선택 가능한 값은 표준 모드 `std`、초고속 모드 `pro` 및 원본 4K 모드 `4k`（오직 `kling-v3`와 `kling-v3-omni`만 지원, 카메라 제어와 호환되지 않음）입니다.
* `duration`：이번 비디오 생성 작업의 비디오 길이, 주로 5초와 10초를 포함합니다.
* `start_image_url`：이미지에서 비디오 행동 `image2video`를 선택할 때 반드시 업로드해야 하는 첫 프레임 참조 이미지 링크입니다.
* `prompt`：프롬프트.

입력 예시는 다음과 같습니다:

<p>
  <img src="https://cdn.acedata.cloud/ejimqy.png" width="500" className="m-auto" />
</p>

입력이 완료되면 자동으로 생성된 코드는 다음과 같습니다:

<p>
  <img src="https://cdn.acedata.cloud/52x4u5.png" width="500" className="m-auto" />
</p>

해당 Python 코드:

```python theme={null}
import requests

url = "https://api.acedata.cloud/kling/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "extend",
    "model": "kling-v1",
    "video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c",
    "prompt": "White ceramic coffee mug on glossy marble countertop with morning window light. Camera slowly rotates 360 degrees around the mug, pausing briefly at the handle.",
    "duration": 10
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

실행을 클릭하면 다음과 같은 결과를 얻을 수 있습니다:

```json theme={null}
{
  "success": true,
  "video_id": "bbc3b105-ac72-4de2-8390-0cb37dc7d41e",
  "video_url": "https://cdn.klingai.com/bs2/upload-kling-api/7822108635/extendVideo/Cjil4mfBfs0AAAAAAKhr6A-0_raw_video_1.mp4",
  "duration": "9.6",
  "state": "succeed",
  "task_id": "3ece87e6-3ee3-4f5e-bd70-5ae5eca89a23"
}
```

결과 내용이 위와 일치함을 알 수 있으며, 이는 비디오 확장 기능을 구현한 것입니다.

## Omni 전방위 참조（비디오 편집 / 참조 비디오 / 다중 이미지 참조）

`kling-o1`과 `kling-v3-omni`는 두 개의 독립 모델로, 두 모델 모두 "전방위 참조" 기능을 지원합니다. 텍스트에서 비디오(`action=text2video`)를 생성하는 기본 위에 추가로 참조 이미지나 참조 비디오를 전달하여 **다중 이미지 참조, 참조 비디오 및 기존 비디오 직접 편집**을 구현할 수 있습니다.

**핵심 약정**: 참조 자료는 반드시 `prompt`에서 `&lt;&lt;<image_1>>>`、`&lt;&lt;<video_1>>>` 형식으로（번호는 1부터 시작）`image_list` / `video_list`의 해당 위치의 자료를 인용해야 모델이 이러한 참조를 적용합니다. 자료를 전달하되 프롬프트에서 인용하지 않으면 자료는 무시됩니다.

> 안전 설명: 현재 API는 `element_list`를 개방하지 않습니다. Kling Element Library의 상위 ID는 제공업체 계정 네임스페이스에 속하며, 고객은 `image_list`를 통해 주 참조 이미지를 전달해야 합니다. Element Management API가 제공되기 전까지는 테넌트 격리를 제공해야 합니다.

Omni 요청은 `negative_prompt`、`cfg_scale` 또는 `camera_control`을 지원하지 않으며, `mode=4k`를 사용할 수 없습니다. 참조 비디오가 포함된 경우, `generate_audio`는 반드시 `false`여야 합니다.

### 참고 비디오 및 비디오 편집 (`video_list`)

`video_list`는 참고 비디오를 전달하는 데 사용되며, 본 기능에서 가장 일반적으로 사용되는 시나리오입니다. 배열 요소 필드는 다음과 같습니다:

* `video_url`：참고 비디오 링크, 비어 있을 수 없습니다. 요구 사항: 형식 MP4/MOV; 해상도 720px–2160px; 길이 3–10초; 프레임 속도 24–60fps; 파일 크기 ≤200MB; 최대 1개 비디오.
* `refer_type`：참고 유형, 선택 사항 `base`(기본값, **편집할 기본 비디오**, 즉 "비디오를 직접 편집", 요소 추가/삭제/수정, 구도 변경, 스타일 변경, 색상 변경, 날씨 변경 등) 또는 `feature`(**특징 참고**, 스타일/촬영/다음 장면 촬영 참고).
* `keep_original_sound`：원본 비디오 오디오를 유지할지 여부, 선택 사항 `yes`(유지) 또는 `no`(제거).

> 주의: 참고 비디오가 있을 경우, `generate_audio`는 `false`여야 합니다. `refer_type=base` 비디오는 첫 프레임/마지막 프레임을 지정할 수 없습니다.

기존 비디오를 편집하는(CURL 예시) 방법은 다음과 같습니다:

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/kling/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "text2video",
  "model": "kling-o1",
  "mode": "std",
  "duration": 5,
  "prompt": "<<<video_1>>>를 영화급 애니메이션 스타일로 변경하고 기존의 운동과 구도를 유지합니다.",
  "video_list": [
    {
      "video_url": "https://cdn.acedata.cloud/your-reference-video.mp4",
      "refer_type": "base",
      "keep_original_sound": "no"
    }
  ]
}'
```

### 다중 이미지 참고 (`image_list`)

`image_list`는 참고 이미지를 전달하는 데 사용됩니다(요소/장면/스타일 등), 배열 요소 필드는 다음과 같습니다:

* `image_url`：참고 이미지 링크, 비어 있을 수 없습니다. 요구 사항: 형식 .jpg/.jpeg/.png; 파일 크기 ≤10MB; 최소 한 변 ≥300px; 가로 세로 비율 1:2.5 \~ 2.5:1.
* `type`：선택 사항. 전달하지 않으면 순수 참고 이미지로 간주; `first_frame` / `end_frame`을 전달하면 각각 첫 프레임 / 마지막 프레임으로 사용됩니다(동일한 `start_image_url` / `end_image_url`과 동등).

사용 시 `prompt`에서 `&lt;&lt;<image_1>>>`, `&lt;&lt;<image_2>>>`로 참조해야 합니다. 수량 제한: 참고 비디오가 없을 경우 참고 이미지 ≤ 7; 참고 비디오가 있을 경우 참고 이미지 ≤ 4. 첫/마지막 프레임만 전달할 경우 `start_image_url` / `end_image_url`을 직접 사용할 수 있지만, 마지막 프레임은 첫 프레임과 함께 사용해야 합니다.

> 주의: `start_image_url` / `end_image_url`과 `image_list`를 동시에 전달할 경우, 첫/마지막 프레임은 `image_list` 이전에 배치되어 `&lt;&lt;<image_N>>>`의 순서 대응 관계에 영향을 미칠 수 있습니다. 하나를 선택하는 것이 좋습니다: 첫/마지막 프레임이 필요할 경우 `image_list`에서 `type`으로 지정하고, `start_image_url` / `end_image_url`과 혼용하지 마십시오.

다중 이미지 참고로 비디오를 생성하는 CURL 예시:

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/kling/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "text2video",
  "model": "kling-o1",
  "mode": "std",
  "duration": 5,
  "prompt": "<<<image_1>>>의 인물이 <<<image_2>>>의 장면에 서 있도록 하며, 영화 같은 조명",
  "image_list": [
    { "image_url": "https://cdn.acedata.cloud/subject.png" },
    { "image_url": "https://cdn.acedata.cloud/scene.png" }
  ]
}'
```

## 비동기 콜백

Kling Videos Generation API의 생성 시간은 상대적으로 길어 약 1-2분이 소요되며, API가 오랜 시간 응답하지 않을 경우 HTTP 요청은 연결을 유지하여 추가 시스템 리소스 소모를 초래할 수 있습니다. 따라서 본 API는 비동기 콜백 지원도 제공합니다.

전체 프로세스는 다음과 같습니다: 클라이언트가 요청을 시작할 때 추가로 `callback_url` 필드를 지정하고, 클라이언트가 API 요청을 시작한 후 API는 즉시 결과를 반환하며, 여기에는 현재 작업 ID를 나타내는 `task_id` 필드 정보가 포함됩니다. 작업이 완료되면 생성된 비디오 결과가 POST JSON 형식으로 클라이언트가 지정한 `callback_url`로 전송되며, 여기에도 `task_id` 필드가 포함되어 있어 작업 결과를 ID로 연결할 수 있습니다.

아래 예시를 통해 구체적인 작업 방법을 알아보겠습니다.

먼저, Webhook 콜백은 HTTP 요청을 수신할 수 있는 서비스로, 개발자는 자신이 구축한 HTTP 서버의 URL로 교체해야 합니다. 여기서는 편리한 시연을 위해 공개 Webhook 샘플 사이트 [https://webhook.site/를](https://webhook.site/를) 사용합니다. 해당 사이트를 열면 Webhook URL을 얻을 수 있습니다.

![](https://cdn.acedata.cloud/tbcnai.png)

이 URL을 복사하여 Webhook으로 사용할 수 있으며, 여기서의 샘플은 `https://webhook.site/624b2c78-6dbd-4618-9d2b-b32eade6d8c3`입니다.

다음으로, `callback_url` 필드를 위의 Webhook URL로 설정하고, 해당 매개변수를 입력합니다.

<p>
  <img src="https://cdn.acedata.cloud/vdx12s.png" width="500" className="m-auto" />
</p>

실행 버튼을 클릭하면 즉시 결과를 얻을 수 있습니다:

```
{
  "task_id": "20068983-0cc9-4c6a-aeb6-9c6a3c668be0"
}
```

잠시 후, `https://webhook.site/624b2c78-6dbd-4618-9d2b-b32eade6d8c3`에서 생성된 비디오 결과를 확인할 수 있습니다.

![](https://cdn.acedata.cloud/zv5u2q.png)

내용은 다음과 같습니다:

```json theme={null}
{
    "success": true,
    "video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c",
    "video_url": "https://cdn.klingai.com/bs2/upload-kling-api/7822108635/text2video/CjJzzGfBfqcAAAAAAKdVMQ-0_raw_video_1.mp4",
    "duration": "5.1",
    "state": "succeed",
    "task_id": "20068983-0cc9-4c6a-aeb6-9c6a3c668be0"
}
```

결과에서 `task_id` 필드가 있으며, 다른 필드는 위와 유사합니다. 이 필드를 통해 작업을 연결할 수 있습니다.

## 오류 처리

API를 호출할 때 오류가 발생하면 API는 해당 오류 코드와 정보를 반환합니다. 예를 들어:

* `400 token_mismatched`：잘못된 요청, 누락되거나 잘못된 매개변수 때문일 수 있습니다.
* `400 api_not_implemented`：잘못된 요청, 누락되거나 잘못된 매개변수 때문일 수 있습니다.
* `401 invalid_token`：권한 없음, 잘못되었거나 누락된 인증 토큰.
* `429 too_many_requests`：요청이 너무 많음, 비율 제한을 초과했습니다.
* `500 api_error`：내부 서버 오류, 서버에서 문제가 발생했습니다.

### 오류 응답 예시

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "가져오기 실패"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## 결론

이 문서를 통해 Kling Videos Generation API를 사용하여 입력 프롬프트와 첫 번째 프레임 참조 이미지를 통해 비디오를 생성하는 방법을 이해하셨습니다. 이 문서가 API를 더 잘 연동하고 사용하는 데 도움이 되기를 바랍니다. 질문이 있으시면 언제든지 기술 지원 팀에 문의해 주십시오.
