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

# 비디오 생성

> 비디오 생성 작업을 생성합니다.

## 개요

비디오 생성은 비동기 방식으로 동작합니다. 요청을 보내면 `task_id` 와 `poll_url` 을 받은 뒤, 최종 결과가 나올 때까지 상태를 주기적으로 조회하면 됩니다.

### 폴링 동작

가장 안정적인 상태 조회를 위해 생성 응답에서 반환된 정확한 `poll_url` 을 그대로 사용하세요.

create 응답에 `poll_url`이 있으면 그 URL을 그대로 사용하세요. 그것이 `/v1/tasks/{id}`를 가리키면 고정 상태 조회의 canonical endpoint로 취급하세요.

### 모델 및 미디어 동작

오디오 출력은 모델에 따라 달라집니다. TokenLab에서 Veo 3 및 Seedance 요청은 `output_audio`를 생략하면 기본적으로 오디오가 켜진 것으로 처리됩니다. 모델이 오디오 제어를 지원하는 경우 `output_audio`로 명시적으로 전환하세요. 호환 별칭 `outputAudio`와 `generate_audio`도 허용되며, 둘 이상을 함께 보낼 때는 `output_audio`와 값이 같아야 합니다.

운영 환경에서는 이미지, 비디오, 오디오 입력에 공개 접근 가능한 `https` URL 을 사용하는 것이 좋습니다. 호환 모델은 여전히 `data:` URL 도 지원하지만, 큰 base64 페이로드는 재시도, 관측, 디버깅이 더 어렵습니다.

## 요청 본문

<ParamField body="model" type="string" default="veo3.1">
  비디오 모델 ID입니다. `veo3.1`, `wan-2.7`, `happyhorse-1.0`, `viduq3`, `pixverse-v6`, `kling-3.0-video` 같은 제품 수준 논리 ID를 사용하고, text-to-video, image-to-video, reference-to-video 등은 `operation`으로 선택하세요. [비디오 생성 가이드](/ko/guides/video-generation)와 [Models API](/ko/api-reference/models/list-models)를 참조하세요.
</ParamField>

<Note>
  **PixVerse**

  * 모델: `pixverse-c1`, `pixverse-v6`, `pixverse-v5.6`
  * 작업: `text-to-video`, `image-to-video`, `start-end-to-video`, `reference-to-video`
  * 오디오 선택기: `output_audio`, 기본값 `false`

  TokenLab에서 위의 PixVerse 모델은 `operation=video-extension`을 허용하지 않습니다.

  **HappyHorse**

  * 모델: `happyhorse-1.0`
  * 작업: `text-to-video`, `image-to-video`, `reference-to-video`, `video-to-video`
  * 오디오 선택기: `output_audio`를 전송하지 마십시오
</Note>

<ParamField body="prompt" type="string" required>
  생성할 비디오에 대한 텍스트 설명입니다. 대부분의 공개 비디오 모델에서 필수입니다.
</ParamField>

<ParamField body="operation" type="string">
  실행할 비디오 작업 유형입니다. 모델 세부정보은 `text-to-video`, `image-to-video`, `reference-to-video`, `start-end-to-video`, `video-to-video`, `video-extension`, `audio-to-video`, `motion-control` 을 지원합니다. TokenLab 가 입력을 보고 작업 유형을 추론할 수도 있지만, 운영 환경에서는 명시적으로 보내는 편이 안전합니다.
</ParamField>

<ParamField body="image_url" type="string">
  image-to-video 흐름에 사용할 시작 이미지의 공개 URL 입니다. 모델 간 호환성을 가장 넓게 확보하려면 `image_url` 을 권장합니다.
</ParamField>

<ParamField body="image" type="string">
  `data:` URL 형식의 인라인 이미지입니다(예: `data:image/jpeg;base64,...`). 호환 모델은 지원하지만, 실제 운영에서는 `image_url` 이 더 안정적인 편입니다.
</ParamField>

