> ## Documentation Index
> Fetch the complete documentation index at: https://dripart-chore-mintlify-theme-mint.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Comfy Router로 Kling V2.6 사용하기

> Comfy Router를 통해 kling/kling-v2-6을 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답.

`kling/kling-v2-6`의 API 레퍼런스입니다. Kling에서 제공하며 Comfy Router가 서비스합니다.

## 빠른 시작

[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys?onboarding=router)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python, TypeScript, Swift 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`, 그리고 [`ComfySwiftSDK`](https://github.com/Comfy-Org/comfy-swift-sdk) Swift 패키지)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다.

**모델 ID:** `kling/kling-v2-6`

**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/kling-v2-6`

<Tabs>
  <Tab title="결과 기다리기">
    <CodeGroup>
      ```python Python theme={null}
      from comfy_sdk import Comfy

      # 환경 변수에서 COMFY_API_KEY를 읽습니다.
      # SDK는 멱등성 키(idempotency key)를 자동으로 생성하고 자동 재시도에 재사용합니다.
      with Comfy() as client:
          result = client.models.run(
              "kling/kling-v2-6",
              {
                  "aspect_ratio": "16:9",
                  "duration": "5",
                  "mode": "std",
                  "prompt": "A red fox trotting through falling snow, cinematic lighting.",
              },
          )

      print(result)
      ```

      ```typescript TypeScript theme={null}
      import { comfy } from "@comfyorg/sdk";

      // 환경 변수에서 COMFY_API_KEY를 읽습니다.
      // SDK는 멱등성 키(idempotency key)를 자동으로 생성하고 자동 재시도에 재사용합니다.
      const { data } = await comfy.models.run("kling/kling-v2-6", {
        aspect_ratio: "16:9",
        duration: "5",
        mode: "std",
        prompt: "A red fox trotting through falling snow, cinematic lighting.",
      });

      console.log(data);
      ```

      ```swift Swift theme={null}
      import Foundation
      import ComfySwiftSDK

      // 환경 변수에서 COMFY_API_KEY를 읽습니다.
      // SDK는 호출마다 멱등성 키(idempotency key)를 발급하고 자동 재시도에 재사용합니다.
      let client = ComfyCloudClient(apiKey: ProcessInfo.processInfo.environment["COMFY_API_KEY"]!)
      let result = try await client.models.run(
          "kling/kling-v2-6",
          input: [
              "aspect_ratio": "16:9",
              "duration": "5",
              "mode": "std",
              "prompt": "A red fox trotting through falling snow, cinematic lighting.",
          ]
      )

      print(result.output)
      ```

      ```bash cURL theme={null}
      curl https://api.comfy.org/v2/models/kling/kling-v2-6 \
        -H "X-API-Key: $COMFY_API_KEY" \
        -H "Idempotency-Key: $(uuidgen)" \
        -H "Content-Type: application/json" \
        -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}"
      ```
    </CodeGroup>
  </Tab>

  <Tab title="실행 대기열에 넣고 나중에 수집">
    동일한 본문을 `POST https://api.comfy.org/v2/models/kling/kling-v2-6/requests` 로 보냅니다. Router는 실행이 접수되는 즉시 `201` 과 `request_id` 로 응답하고, 결과는 준비되는 대로 이 프로세스나 다른 프로세스에서 수집합니다. 상태, 취소, 수집 방법은 [큐 전송](/ko/development/comfy-router/queue) 에서 자세히 다룹니다.

    <CodeGroup>
      ```python Python theme={null}
      from comfy_sdk import Comfy

      # 환경 변수에서 COMFY_API_KEY를 읽습니다.
      # 각 submit() 호출은 자체 Idempotency-Key를 생성하고 자동 재시도에 재사용합니다.
      with Comfy() as client:
          handle = client.models.submit(
              "kling/kling-v2-6",
              {
                  "aspect_ratio": "16:9",
                  "duration": "5",
                  "mode": "std",
                  "prompt": "A red fox trotting through falling snow, cinematic lighting.",
              },
          )
          print("request_id:", handle.request_id)  # 모델 ID와 함께라면 다른 프로세스에 필요한 전부입니다.

          # 요청이 완료될 때까지 폴링하며, 서버가 지정한 Retry-After만큼 기다립니다.
          for update in handle.iter_events():
              print(update.status, update.queue_position)

          # 공급자 자체의 페이로드로, models.run() 이 반환하는 것과 같은 값입니다.
          # 실패했거나 취소된 요청은 여기에서 타입이 지정된 Router 오류를 발생시킵니다.
          result = handle.get()

      print(result)
      ```

      ```typescript TypeScript theme={null}
      import { comfy } from "@comfyorg/sdk";

      // 환경 변수에서 COMFY_API_KEY를 읽습니다.
      // 각 submit() 호출은 자체 Idempotency-Key를 생성하고 자동 재시도에 재사용합니다.
      const handle = await comfy.models.submit("kling/kling-v2-6", {
        aspect_ratio: "16:9",
        duration: "5",
        mode: "std",
        prompt: "A red fox trotting through falling snow, cinematic lighting.",
      });
      console.log("requestId:", handle.requestId); // 모델 ID와 함께라면 다른 프로세스에 필요한 전부입니다.

      // 요청이 완료될 때까지 폴링하며, 서버가 지정한 Retry-After만큼 기다립니다.
      for await (const update of handle.events()) {
        console.log(update.status, update.queuePosition);
      }

      // models.run() 이 반환하는 것과 같은 결과입니다. 실패했거나 취소된 요청은 여기에서 거부됩니다.
      const result = await handle.get();

      console.log(result.data);
      ```

      ```swift Swift theme={null}
      import Foundation
      import ComfySwiftSDK

      // 환경 변수에서 COMFY_API_KEY를 읽습니다.
      // 각 submit() 호출은 자체 Idempotency-Key를 생성하고 자동 재시도에 재사용합니다.
      let client = ComfyCloudClient(apiKey: ProcessInfo.processInfo.environment["COMFY_API_KEY"]!)
      let handle = try await client.models.submit(
          "kling/kling-v2-6",
          input: [
              "aspect_ratio": "16:9",
              "duration": "5",
              "mode": "std",
              "prompt": "A red fox trotting through falling snow, cinematic lighting.",
          ]
      )
      print("requestId:", handle.requestId)  // 모델 ID와 함께라면 다른 프로세스에 필요한 전부입니다.

      // 요청이 완료될 때까지 폴링하며, 서버가 지정한 Retry-After만큼 기다립니다.
      for try await update in handle.events() {
          print(update.state.rawValue, update.queuePosition.map(String.init) ?? "unknown")
      }

      // 공급자 자체의 페이로드로, models.run() 이 반환하는 것과 같은 값입니다.
      // 실패했거나 취소된 요청은 여기에서 타입이 지정된 Router 오류를 던집니다.
      let result = try await handle.result()

      print(result.output)
      ```

      ```bash cURL theme={null}
      # 1. 제출. Router는 request_id, status_url, response_url, cancel_url과 함께 201로 응답합니다.
      curl https://api.comfy.org/v2/models/kling/kling-v2-6/requests \
        -H "X-API-Key: $COMFY_API_KEY" \
        -H "Idempotency-Key: $(uuidgen)" \
        -H "Content-Type: application/json" \
        -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}"

      # 2. 상태가 COMPLETED가 될 때까지 폴링하며, 각 응답이 지정한 Retry-After 초만큼 기다립니다.
      REQUEST_ID="<request_id from the 201 body>"
      curl -i https://api.comfy.org/v2/models/kling/kling-v2-6/requests/$REQUEST_ID/status \
        -H "X-API-Key: $COMFY_API_KEY"

      # 3. 수집. 모델의 네이티브 출력과 함께 200, 아직 실행 중이면 상태 본문과 함께 202를 반환합니다.
      curl https://api.comfy.org/v2/models/kling/kling-v2-6/requests/$REQUEST_ID \
        -H "X-API-Key: $COMFY_API_KEY"
      ```
    </CodeGroup>
  </Tab>
