> ## 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로 Seedance 1.5 Pro 251215 사용하기

> Comfy Router를 통해 byteplus/seedance-1-5-pro-251215를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다.

BytePlus에서 Comfy Router를 통해 제공되는 `byteplus/seedance-1-5-pro-251215`의 API 레퍼런스입니다.

## 빠른 시작

[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로 수행합니다.

**Model ID:** `byteplus/seedance-1-5-pro-251215`

**Endpoint:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-5-pro-251215`

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

      # 환경 변수에서 COMFY_API_KEY를 읽습니다.
      # SDK는 멱등성 키를 자동으로 생성하고 자동 재시도에 재사용합니다.
      with Comfy() as client:
          result = client.models.run(
              "byteplus/seedance-1-5-pro-251215",
              {
                  "content": [
                      {
                          "text": "A red fox trotting through a snowy pine forest",
                          "type": "text",
                      },
                  ],
                  "duration": 5,
                  "ratio": "16:9",
                  "resolution": "720p",
              },
          )

      print(result)
      ```

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

      // 환경 변수에서 COMFY_API_KEY를 읽습니다.
      // SDK는 멱등성 키를 자동으로 생성하고 자동 재시도에 재사용합니다.
      const { data } = await comfy.models.run("byteplus/seedance-1-5-pro-251215", {
        content: [
          {
            text: "A red fox trotting through a snowy pine forest",
            type: "text",
          },
        ],
        duration: 5,
        ratio: "16:9",
        resolution: "720p",
      });

      console.log(data);
      ```

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

      // 환경 변수에서 COMFY_API_KEY를 읽습니다.
      // SDK는 호출마다 멱등성 키를 생성하고 자동 재시도에 재사용합니다.
      let client = ComfyCloudClient(apiKey: ProcessInfo.processInfo.environment["COMFY_API_KEY"]!)
      let result = try await client.models.run(
          "byteplus/seedance-1-5-pro-251215",
          input: [
              "content": [
                  [
                      "text": "A red fox trotting through a snowy pine forest",
                      "type": "text",
                  ],
              ],
              "duration": 5,
              "ratio": "16:9",
              "resolution": "720p",
          ]
      )

      print(result.output)
      ```

      ```bash cURL theme={null}
      curl https://api.comfy.org/v2/models/byteplus/seedance-1-5-pro-251215 \
        -H "X-API-Key: $COMFY_API_KEY" \
        -H "Idempotency-Key: $(uuidgen)" \
        -H "Content-Type: application/json" \
        -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}"
      ```
    </CodeGroup>
  </Tab>

  <Tab title="대기열에 넣고 나중에 수집">
    동일한 본문을 `POST https://api.comfy.org/v2/models/byteplus/seedance-1-5-pro-251215/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(
              "byteplus/seedance-1-5-pro-251215",
              {
                  "content": [
                      {
                          "text": "A red fox trotting through a snowy pine forest",
                          "type": "text",
                      },
                  ],
                  "duration": 5,
                  "ratio": "16:9",
                  "resolution": "720p",
              },
          )
          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("byteplus/seedance-1-5-pro-251215", {
        content: [
          {
            text: "A red fox trotting through a snowy pine forest",
            type: "text",
          },
        ],
        duration: 5,
        ratio: "16:9",
        resolution: "720p",
      });
      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(
          "byteplus/seedance-1-5-pro-251215",
          input: [
              "content": [
                  [
                      "text": "A red fox trotting through a snowy pine forest",
                      "type": "text",
                  ],
              ],
              "duration": 5,
              "ratio": "16:9",
              "resolution": "720p",
          ]
      )
      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/byteplus/seedance-1-5-pro-251215/requests \
        -H "X-API-Key: $COMFY_API_KEY" \
        -H "Idempotency-Key: $(uuidgen)" \
        -H "Content-Type: application/json" \
        -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}"

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

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

## 스키마

### 입력

<ParamField body="callback_url" type="string (uri)">
  이 생성 작업 결과에 대한 콜백 알림 주소

  형식: `uri`
</ParamField>

<ParamField body="content" type="object[]" required>
  모델이 비디오를 생성하기 위한 입력 콘텐츠
</ParamField>

<ParamField body="content[].audio_url" type="object">
  입력 오디오 객체입니다. Seedance 2.5, 2.0 & 2.0 fast만 오디오 입력을 지원합니다. Seedance 2.0 & 2.0 fast는 오디오만 사용할 수 없으며 최소 1개의 이미지 또는 비디오를 포함해야 합니다. Seedance 2.5는 오디오만 입력하는 것을 지원합니다.
</ParamField>

<ParamField body="content[].audio_url.url" type="string" required>
  오디오 URL, Base64 인코딩 또는 Asset ID.
  오디오 URL: 오디오의 공개 URL(wav, mp3).
  Base64: 형식 data:audio/\<format>;base64,\<content>
  Asset ID: 형식 asset://\<ASSET\_ID>
</ParamField>

<ParamField body="content[].image_url" type="object" />

<ParamField body="content[].image_url.url" type="string" required>
  이미지 기반 비디오 생성용 이미지 콘텐츠(type이 "image\_url"인 경우)
  이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요.
  Base64 인코딩 콘텐츠: 형식은 data:image/\<format>;base64,\<content>여야 합니다.
  Asset ID: 형식 asset://\<ASSET\_ID>
</ParamField>

<ParamField body="content[].role" type="string">
  콘텐츠 항목의 역할/위치입니다.
  이미지의 경우: first\_frame, last\_frame 또는 reference\_image.
  비디오의 경우: reference\_video (Seedance 2.5, 2.0 & 2.0 fast 전용).
  오디오의 경우: reference\_audio (Seedance 2.5, 2.0 & 2.0 fast 전용).

  가능한 값: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio`
</ParamField>

<ParamField body="content[].text" type="string">
  모델에 대한 입력 텍스트 정보입니다. 텍스트 프롬프트와 선택적 파라미터를 포함합니다.

  텍스트 프롬프트(필수): 중국어와 영어 문자를 사용해 생성할 비디오를 설명합니다.

  파라미터(선택): 텍스트 프롬프트 뒤에 --\[parameters]를 추가하여 비디오 사양을 제어합니다:

  * \--resolution (--rs): 480p, 720p, 1080p (기본값: 720p)
  * \--ratio (--rt): 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21, adaptive (기본값: 16:9 또는 adaptive)
  * \--duration (--dur): 3-12초 (기본값: 5)
  * \--framepersecond (--fps): 24 (기본값: 24)
  * \--watermark (--wm): true/false (기본값: false)
  * \--seed (--seed): -1 \~ 2^32-1 (기본값: -1)
  * \--camerafixed (--cf): true/false (기본값: false)

  예: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5"

  Comfy 측 가드레일이며 BytePlus의 제약이 아닙니다. BytePlus는 텍스트 길이
  제한을 공개하지 않으며 테스트(2026-09-17)에서 40,000자를 허용했습니다.
  바이트가 아닌 문자를 세므로 멀티바이트 프롬프트는 전송 시 이 크기의
  몇 배가 될 수 있습니다. 이 제한은 요청 전체가 아니라 이 필드 하나만
  제한합니다: `content`는 배열이며, 전체 문서는 요청당 본문 제한으로
  제한됩니다. 이를 강제하는 표면은 Comfy Router
  (/v2/models/byteplus/\{model})입니다. 직접 v1 /proxy 호출에서는 대신
  BytePlus 자체 검증기가 응답합니다. 실제 트래픽보다 훨씬 높게 설정되어
  실제 프롬프트를 판정하지 않도록 합니다. 호출자가 더 필요로 하면 값을
  높이세요.
</ParamField>

<ParamField body="content[].type" type="string" required>
  입력 콘텐츠의 유형

  가능한 값: `text`, `image_url`, `video_url`, `audio_url`
</ParamField>

<ParamField body="content[].video_url" type="object">
  입력 비디오 객체입니다. Seedance 2.5, 2.0 & 2.0 fast만 비디오 입력을 지원합니다.
</ParamField>

<ParamField body="content[].video_url.url" type="string" required>
  비디오 URL 또는 Asset ID.
  비디오 URL: 비디오의 공개 URL(mp4, mov).
  Asset ID: 형식 asset://\<ASSET\_ID>
</ParamField>

<ParamField body="duration" type="`-1` | object">
  비디오 재생 시간(초)입니다. Seedance 2.5: \[4,30] 또는 -1 (자동, 비디오 편집 작업은 -1만 지원). Seedance 2.0 & 2.0 fast: \[4,15] 또는 -1 (자동). Seedance 1.5 pro: \[4,12] 또는 -1. Seedance 1.0: \[2,12].

  범위: `2` \~ `30`
</ParamField>

<ParamField body="execution_expires_after" type="integer">
  작업 타임아웃 임계값(초)입니다. 기본값 172800(48시간). 범위: \[3600, 259200].

  범위: `3600` \~ `259200`
</ParamField>

<ParamField body="generate_audio" type="boolean" default="true">
  Seedance 2.5, 2.0, 2.0 fast 및 1.5 pro에서 지원됩니다. 생성된 비디오에 시각 요소와 동기화된 오디오가 포함되는지 여부입니다.
  true: 모델이 동기화된 오디오가 있는 비디오를 출력합니다.
  false: 모델이 무음 비디오를 출력합니다.
</ParamField>

<ParamField body="model" type="string">
  호출할 모델의 ID입니다. 지원 모델: seedance-1-5-pro-251215, seedance-1-0-pro-250528, seedance-1-0-pro-fast-251015, dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128, dreamina-seedance-2-0-mini 및 dreamina-seedance-2-5-260628. POST /proxy/byteplus/api/v3/contents/generations/tasks에 대한 직접 v1 호출에서는 반드시 지정해야 합니다. 프록시는 다른 값이나 누락된 값을 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략하기 때문입니다.
</ParamField>

<ParamField body="output_format" type="string" default="&#x22;mp4&#x22;">
  Seedance 2.5 전용입니다. 출력 비디오의 컨테이너 형식입니다.
  mp4: 범용 컨테이너(H.264/AAC, yuv420p)로 호환성이 넓고 파일 크기가 더 작습니다.
  mov: 전문가용 컨테이너(H.264 High 4:4:4 Predictive/PCM, yuv444p)로 색상 정밀도가 높아 포스트 프로덕션에 적합하며 파일 크기가 더 큽니다.

  가능한 값: `mp4`, `mov`
</ParamField>

<ParamField body="ratio" type="string">
  생성된 비디오의 화면 비율입니다. Seedance 2.0 & 2.0 fast, 1.5 pro 기본값: adaptive.

  가능한 값: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive`
</ParamField>

<ParamField body="resolution" type="string">
  비디오 해상도입니다. Seedance 2.5, 2.0 & 2.0 fast, 1.5 pro, 1.0 lite 기본값: 720p. Seedance 1.0 pro & pro-fast 기본값: 1080p.
  참고: Seedance 2.0 & 2.0 fast는 1080p를 지원하지 않습니다. Seedance 2.5는 480p, 720p, 1080p를 지원합니다.

  가능한 값: `480p`, `720p`, `1080p`, `4k`
</ParamField>

<ParamField body="return_last_frame" type="boolean" default="false">
  생성된 비디오의 마지막 프레임 이미지를 반환할지 여부입니다.
  true: 생성된 비디오의 마지막 프레임 이미지를 반환합니다. 이 매개변수를 true로 설정한 뒤 비디오 생성 작업 정보 조회를 호출하면 마지막 프레임 이미지를 얻을 수 있습니다. 마지막 프레임 이미지는 PNG 형식이며 픽셀 너비와 높이가 생성된 비디오와 동일하고 워터마크가 포함되지 않습니다. 이 매개변수를 사용하면 여러 개의 연속된 비디오를 생성할 수 있습니다. 이전에 생성된 비디오의 마지막 프레임이 다음 비디오 작업의 첫 프레임으로 사용되므로 여러 개의 연속된 비디오를 빠르게 생성할 수 있습니다.
  false: 생성된 비디오의 마지막 프레임 이미지를 반환하지 않습니다.
</ParamField>

<ParamField body="seed" type="integer">
  무작위성을 제어하기 위한 시드 정수입니다. 범위: \[-1, 2^32-1]. -1은 무작위 시드를 사용합니다.

  범위: `-1` \~ `4294967295`
</ParamField>

<ParamField body="service_tier" type="string">
  처리에 사용할 서비스 등급입니다. Seedance 2.5, 2.0 및 2.0 fast는 flex(오프라인 추론)를 지원하지 않습니다.

  가능한 값: `default`, `flex`
</ParamField>

<ParamField body="watermark" type="boolean" default="false">
  생성된 비디오에 워터마크가 포함되는지 여부입니다.
</ParamField>

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

### 출력

<ResponseField name="content" type="object">
  비디오 생성 작업이 완료된 후의 출력으로, 출력 비디오의 다운로드 URL과 BytePlus가 반환하는 경우 마지막 프레임의 다운로드 URL을 포함합니다. `video_url`과 `last_frame_url`은 모두 Comfy 스토리지로 RE-HOSTED(재호스팅)됩니다. 여기 있는 다른 모든 필드는 BytePlus 자체 필드입니다. Nullable: BytePlus는 작업 24시간 후 URL을 지우므로, 그 이후에 폴링한 succeeded 문서는 `content`가 없거나 null일 수 있습니다.
</ResponseField>

<ResponseField name="content.last_frame_url" type="string">
  생성된 비디오의 마지막 프레임에 대한 다운로드 URL로, 요청에서 `return_last_frame`을 설정한 경우 반환됩니다. 이 URL로부터 이미지 형식을 추론하지 마십시오. BytePlus는 요청 측에서 마지막 프레임을 PNG로 문서화하지만, Router는 제공받은 바이트를 그대로 재호스팅하고 업스트림 Content-Type 또는 콘텐츠 스니핑으로 형식을 판별하며, `image/jpeg`는 둘 다 실패했을 때의 최후 수단 폴백일 뿐입니다. Router는 마지막 프레임을 Comfy 스토리지로 재호스팅하고 이 필드를 다시 기록하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 안 되는 URL을 돌려받을 수 있습니다. 재호스팅을 수행할 수 없었던 경우에는 이 필드가 BytePlus 자체 URL을 유지하며, BytePlus는 작업 24시간 후 이를 지웁니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 프레임을 다운로드하십시오.
</ResponseField>

<ResponseField name="content.output_format" type="string">
  생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, BytePlus가 이를 `content` 안에 중첩해서 반환하는 경우입니다. Seedance 모델은 이를 `content`의 최상위 형제 필드로 반환하는 경우가 더 많습니다. 최상위 `output_format` 필드를 참고하십시오. Router는 둘 중 존재하는 것을 읽습니다.
</ResponseField>

<ResponseField name="content.video_url" type="string">
  출력 비디오의 다운로드 URL입니다. Router는 비디오를 Comfy 스토리지로 재호스팅하고 이 필드를 다시 기록하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 안 되는 URL을 돌려받을 수 있습니다. 재호스팅을 수행할 수 없었던 경우에는 이 필드가 BytePlus 자체 URL을 유지하며, BytePlus는 작업 24시간 후 이를 지우고 일부 모델에서는 다운로드를 100회로 제한합니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 비디오를 다운로드하십시오.
</ResponseField>

<ResponseField name="created_at" type="integer">
  작업이 생성된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다.
</ResponseField>

<ResponseField name="duration" type="number">
  생성된 비디오의 재생 시간(초)입니다. BytePlus가 이 값에 대해 일관성이 없기 때문에 정수가 아닌 숫자로 선언됩니다. 비디오 작업은 정수 초를 반환하는 것이 관찰되었고, 형제 BytePlus 표면에서는 소수 재생 시간을 보고하므로, 클라이언트는 정수 값을 가정해서는 안 됩니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다.
</ResponseField>

<ResponseField name="error" type="object">
  오류 정보입니다. 작업이 성공하면 null이 반환됩니다. 작업이 실패하면 오류 정보가 반환됩니다.
</ResponseField>

<ResponseField name="error.code" type="string">
  업스트림 ModelArk 오류 코드입니다. SensitiveContentDetected, InputTextSensitiveContentDetected, InputImageSensitiveContentDetected, InputVideoSensitiveContentDetected, InputAudioSensitiveContentDetected, OutputTextSensitiveContentDetected, OutputImageSensitiveContentDetected, OutputVideoSensitiveContentDetected 및 OutputAudioSensitiveContentDetected는 콘텐츠 정책 거부를 나타냅니다. 패밀리에는 InputImageSensitiveContentDetected.PrivacyInformation, OutputVideoSensitiveContentDetected.PolicyViolation 또는 OutputImageSensitiveContentDetected.DeepFake와 같이 점으로 구분된 이유가 있을 수 있습니다. 이것은 enum이 아닌 열린 문자열입니다. 다른 코드들은 검증 및 공급자 실패를 설명합니다. Router는 트랜스포트 실패를 덮어쓰지 않으면서 HTTP 400 오류 봉투와 HTTP 200 실패 작업 응답에서 정책 패밀리를 인식합니다.
</ResponseField>

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

<ResponseField name="id" type="string">
  비디오 생성 작업의 ID
</ResponseField>

<ResponseField name="model" type="string">
  작업에서 사용된 모델의 이름과 버전
</ResponseField>

<ResponseField name="output_format" type="string">
  생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, `content`의 형제로 최상위 레벨에서 반환됩니다. Seedance 비디오 작업 쿼리가 이를 반환하는 위치입니다. BytePlus 자체 필드로, 변경 없이 전달됩니다.
</ResponseField>

<ResponseField name="resolution" type="string">
  생성된 비디오의 해상도입니다. 예를 들어 `1080p`입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다.
</ResponseField>

<ResponseField name="seed" type="integer">
  작업에 실제로 사용된 생성 시드입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다.

  형식: `int64`
</ResponseField>

<ResponseField name="status" type="string">
  작업의 상태

  가능한 값: `queued`, `running`, `cancelled`, `succeeded`, `failed`, `expired`
</ResponseField>

<ResponseField name="updated_at" type="integer">
  작업이 마지막으로 업데이트된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다.
</ResponseField>

<ResponseField name="usage" type="object">
  요청에 대한 토큰 사용량
</ResponseField>

<ResponseField name="usage.completion_tokens" type="integer">
  모델이 생성한 토큰 수
</ResponseField>

<ResponseField name="usage.total_tokens" type="integer">
  비디오 생성 모델의 경우 입력 토큰 수는 계산되지 않고 0으로 기본 설정됩니다. 따라서 total\_tokens = completion\_tokens입니다.
</ResponseField>

## 예시

### 입력

```json theme={null}
{
  "content": [
    {
      "text": "A red fox trotting through a snowy pine forest",
      "type": "text"
    }
  ],
  "duration": 5,
  "ratio": "16:9",
  "resolution": "720p"
}
```

### 출력

```json theme={null}
{
  "content": {
    "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-pro-250528/last-frame",
    "video_url": "https://example.invalid/byteplus/seedance-1-0-pro-250528/generated.mp4"
  },
  "created_at": 1767225600,
  "duration": 5,
  "error": null,
  "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60",
  "model": "seedance-1-5-pro-251215",
  "output_format": "mp4",
  "resolution": "1080p",
  "seed": 1234567890123,
  "status": "succeeded",
  "updated_at": 1767225730
}
```

## 배포 전 확인

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>