<ParamField body="reference_images" type="array">
  reference-to-video 흐름에서 사용하는 참조 이미지 입력입니다. 허용 개수는 모델마다 다릅니다. `seedance-2.0` 및 `seedance-2.0-fast` 에서 TokenLab 는 현재 최대 9장의 참조 이미지와 추가로 최대 3개의 참조 비디오, 3개의 참조 오디오를 지원합니다. 모델 선택, 4K 경계, Mini 참고사항은 [Seedance 2.0 비디오 모델 가이드](/ko/guides/seedance-2-video)를 참조하세요. 공개 `https` URL을 권장하며, 호환 모델은 `data:` URL도 지원합니다. `grok-imagine-video`의 reference-to-video는 최대 7개의 이미지 참조를 허용하며 `duration`은 최대 10초입니다. `grok-imagine-video-1.5-preview`는 image-to-video만 지원하고 참조 이미지를 받지 않습니다.
</ParamField>

<ParamField body="material_asset_id" type="string">
  [소재 생성](/ko/api-reference/video/create-material-asset) 또는 자동 이미지 준비에서 반환된 TokenLab Seedance 소재 ID입니다. 소재가 `ACTIVE`가 된 후 TokenLab 소재 라이브러리를 사용할 수 있는 Seedance 모델에서 사용하세요.
</ParamField>

<ParamField body="material_asset_ids" type="array">
  여러 TokenLab Seedance 소재 ID입니다. `reference_images`와 같은 Seedance 이미지 참조 한도를 공유하며, 선택한 모델은 TokenLab 소재 라이브러리를 사용할 수 있어야 합니다.
</ParamField>

<Info>
  선택한 Seedance 모델이 TokenLab 소재 라이브러리를 사용할 수 있으면 TokenLab은 생성 전에 이미지 필드(`image`, `image_url`, `image_urls`, `reference_images`, `start_image`, `end_image`)를 재사용 가능한 소재로 준비합니다. 60초 안에 준비가 끝나지 않으면 API는 `auto_material_asset_ids`가 포함된 `409 seedance_material_preparing`을 반환합니다. 해당 소재가 `ACTIVE`가 된 후 다시 시도하세요. 선택한 모델이 소재 라이브러리를 사용할 수 없으면 일반 이미지 입력은 일반 이미지 경로로 처리되고, 명시적 소재 ID는 재시도 가능한 소재 가용성 오류로 안전하게 실패합니다.
</Info>

<ParamField body="reference_image_type" type="string">
  `asset` 과 `style` 참조를 구분하는 모델에서 사용하는 선택 필드입니다.
</ParamField>

<ParamField body="kling_elements" type="array">
  Kling 3.0 요소 참조 정의입니다. `kling-3.0-video`의 이미지 조건 요청에서만 지원됩니다. 1-3개의 요소를 정의할 수 있으며 각 요소에는 `name`, 선택적 `description`, 2-4개의 이미지 URL이 들어 있는 `element_input_urls`가 필요합니다. `prompt`에서는 `@name`으로 요소를 참조합니다. `kling_elements`와 `output_audio=true`를 함께 사용하지 마세요. 요소 참조 요청에서는 `output_audio`를 생략하거나 `false`로 설정하세요.
</ParamField>

<ParamField body="video_url" type="string">
  원본 비디오의 공개 URL입니다. 비디오 URL 기반 `video-to-video` 흐름과 `motion-control` 에 필요하며, 일부 파생 흐름은 대신 `task_id` 를 사용합니다.
</ParamField>

<ParamField body="video_urls" type="array">
  멀티모달 참조 조건부 생성을 지원하는 모델용 추가 참조 비디오 입력입니다. 허용 개수는 모델마다 다릅니다. `seedance-2.0` 및 `seedance-2.0-fast` 에서 TokenLab 는 현재 최대 3개의 참조 비디오를 지원합니다.
</ParamField>

<ParamField body="audio_url" type="string">
  `audio-to-video` 를 지원하는 모델에서 사용하는 공개 오디오 URL 입니다.
</ParamField>

<ParamField body="audio_urls" type="array">
  멀티모달 참조 조건부 생성을 지원하는 모델용 추가 참조 오디오 입력입니다. 허용 개수는 모델마다 다릅니다. `seedance-2.0` 및 `seedance-2.0-fast` 에서 TokenLab 는 현재 최대 3개의 참조 오디오를 지원합니다.
</ParamField>

<ParamField body="task_id" type="string">
  일부 이어 만들기, 확장 또는 파생 흐름에서 사용하는 작업 식별자입니다.
</ParamField>