</Tabs>

## 스키마

### 입력

<ParamField body="aspect_ratio" type="string" default="&#x22;16:9&#x22;">
  비디오 화면 비율

  가능한 값: `16:9`, `9:16`, `1:1`
</ParamField>

<ParamField body="callback_url" type="string (uri)">
  콜백 알림 주소

  형식: `uri`
</ParamField>

<ParamField body="camera_control" type="object" />

<ParamField body="camera_control.config" type="object" />

<ParamField body="camera_control.config.horizontal" type="number">
  카메라의 수평 축(x축) 이동을 제어합니다. 음수는 왼쪽, 양수는 오른쪽을 나타냅니다.

  범위: `-10` \~ `10`
</ParamField>

<ParamField body="camera_control.config.pan" type="number">
  수직 평면에서의 카메라 회전(x축)을 제어합니다. 음수는 아래로 회전, 양수는 위로 회전을 나타냅니다.

  범위: `-10` \~ `10`
</ParamField>

<ParamField body="camera_control.config.roll" type="number">
  카메라의 롤링 정도(z축)를 제어합니다. 음수는 반시계 방향, 양수는 시계 방향을 나타냅니다.

  범위: `-10` \~ `10`
</ParamField>

<ParamField body="camera_control.config.tilt" type="number">
  수평 평면에서의 카메라 회전(y축)을 제어합니다. 음수는 왼쪽으로 회전, 양수는 오른쪽으로 회전을 나타냅니다.

  범위: `-10` \~ `10`
