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

# Kling 3.0 모션 컨트롤 비디오 생성

> - 비동기 처리 모드, 작업 ID 반환으로 후속 조회 지원
- 하나의 주요 참조 이미지와 하나의 동작 참조 비디오를 사용하여 제어 가능한 비디오 생성
- 720p / 1080p 지원, 인물 방향 소스 및 배경 소스 설정 가능하며 참조 비디오 실제 지속 시간에 따라 과금


export const apiKeyUrl = 'https://aireiter.com/keys';

## Authorizations

<ParamField header="Authorization" type="string" required>
  모든 엔드포인트는 Bearer Token 인증이 필요합니다.

  API Key 획득 방법:

  <a href={apiKeyUrl} target="_blank">API Key 관리 페이지</a>에서 API Key를 획득하세요.

  요청 헤더에 다음과 같이 추가하여 사용합니다:

  ```
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

## Body

<ParamField body="model" type="string" required>
  모델 이름:

  * `"kling_3_0_motion_control"` - 기본값
</ParamField>

<ParamField body="params" type="object" required>
  모델 파라미터 객체

  <Expandable title="params 객체 속성">
    <ParamField body="prompt" type="string">
      기대하는 출력 효과에 대한 텍스트 설명

      * 선택 사항
      * 최대 길이: 2500자
      * 예시: `No distortion, the character's movements are consistent with the video.`
    </ParamField>

    <ParamField body="image_url" type="string" required>
      주체 참고 이미지 URL

      * 필수
      * 단일 이미지만 지원
      * 지원 형식: JPG, JPEG, PNG
      * 최대 파일 크기: 10MB
      * 이미지 크기는 300px 이상이어야 함
      * 가로세로 비율은 2:5에서 5:2 사이여야 함
      * 생성되는 비디오의 캐릭터, 배경 및 기타 요소들은 이 참고 이미지를 기반으로 함
    </ParamField>

    <ParamField body="video_url" type="string" required>
      동작 참고 비디오 URL

      * 필수
      * 단일 비디오만 지원
      * 지원 형식: MP4, MOV / QuickTime
      * 최대 파일 크기: 100MB
      * 비디오 크기는 300px 이상이어야 함
      * 가로세로 비율은 2:5에서 5:2 사이여야 함
      * 길이: `character_orientation=image`일 때 최대 10초, `character_orientation=video`일 때 최대 30초
      * 예상 포인트와 실제 비용은 이 비디오의 실제 길이에 따라 계산되며, `video_length`를 전달할 필요 없음
      * 생성 비디오의 캐릭터 동작은 이 참고 비디오와 일치함
    </ParamField>

    <ParamField body="resolution" type="string" default="720p">
      출력 해상도 모드

      * `720p` - 표준 모드(기본값)
      * `1080p` - 고화질 모드
    </ParamField>

    <ParamField body="character_orientation" type="string" default="video">
      캐릭터 방향 참고 출처

      * `video` - 참고 비디오 내 캐릭터 방향과 일치, 비디오 최대 30초(기본값)
      * `image` - 참고 이미지 내 캐릭터 방향과 일치, 비디오 최대 10초
    </ParamField>

    <ParamField body="background_source" type="string" default="input_video">
      배경 참고 출처

      * `input_video` - 동작 비디오 배경 사용(기본값)
      * `input_image` - 주체 이미지 배경 사용
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="out_task_id" type="string" required>
  요청자 작업 ID

  사용자 정의 작업 식별자, 필수
</ParamField>

## Response

<ResponseField name="out_task_id" type="string">
  요청자 작업 ID, 결과 조회에 사용할 수 있음
</ResponseField>

<ResponseField name="status" type="string">
  초기 상태, 고정값 `"pending"`
</ResponseField>

<ResponseField name="estimated_credits" type="number">
  예상 소모 포인트
</ResponseField>

<ResponseField name="created_at" type="string">
  생성 시간 (ISO 형식)
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://aireiter.com/api/openapi/submit \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
      "model": "kling_3_0_motion_control",
      "params": {
        "prompt": "캐릭터가 참고 영상에 맞춰 자연스럽게 춤추도록 하며, 주체 아이덴티티를 유지",
        "image_url": "https://example.com/subject.png",
        "video_url": "https://example.com/motion.mp4",
        "resolution": "720p",
        "character_orientation": "video",
        "background_source": "input_video"
      },
      "out_task_id": "my_task_123456"
    }'
  ```

  ```python Python theme={null}
  import requests

  url = "https://aireiter.com/api/openapi/submit"

  payload = {
      "model": "kling_3_0_motion_control",
      "params": {
          "prompt": "캐릭터가 참고 영상에 맞춰 자연스럽게 춤추도록 하며, 주체 아이덴티티를 유지",
          "image_url": "https://example.com/subject.png",
          "video_url": "https://example.com/motion.mp4",
          "resolution": "720p",
          "character_orientation": "video",
          "background_source": "input_video"
      },
      "out_task_id": "my_task_123456"
  }

  headers = {
      "Authorization": "Bearer <token>",
      "Content-Type": "application/json"
  }

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

  ```javascript JavaScript theme={null}
  const url = "https://aireiter.com/api/openapi/submit";

  const payload = {
    model: "kling_3_0_motion_control",
    params: {
      prompt: "캐릭터가 참고 영상에 맞춰 자연스럽게 춤추도록 하며, 주체 아이덴티티를 유지",
      image_url: "https://example.com/subject.png",
      video_url: "https://example.com/motion.mp4",
      resolution: "720p",
      character_orientation: "video",
      background_source: "input_video"
    },
    out_task_id: "my_task_123456"
  };

  fetch(url, {
    method: "POST",
    headers: {
      "Authorization": "Bearer <token>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify(payload)
  })
    .then(response => response.json())
    .then(data => console.log(data));
  ```
</RequestExample>