<ParamField body="extend_at" type="integer">
  일부 `video-extension` 흐름에서 사용하는 모델별 시작 오프셋입니다.
</ParamField>

<ParamField body="extend_times" type="string">
  일부 `video-extension` 흐름에서 사용하는 모델별 배수 또는 반복 횟수입니다.
</ParamField>

<ParamField body="duration" type="integer">
  생성되는 출력 비디오 길이(초)입니다. Seedance 1.5/2.0 모델에서는 이 필드를 생략하면 `5`가 사용됩니다. `-1`을 보내면 모델이 지원 범위 안에서 길이를 선택하며, 작업 완료 전까지 비용은 보수적으로 추정됩니다.
</ParamField>

<ParamField body="seconds" type="integer">
  `duration`의 호환 별칭입니다. `seconds`와 `duration`을 함께 보내면 값이 반드시 같아야 합니다. Seedance에서 `seconds=-1`은 `duration=-1`과 같은 자동 길이 의미입니다.
</ParamField>

<ParamField body="aspect_ratio" type="string">
  표준 화면비입니다. 예: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4`, `21:9`. Seedance는 생략 시 기본값으로 `adaptive`를 사용합니다.
</ParamField>

<ParamField body="resolution" type="string">
  모델별 출력 해상도입니다. Seedance는 기본값으로 `720p`를 사용합니다. `seedance-2.0`은 `480p`, `720p`, `1080p`, `4k`를 지원하고, `seedance-2.0-fast`와 `seedance-2.0-mini`는 `480p`와 `720p`로 제한됩니다.
</ParamField>

<ParamField body="output_audio" type="boolean">
  모델별 표준 오디오 출력 토글입니다. Veo 3와 Seedance는 생략 시 `true`가 기본값입니다. `kling-3.0-video`는 요소 참조가 없는 요청에서 이 선택자를 받고, 생략 시 무음 출력이 기본값입니다. `output_audio=true`와 `kling_elements`를 함께 사용하지 마세요.
</ParamField>

<ParamField body="draft" type="boolean">
  Seedance 1.5 Pro Draft 워크플로 플래그입니다. Draft 작업을 지원하는 Seedance 모델에서 `draft=true`를 사용하십시오. `draft_task_id`와 함께 보내지 마세요.
</ParamField>

<ParamField body="draft_task_id" type="string">
  Seedance 1.5 Pro draft 승격 작업 ID입니다. 이전 draft 작업 ID를 보내 최종 비디오를 생성합니다. 일반 비디오 필드가 아닙니다.
</ParamField>

<ParamField body="ratio" type="string">
  `aspect_ratio`의 호환 별칭입니다. `ratio`와 `aspect_ratio`를 함께 보내면 값이 반드시 같아야 합니다.
</ParamField>

<ParamField body="generate_audio" type="boolean">
  `output_audio`의 호환 별칭입니다. `generate_audio`, `output_audio`, `outputAudio`가 함께 나타나면 모든 값이 같아야 합니다.
</ParamField>

<ParamField body="execution_expires_after" type="integer">
  호환 비디오 모델의 선택적 실행 만료 시간(초)입니다. Seedance는 생략 시 기본값으로 `172800`초를 사용합니다.
</ParamField>

<ParamField body="priority" type="integer">
  호환 비디오 모델의 선택적 작업 우선순위이며 범위는 `0`부터 `9`까지입니다. `priority`를 `service_tier=flex`와 함께 사용하지 마세요.
</ParamField>

<ParamField body="safety_identifier" type="string">
  호환 비디오 모델의 선택적 최종 사용자 안전 식별자입니다. Seedance에서 생략하면 TokenLab은 제공된 `user` 값을 사용합니다.
</ParamField>

<ParamField body="service_tier" type="string">
  Seedance 2.0 모델에서는 `default`를 호환 no-op으로 허용합니다. `flex`는 선택한 모델이 지원할 때만 사용할 수 있습니다.
</ParamField>

<ParamField body="frames" type="integer">
  호환 비디오 모델의 선택적 프레임 수입니다. Seedance 2.0 모델과 Seedance 1.5 Pro는 이 필드를 지원하지 않습니다.
</ParamField>

<ParamField body="camera_fixed" type="boolean">
  호환 비디오 모델의 선택적 고정 카메라 선택자입니다. Seedance 2.0 모델은 이 필드를 지원하지 않습니다.
</ParamField>

<ParamField body="fps" type="integer">
  초당 프레임 수(1-120)입니다. FPS 제어를 공개적으로 지원하는 모델에서만 적용됩니다.
</ParamField>

<ParamField body="negative_prompt" type="string">
  생성 결과에서 피하고 싶은 요소입니다.
</ParamField>

<ParamField body="seed" type="integer">
  재현 가능한 생성을 위한 랜덤 시드입니다. Seedance는 생략 시 랜덤 시드로 `-1`을 사용합니다.
</ParamField>

<ParamField body="cfg_scale" type="number">
  프롬프트 반영 강도(0-20)입니다. 해당 제어를 노출하는 모델에서만 사용됩니다.
</ParamField>

<ParamField body="motion_strength" type="number">
  움직임 강도(0-1)입니다. 해당 제어를 노출하는 모델에서만 사용됩니다.
</ParamField>

<ParamField body="start_image" type="string">
  `start-end-to-video` 에서 사용할 첫 프레임 이미지 URL 또는 호환 입력입니다.
</ParamField>

<ParamField body="end_image" type="string">
  `start-end-to-video` 에서 사용할 마지막 프레임 이미지 URL 또는 호환 입력입니다.
</ParamField>

<ParamField body="size" type="string">
  호환 비디오 모델의 모델별 크기 단계입니다.
</ParamField>

<ParamField body="watermark" type="boolean">
  해당 기능을 공개하는 모델의 선택적 워터마크 토글입니다. Seedance는 생략 시 기본값으로 `false`를 사용합니다.
</ParamField>

<ParamField body="effect_type" type="string">
  일부 편집/효과 흐름에서 사용하는 모델별 효과 선택자입니다.
</ParamField>

<ParamField body="user" type="string">
  최종 사용자의 고유 식별자입니다. Seedance에서는 이 필드를 생략하면 TokenLab이 이 값을 `safety_identifier`로도 사용합니다.
</ParamField>

## 호환성 참고

* 표준 공개 필드는 계속 snake\_case를 사용합니다: `aspect_ratio`, `output_audio`, `reference_images`, `reference_image_type`.
* 호환성을 위해 TokenLab은 `ratio`, `generate_audio`, `outputAudio`, `seconds`, `referenceImages`, `referenceImageType`도 허용합니다.
* 표준 필드와 별칭 필드를 함께 보내는 경우 값이 일치해야 합니다. 충돌하는 별칭은 작업 생성 전에 거부됩니다.
* `operation`을 생략하면 TokenLab이 제공된 입력에서 추론합니다. 프로덕션 트래픽에서는 여전히 명시적 `operation` 지정을 권장합니다.

## 미디어 입력 권장 사항

* `image_url`, `reference_images`, `video_url`, `audio_url` 에는 공개 접근 가능한 `https` URL 을 권장합니다.
* 가능하면 같은 요청 안에서 인라인 base64 와 원격 URL 을 섞지 마세요.
* 원격 미디어 URL 은 재시도와 비동기 작업 생성 시간을 충분히 커버할 만큼 유효해야 합니다.

## Seedance 파라미터

Seedance 1.5/2.0 모델에서 통합 엔드포인트는 TokenLab 필드명을 기준으로 하며 호환 별칭 `seconds`, `ratio`, `generate_audio`도 허용합니다. Seedance 선택자를 생략하면 기본값은 `duration=5`, `resolution=720p`, `aspect_ratio=adaptive`, `output_audio=true`, `watermark=false`, `return_last_frame=false`, `execution_expires_after=172800`, `priority=0`, `seed=-1`입니다.

`duration=-1` 또는 `seconds=-1`은 Seedance가 모델 지원 범위 안에서 출력 길이를 선택하게 합니다. TokenLab은 작업 완료 전 비용을 보수적으로 추정하고, 완료된 작업 usage를 사용할 수 있으면 실제 결과에 따라 정산합니다. `service_tier=default`는 Seedance 2.0에서 호환 no-op으로 허용됩니다. `service_tier=flex`, `frames`, `camera_fixed`는 선택한 모델이 지원하지 않으면 거부됩니다.

### Seedance 예시

```bash cURL theme={null}
curl -X POST "https://api.tokenlab.sh/v1/videos/generations" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0",
    "prompt": "A sleek product reveal with cinematic camera movement",
    "operation": "text-to-video",
    "duration": -1,
    "aspect_ratio": "adaptive",
    "resolution": "720p",
    "output_audio": true
  }'