</ParamField>

<ParamField body="camera_control.config.vertical" type="number">
  카메라의 수직 축(y축) 이동을 제어합니다. 음수는 아래쪽, 양수는 위쪽을 나타냅니다.

  범위: `-10` \~ `10`
</ParamField>

<ParamField body="camera_control.config.zoom" type="number">
  카메라 초점 거리의 변화를 제어합니다. 음수는 좁은 화각, 양수는 넓은 화각을 나타냅니다.

  범위: `-10` \~ `10`
</ParamField>

<ParamField body="camera_control.type" type="string">
  미리 정의된 카메라 움직임 유형입니다. simple: 사용자 정의 가능한 카메라 움직임. down\_back: 카메라가 하강하며 뒤로 이동합니다. forward\_up: 카메라가 앞으로 이동하며 위로 기울어집니다. right\_turn\_forward: 오른쪽으로 회전하며 앞으로 이동합니다. left\_turn\_forward: 왼쪽으로 회전하며 앞으로 이동합니다.

  가능한 값: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward`
</ParamField>

<ParamField body="cfg_scale" type="number" default="0.5">
  비디오 생성의 유연성입니다. 값이 높을수록 모델의 유연성 정도가 낮아지고 사용자 프롬프트와의 관련성이 강해집니다.

  범위: `0` \~ `1`

  형식: `float`
</ParamField>

<ParamField body="duration" type="string" default="&#x22;5&#x22;">
  비디오 길이(초)

  가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15`
</ParamField>

<ParamField body="external_task_id" type="string">
  사용자 정의 작업 ID
</ParamField>

<ParamField body="mode" type="string" default="&#x22;std&#x22;">
  비디오 생성 모드입니다. std: 비용 효율적인 표준 모드. pro: 더 긴 재생 시간과 더 높은 품질의 출력을 생성하는 프로페셔널 모드.

  가능한 값: `std`, `pro`
</ParamField>

<ParamField body="model_name" type="string">
  모델 이름입니다. Comfy Router를 사용할 때는 생략하거나 null을 보내면 되며, 모델은 요청 경로에 따라 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다.