```

## 응답

<ResponseField name="id" type="string">
  표준 비동기 작업 식별자입니다. `id`와 `task_id`가 함께 있으면 같은 작업 ID로 취급하세요.
</ResponseField>

<ResponseField name="task_id" type="string">
  상태 조회에 사용할 고유 작업 식별자입니다.
</ResponseField>

<ResponseField name="poll_url" type="string">
  이 작업에 권장되는 상태 조회 URL 입니다. 상태 확인 시 이 경로를 그대로 사용하세요.
</ResponseField>

<ResponseField name="billing_transaction_id" type="string">
  정산이 이미 완료된 경우 반환되는 TokenLab 청구 거래 ID입니다. dashboard / 정산에 사용하는 거래 식별자이며 비동기 `id` / `task_id` 와는 별개입니다.
</ResponseField>

<ResponseField name="status" type="string">
  초기 상태: `pending`.
</ResponseField>

<ResponseField name="created" type="integer">
  작업이 생성된 시점의 Unix 타임스탬프입니다.
</ResponseField>

<ResponseField name="model" type="string">
  사용된 모델입니다.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.tokenlab.sh/v1/videos/generations" \
    -H "Authorization: Bearer sk-your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "veo3.1",
      "prompt": "A cat walking through a garden, cinematic lighting",
      "operation": "text-to-video",
      "duration": 4,
      "aspect_ratio": "16:9"
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "task_id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "poll_url": "/v1/tasks/ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "status": "pending",
    "model": "veo3.1",
    "created": 1706000000
  }
  ```
</ResponseExample>

## 이미지에서 비디오로

```python theme={null}
response = requests.post(
    "https://api.tokenlab.sh/v1/videos/generations",
    headers={"Authorization": "Bearer sk-your-api-key"},
    json={
        "model": "hailuo-2.3-standard",
        "prompt": "The scene begins from the provided image and adds gentle natural motion.",
        "operation": "image-to-video",
        "image_url": "https://example.com/image.jpg",
        "duration": 6,
        "aspect_ratio": "16:9"
    }
)
```

## Kling 3.0 Elements

요소 참조가 필요할 때 `kling_elements`를 `kling-3.0-video`와 함께 사용하세요. 이미지 조건 요청(`image_url`, `image_urls`, `start_image`, `end_image`)을 제공하고 프롬프트에서 각 요소를 `@name`으로 참조합니다. `kling_elements`와 `output_audio=true`를 함께 사용하지 마세요. 요소 참조 요청에서는 `output_audio`를 생략하거나 `false`로 설정하세요.

```python theme={null}
response = requests.post("https://api.tokenlab.sh/v1/videos/generations",
    headers=headers,
    json={
        "model": "kling-3.0-video",
        "prompt": "Place @hero_bag on a studio turntable with soft product lighting.",
        "operation": "image-to-video",
        "image_url": "https://example.com/studio-start.png",
        "duration": 5,
        "resolution": "720p",
        "kling_elements": [
            {
                "name": "hero_bag",
                "description": "black leather handbag",
                "element_input_urls": [
                    "https://example.com/bag-front.png",
                    "https://example.com/bag-side.png"
                ]
            }
        ]
    }
)
```

## 참조 이미지 기반 비디오

모델이 전용 참조 조건부 생성을 지원하면 `operation=reference-to-video` 를 사용하세요. TokenLab 모델 세부정보에서는 이미지 참조는 `reference_images`, 멀티모달 참조 비디오와 오디오는 `video_urls` 와 `audio_urls` 를 사용합니다. `seedance-2.0` 및 `seedance-2.0-fast` 에서 TokenLab 는 현재 최대 9장의 참조 이미지와 추가로 최대 3개의 참조 비디오, 3개의 참조 오디오를 지원합니다. 모델 선택, 4K 경계, Mini 참고사항은 [Seedance 2.0 비디오 모델 가이드](/ko/guides/seedance-2-video)를 참조하세요. `duration` 은 생성 출력 길이만 제어하며, 참조 비디오 입력 길이의 별도 제한을 설정하지 않습니다. `grok-imagine-video`의 reference-to-video는 최대 7개의 이미지 참조(`reference_images` 또는 `image_urls`)를 허용하며 `duration`은 최대 10초입니다. 참조 이미지를 `image_url` / `image` 첫 프레임 입력과 함께 보내지 마세요. `grok-imagine-video-1.5-preview`는 image-to-video만 지원합니다.