</ParamField>

<ParamField body="multi_prompt" type="object[]">
  프롬프트와 재생 시간 등 각 스토리보드에 대한 정보입니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi\_shot이 true이고 shot\_type이 customize일 때 필수입니다.
</ParamField>

<ParamField body="multi_prompt[].duration" type="string">
  이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없으며 1보다 작을 수 없습니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다.
</ParamField>

<ParamField body="multi_prompt[].index" type="integer">
  샷 순서 번호
</ParamField>

<ParamField body="multi_prompt[].prompt" type="string">
  이 스토리보드의 프롬프트 단어입니다. 최대 길이는 512자입니다.
</ParamField>

<ParamField body="multi_shot" type="boolean" default="false">
  멀티 샷 비디오를 생성할지 여부입니다. true이면 prompt 파라미터가 무효화됩니다. false이면 shot\_type 및 multi\_prompt 파라미터가 무효화됩니다.
</ParamField>

<ParamField body="negative_prompt" type="string">
  네거티브 텍스트 프롬프트입니다. 긍정 프롬프트 내에 부정 문장을 직접 포함하여 네거티브 프롬프트 정보를 보완하는 것을 권장합니다.
</ParamField>

<ParamField body="prompt" type="string">
  긍정 텍스트 프롬프트입니다. \<\<\<voice\_1>>>를 사용하여 voice\_list 파라미터 순서에 맞는 음성을 지정할 수 있습니다. 하나의 작업은 최대 2개의 톤을 참조할 수 있습니다. 톤을 지정할 때는 sound 파라미터 값이 on이어야 합니다.
</ParamField>

<ParamField body="shot_type" type="string">
  스토리보드 방법입니다. multi\_shot 파라미터가 true로 설정된 경우 필수입니다.

  가능한 값: `customize`, `intelligence`
</ParamField>

<ParamField body="sound" type="string" default="&#x22;off&#x22;">
  비디오 생성 시 사운드를 동시에 생성할지 여부입니다. V2.6 이상 버전의 모델만 이 파라미터를 지원합니다.

  가능한 값: `on`, `off`
</ParamField>

<ParamField body="watermark_info" type="object">
  워터마크가 적용된 결과물을 동시에 생성할지 여부입니다. 사용자 정의 워터마크는 현재 지원되지 않습니다.
</ParamField>

<ParamField body="watermark_info.enabled" type="boolean">
  true는 워터마크를 생성함을, false는 생성하지 않음을 의미합니다.
</ParamField>

Router가 `GET /v2/models/kling/kling-v2-6/openapi.json`에서 제공하는 스키마로부터 생성되었으며, 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용되는 것과 동일한 문서입니다.

### 출력

<ResponseField name="code" type="integer">
  오류 코드
</ResponseField>

<ResponseField name="data" type="object" />

<ResponseField name="data.created_at" type="integer">
  작업 생성 시간, Unix 타임스탬프(밀리초)
</ResponseField>

<ResponseField name="data.final_unit_deduction" type="string">
  작업의 차감 단위
</ResponseField>

<ResponseField name="data.task_id" type="string">
  작업 ID
</ResponseField>

<ResponseField name="data.task_info" type="object" />

<ResponseField name="data.task_info.external_task_id" type="string" />

<ResponseField name="data.task_result" type="object" />

<ResponseField name="data.task_result.videos" type="object[]" />

<ResponseField name="data.task_result.videos[].duration" type="string">
  비디오 총 재생 시간(초)
</ResponseField>

<ResponseField name="data.task_result.videos[].id" type="string">
  생성된 비디오 ID
</ResponseField>

<ResponseField name="data.task_result.videos[].url" type="string (uri)">
  생성된 비디오 URL

  형식: `uri`
</ResponseField>

<ResponseField name="data.task_result.videos[].watermark_url" type="string (uri)">
  워터마크가 포함된 생성된 비디오 URL, 핫링크 보호 형식

  형식: `uri`
</ResponseField>

<ResponseField name="data.task_status" type="string">
  작업 상태

  가능한 값: `submitted`, `processing`, `succeed`, `failed`
</ResponseField>

<ResponseField name="data.task_status_msg" type="string">
  작업 상태 정보, 작업 실패 시 실패 이유 표시
</ResponseField>

<ResponseField name="data.updated_at" type="integer">
  작업 업데이트 시간, Unix 타임스탬프(밀리초)
</ResponseField>

<ResponseField name="data.watermark_info" type="object" />

<ResponseField name="data.watermark_info.enabled" type="boolean" />

<ResponseField name="message" type="string">
  오류 메시지
</ResponseField>

<ResponseField name="request_id" type="string">
  요청 ID
</ResponseField>

## 예시

### 입력

```json theme={null}
{
  "aspect_ratio": "16:9",
  "duration": "5",
  "mode": "std",
  "prompt": "A red fox trotting through falling snow, cinematic lighting."
}
```

### 출력

```json theme={null}
{
  "code": 0,
  "data": {
    "created_at": 1798761600000,
    "task_id": "kling-task-1a2b3c4d5e6f",
    "task_result": {
      "videos": [
        {
          "duration": "5",
          "id": "kling-video-6f5e4d3c2b1a",
          "url": "https://example.invalid/kling/kling-v2-5-turbo/generated.mp4"
        }
      ]
    },
    "task_status": "succeed",
    "task_status_msg": "",
    "updated_at": 1798761840000
  },
  "message": "SUCCEED",
  "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46"
}
```

## 배포 전 확인

SDK는 `Idempotency-Key`를 생성하고 자동 재시도에 재사용합니다. 수동으로 재시도할 때는 원본 키를 재사용하세요. Router는 연결을 최대 10분간 유지할 수 있습니다.

요청이 실패하면 Router는 그 이유를 설명하는 `X-Comfy-Error-Type` 응답 헤더를 보냅니다. `422`는 Router가 공급자를 호출하기 전에 입력을 거부했음을 의미하고, `413`은 요청 본문이 Router가 허용하는 크기보다 컸음을 의미합니다. [결과 URL이 만료](/ko/development/comfy-router/reference#결과-에셋)될 수 있으므로 생성된 에셋은 즉시 다운로드하세요.

위의 필드 설명에 명시된 크기 제한은 해당 필드에 대한 공급자 자체의 한도이며, 공급자 사양에서 인용한 것입니다. Router는 전체 요청 본문에 별도의 상한을 적용하며, base64로 인코딩된 미디어도 여기에 포함됩니다. [요청 본문 크기](/ko/development/comfy-router/limitations)를 참고하세요.

이 페이지는 Comfy Router를 통해 호출하는 하나의 파트너 모델을 설명합니다. 동일한 `comfy-sdk` / `@comfyorg/sdk` 패키지에는 Comfy Cloud에서 전체 ComfyUI 워크플로 그래프를 실행하기 위한 두 번째 클라이언트도 포함되어 있습니다: `Comfy(api_key=...)` / `new Comfy({ apiKey })`, 그리고 `client.workflows`, `client.assets`, `client.jobs`가 있습니다. [Comfy SDKs](/ko/development/api-development/sdks)를 참조하세요.

<CardGroup cols={3}>
  <Card title="헤더" icon="list" href="/ko/development/comfy-router/headers">
    인증, 멱등성, 요청 ID, 오류 분류, 재시도 간격, 지출 한도.
  </Card>

  <Card title="Router API 사용" icon="code" href="/ko/development/comfy-router/api">
    모델 검색, 검증 오류, 재시도, 과금.
  </Card>

  <Card title="제한 사항" icon="triangle-exclamation" href="/ko/development/comfy-router/limitations">
    Router가 현재 지원하지 않는 기능과 대신 사용할 방법.
  </Card>
</CardGroup>