```python theme={null}
response = requests.post(
    "https://api.tokenlab.sh/v1/videos/generations",
    headers={"Authorization": "Bearer sk-your-api-key"},
    json={
        "model": "veo3.1",
        "prompt": "Keep the same subject identity, palette, and framing while adding subtle natural motion.",
        "operation": "reference-to-video",
        "reference_images": [
            "https://example.com/ref-a.jpg",
            "https://example.com/ref-b.jpg"
        ],
        "reference_image_type": "asset",
        "duration": 8,
        "resolution": "720p",
        "aspect_ratio": "9:16"
    }
)
```

## 시작/종료 프레임 제어

첫 프레임과 마지막 프레임을 제어하려면 `start_image` 와 `end_image` 를 사용하세요.

```python theme={null}
response = requests.post(
    "https://api.tokenlab.sh/v1/videos/generations",
    headers={"Authorization": "Bearer sk-your-api-key"},
    json={
        "model": "viduq2-pro",
        "prompt": "Smooth transition from day to night",
        "operation": "start-end-to-video",
        "start_image": "https://example.com/day.jpg",
        "end_image": "https://example.com/night.jpg",
        "duration": 5,
        "resolution": "720p",
        "aspect_ratio": "16:9"
    }
)
```

## 비디오에서 비디오로

`grok-imagine-video`의 video-to-video에는 공개 HTTPS `.mp4` URL을 `video_url`로 보내세요. TokenLab은 이를 xAI REST `video.url` 본문으로 변환합니다. `resolution`은 `480p` 또는 `720p`로 설정할 수 있으며, 이 편집 흐름은 `duration`과 `aspect_ratio`를 받지 않습니다.

모델이 기존 비디오를 주 입력으로 받는다면 `operation=video-to-video` 를 사용하세요.

```python theme={null}
response = requests.post(
    "https://api.tokenlab.sh/v1/videos/generations",
    headers={"Authorization": "Bearer sk-your-api-key"},
    json={
        "model": "grok-imagine-video",
        "operation": "video-to-video",
        "video_url": "https://example.com/source.mp4",
        "prompt": "Enhance the clip while preserving the original motion.",
        "resolution": "720p"
    }
)
```

## 모션 컨트롤

모델이 피사체 이미지와 모션 참조 비디오를 모두 필요로 한다면 `operation=motion-control` 을 사용하세요. TokenLab 는 공개 입력 형태인 `image_url` + `video_url` 을 호환되는 모션 제어 입력으로 정규화합니다.

```python theme={null}
response = requests.post(
    "https://api.tokenlab.sh/v1/videos/generations",
    headers={"Authorization": "Bearer sk-your-api-key"},
    json={
        "model": "kling-3.0-motion-control",
        "operation": "motion-control",
        "prompt": "Keep the subject stable while following the motion reference.",
        "image_url": "https://example.com/subject.png",
        "video_url": "https://example.com/motion.mp4",
        "resolution": "720p"
    }
)
```

## 모델 탐색

공개 비디오 모델 인벤토리와 지원 작업은 시간이 지나며 바뀝니다. 모델별 흐름을 구현하기 전에 [Models API](/ko/api-reference/models/list-models)를 진실 소스로 사용하세요:

```bash theme={null}
curl "https://api.tokenlab.sh/v1/models?recommended_for=video" \
  -H "Authorization: Bearer sk-your-api-key"

curl "https://api.tokenlab.sh/v1/models/veo3.1" \
  -H "Authorization: Bearer sk-your-api-key"
```

모델 상세 응답의 `tokenlab.capabilities`, `tokenlab.supported_operations`, `GET /v1/models`, `GET /v1/models/{model}` 를 확인하세요. `audio-to-video` 와 `video-extension` 같은 작업은 모델별 기능입니다. 이 페이지의 정적 예시에 의존하지 말고 그곳에서 현재 지원 여부를 확인하세요.
