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

# Wan 3.0

> Venice API에서 Wan 3.0으로 프롬프트, 첫 프레임과 마지막 프레임, 또는 레퍼런스 이미지, 클립, 음성으로부터 사운드가 포함된 최대 30초 길이의 비디오를 생성하세요.

Wan 3.0은 하나의 작업으로 사운드가 포함된 최대 30초 길이의 비디오를 생성합니다. Text-to-video는 프롬프트만으로 동작하고, image-to-video는 사용자가 제공한 프레임으로 시작하며 다른 프레임으로 끝낼 수도 있습니다. Reference-to-video는 최대 10개의 이미지, 5개의 비디오 클립, 5개의 오디오 클립을 받아 그 안의 인물, 제품, 움직임, 음성을 장면에 담아냅니다. Reference-to-video는 이미 가지고 있는 클립을 편집하고 확장할 수도 있습니다. 모든 비디오 모델에 공통된 내용은 [비디오 생성](https://docs.venice.ai/ko/guides/media/video-generation.md)을, 레퍼런스를 활용하는 다른 모델은 [Reference to Video](https://docs.venice.ai/ko/guides/media/reference-to-video.md)와 [Seedance](https://docs.venice.ai/ko/guides/media/seedance-2-0.md)를 참고하세요.

아래는 `/image/generate`로 만든 이미지 두 장과, 이를 바탕으로 reference-to-video가 만든 클립입니다. 도예가는 머리카락, 주근깨, 앞치마를 그대로 유지하고, 찻주전자는 유약과 금색 손잡이를 그대로 유지하며, 마지막 대사는 카메라 앞에서 말합니다.

![나란히 놓인 두 레퍼런스 이미지: 데님 앞치마를 두른 빨간 머리의 도예가와 금색 손잡이가 달린 얼룩무늬 청록색 찻주전자](https://mintcdn.com/veniceai/_1f1sXd9aH7clcbb/images/guides/wan-3-0/references.webp?fit=max\&auto=format\&n=_1f1sXd9aH7clcbb\&q=85\&s=0c36bf27e5b55f06831886795d2740e7)

<video controls preload="metadata" poster="/images/guides/wan-3-0/sample-poster.webp" src="https://mintcdn.com/veniceai/_1f1sXd9aH7clcbb/images/guides/wan-3-0/sample.mp4?fit=max&auto=format&n=_1f1sXd9aH7clcbb&q=85&s=7f6cec105673463a95f04a5b6b9922f9">
  브라우저에서 이 비디오를 재생할 수 없습니다. [MP4 다운로드](https://docs.venice.ai/images/guides/wan-3-0/sample.mp4).
</video>

작업은 비동기로 실행됩니다. [quote](https://docs.venice.ai/ko/api-reference/endpoint/video/quote.md)는 작업 가격을 산정하고, [queue](https://docs.venice.ai/ko/api-reference/endpoint/video/queue.md)는 작업을 제출하고 요금을 청구하며, [retrieve](https://docs.venice.ai/ko/api-reference/endpoint/video/retrieve.md)는 MP4가 준비될 때까지 폴링합니다.

예제는 `VENICE_API_KEY`가 설정되어 있다고 가정합니다.

```bash theme={"system"}
export VENICE_API_KEY="your-api-key"
```

## 모델 선택

모든 티어에는 동일한 세 가지 변형이 있습니다.

| 티어 | Text-to-video | Image-to-video | Reference-to-video | 해상도 |
| - | - | - | - | - |
| Standard | `wan-3-0-text-to-video` | `wan-3-0-image-to-video` | `wan-3-0-reference-to-video` | 480p, 720p, 1080p |
| Prime | `wan-3-0-prime-text-to-video` | `wan-3-0-prime-image-to-video` | `wan-3-0-prime-reference-to-video` | 480p, 720p, 1080p |
| Pro | `wan-3-0-pro-text-to-video` | `wan-3-0-pro-image-to-video` | `wan-3-0-pro-reference-to-video` | 1080p, 2K, 4K |
| Prime Pro | `wan-3-0-prime-pro-text-to-video` | `wan-3-0-prime-pro-image-to-video` | `wan-3-0-prime-pro-reference-to-video` | 1080p, 2K, 4K |

Prime은 가격이 더 높은 대신 더 빠른 옵션입니다. 도자기 클립은 standard에서 205초, Prime에서 131초가 걸렸습니다. 각 ID에는 `wan-3.0-reference-to-video`와 같이 점으로 구분된 형태도 있습니다.

Image-to-video와 reference-to-video는 둘 다 이미지를 받지만 용도가 다릅니다. Image-to-video는 `image_url`로 정확히 시작하며, `end_image_url`을 보내면 그 이미지로 끝납니다. Reference-to-video는 이미지를 레퍼런스로 취급합니다. 이미지 속 내용이 클립에 등장하되, 구도는 프롬프트에 따라 정해집니다. 첫 장면이 고정되어 있다면 image-to-video를, 여러 장면에 걸쳐 같은 인물이나 제품이 필요하다면 reference-to-video를 사용하세요.

길이, 종횡비, 해상도는 `/models`에서 가져옵니다. 다음 쿼리로 확인할 수 있습니다.

```bash theme={"system"}
curl "https://api.venice.ai/api/v1/models?type=video" |
  jq '.data[] | select(.id | startswith("wan-3-0")) | {
    id,
    resolutions: .model_spec.constraints.resolutions,
    durations: .model_spec.constraints.durations,
    aspect_ratios: .model_spec.constraints.aspect_ratios,
    prompt_character_limit: .model_spec.constraints.prompt_character_limit,
    min_image_short_side: .model_spec.constraints.reference_image_min_short_side_pixels
  }'
```

현재 모든 Wan 3.0 모델은 `2s`, `5s`, `10s`, `15s`, `20s`, `25s`, `30s` 길이와 `16:9`, `9:16`, `1:1`, `4:3`, `3:4` 종횡비, 최대 20,000자의 프롬프트를 지원합니다. Image-to-video와 reference-to-video는 입력의 형태를 따르는 `adaptive`를 추가로 지원합니다. 이러한 세부 사항은 바뀔 수 있으므로 API에서 읽어 오세요. 레퍼런스 제한은 `/models`에 없으며, [2단계](#2-작업을-큐에-추가)에서 확인할 수 있습니다.

## 1. 견적 받기

요금은 출력 1초당 청구되며, 요율은 티어와 해상도에 따라 정해집니다. 2026년 10월 23일 기준 standard는 480p에서 초당 \$0.065, 720p에서 \$0.13, 1080p에서 \$0.26이었고, Prime은 \$0.088, \$0.182, \$0.364였습니다. Pro는 1080p에서 \$0.237, 2K에서 \$0.272, 4K에서 \$0.296이었고, Prime Pro는 \$0.331, \$0.355, \$0.379였습니다. 한 티어 안의 세 가지 변형은 가격이 같으며, `audio`를 꺼도 가격은 달라지지 않습니다.

레퍼런스 비디오는 작업의 요율로 초 단위 소수점까지 추가 청구되므로, 4.2초 클립은 4.2초를 추가합니다. 레퍼런스 이미지와 오디오는 무료입니다. Quote에는 API 키가 필요 없습니다. 작업에 레퍼런스 비디오가 있다면 `reference_video_total_duration`을 초 단위로 추가하세요.

```bash theme={"system"}
curl https://api.venice.ai/api/v1/video/quote \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan-3-0-reference-to-video",
    "duration": "10s",
    "resolution": "720p"
  }'
```

```json theme={"system"}
{
  "quote": 1.3
}
```

견적과 청구 금액은 센트 단위로 반올림되므로, 480p에서 5초인 \$0.325는 \$0.33으로 견적되고 청구됩니다.

## 2. 작업을 큐에 추가

다음은 도자기 클립을 만든 요청입니다. 두 이미지는 이 문서에 있는 사본을 가리키므로 그대로 실행할 수 있습니다.

```bash theme={"system"}
curl https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan-3-0-reference-to-video",
    "prompt": "A warm, sunlit pottery studio with wooden shelves of unglazed pots. 0-4s: medium shot. The woman from @Image1 lifts the teapot from @Image2 off a shelf with both hands and turns it so the gold handle catches the window light. She is silent. 4-10s: slow push-in to a close-up. She looks into the camera, smiles, and says only: \"This one took three firings.\" Quiet room tone and birdsong from the open window, no music.",
    "duration": "10s",
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "reference_image_urls": [
      "https://docs.venice.ai/images/guides/wan-3-0/woman.webp",
      "https://docs.venice.ai/images/guides/wan-3-0/teapot.webp"
    ]
  }'
```

레퍼런스는 세 개의 배열에 공개 URL 또는 데이터 URL로 넣습니다. Venice가 URL을 직접 가져오므로 헤더나 쿠키 없이도 접근 가능해야 합니다. Reference-to-video 작업에는 이미지나 비디오가 최소 하나 필요하며, 오디오만 보내면 거부됩니다.

| 배열 | 최대 | 클립당 | 전체 클립 |
| - | - | - | - |
| `reference_image_urls` | 이미지 10개 | - | - |
| `reference_video_urls` | 클립 5개 | 1\~15초 | 15초 |
| `reference_audio_urls` | 클립 5개 | 1\~15초 | 15초 |

레퍼런스 비디오와 `duration`의 합도 30초 이내여야 합니다. 비디오는 MP4 또는 MOV, 오디오는 MP3 또는 WAV를 사용할 수 있습니다. 짧은 변이 최소 240픽셀보다 작은 이미지는 거부되지 않고 확대됩니다.

프롬프트에서 `@Image1`은 `reference_image_urls`의 첫 번째 항목, `@Image2`는 두 번째 항목을 가리키며, `@Video1`과 `@Audio1`도 각자의 배열에서 같은 방식으로 번호가 매겨집니다. 오디오를 포함해 보내는 모든 레퍼런스를 프롬프트에서 언급하세요. 음성이나 사운드가 들어갈 위치에 `@Audio1`을 적으면 됩니다.

API 레퍼런스에 `reference_document_urls`가 나열되어 있지만 Wan 3.0은 이를 사용하지 않습니다. Prime, Pro, Prime Pro는 이를 거부하며, standard 티어는 문서를 받아들이지만 무시하고 평소처럼 작업 요금을 청구합니다.

응답에는 이후 모든 과정에 필요한 핸들이 담겨 있습니다.

```json theme={"system"}
{
  "model": "wan-3-0-reference-to-video",
  "queue_id": "01a16b0b-e781-754d-8c54-8ade9c76edcd"
}
```

두 값을 모두 보관하세요. retrieve에 필요합니다.

요금은 비디오가 반환될 때가 아니라 이 시점에 청구되므로 queue 요청을 재시도하지 마세요. `queue_id`가 있다면 그것으로 폴링하세요. 응답을 받지 못한 상태에서 작업을 다시 보내면 요금이 두 번 청구될 수 있습니다. Queue는 분당 40회, retrieve는 분당 120회로 제한되며, 둘 다 `x-ratelimit-remaining-requests`를 반환합니다.

대부분의 실수는 이 단계에서 `400`으로 거부되며 요금이 청구되지 않습니다. `/models`에 없는 값, 해당 변형이 받지 않는 필드, 너무 많은 레퍼런스, 이미지나 비디오 없이 보낸 오디오, 누락된 `aspect_ratio` 등이 해당됩니다. 본문의 `issues[].message`에 무엇이 잘못되었는지 나와 있습니다. 클립 길이는 요금 청구 후에 확인되므로, 너무 길거나 짧은 레퍼런스 클립은 여기서 `queue_id`를 받은 뒤 첫 retrieve에서 실패하며, 청구된 요금은 환불됩니다.

## 3. 폴링 및 다운로드

queue 응답의 값으로 retrieve를 호출하세요.

```bash theme={"system"}
curl https://api.venice.ai/api/v1/video/retrieve \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan-3-0-reference-to-video",
    "queue_id": "01a16b0b-e781-754d-8c54-8ade9c76edcd"
  }' \
  --output response.bin
```

응답은 두 가지 중 하나입니다. 작업이 실행 중일 때는 JSON을 받습니다.

```json theme={"system"}
{
  "status": "PROCESSING",
  "average_execution_time": 450757,
  "execution_duration": 6611
}
```

완료되면 `video/mp4`를 받으며 본문이 곧 비디오입니다. `Content-Type`에 따라 분기하세요.

두 숫자는 밀리초 단위로, 이 모델의 작업이 보통 걸리는 시간과 사용자의 작업이 실행된 시간을 나타냅니다. 테스트한 모든 모델에서 평균은 약 7.5분이었지만, 모든 작업이 그보다 빨리 끝났습니다. 작업에는 1~~5분이 걸렸습니다. 480p의 2초 테스트는 1분 남짓, 5초 레퍼런스 비디오를 사용한 작업은 3~~5분이 걸렸습니다. 평균 시간까지 기다리지 말고 10\~15초마다 폴링하세요.

MP4는 초당 30프레임의 H.264에 스테레오 AAC 오디오로 구성되며, `audio: false`를 보낸 경우 오디오 트랙이 없습니다. 720p는 1280×720, standard 1080p는 1920×1080으로 반환되지만, Pro와 Prime Pro는 1080p에서 1936×1088을 반환했습니다.

### 실패한 경우

실패한 작업은 실패 상태로 유지됩니다. 다시 폴링해도 같은 상태와 본문이 반환됩니다. 길이 제한을 벗어난 레퍼런스 클립이나 Venice가 디코딩할 수 없는 이미지처럼 생성 시작 전에 실패한 작업은 큐에 추가된 후 몇 초 안에 환불됩니다. 이러한 작업의 본문에는 `error`만 담기며, [오류 표](#오류)에 정리되어 있습니다.

### 정리

retrieve에 `delete_media_on_completion: true`를 전달하면 저장된 비디오를 반환하는 같은 호출에서 비디오가 삭제됩니다. 이후 해당 ID로 retrieve를 호출하면 `404`가 반환됩니다. 비디오를 여러 번 다운로드하려면 이 옵션을 생략하세요.

## 워크플로우

도자기 클립은 subject 워크플로우입니다. 이미지를 입력하면 같은 인물과 사물이 클립에 등장합니다. 아래 요청은 다른 워크플로우를 실제로 실행한 것이며, 입력은 플레이스홀더 URL로 표시했습니다. 마지막을 제외한 모든 요청은 reference-to-video를 사용하며, 이때 모델이 클립으로 무엇을 할지는 프롬프트가 결정합니다.

### 클립에서 움직임 가져오기

레퍼런스 비디오는 내용 없이 카메라 무빙이나 모션만 제공할 수 있습니다. 여기서는 `wan-3-0-text-to-video`로 만든, 조각상 주위를 도는 5초짜리 궤도 촬영 클립이 도예가 주위의 카메라 움직임을 정했습니다.

```json theme={"system"}
{
  "model": "wan-3-0-reference-to-video",
  "prompt": "The woman from @Image1 stands beside a potter's wheel in a sunlit pottery studio. The camera moves like the camera in @Video1: one slow orbit around her from left to right, keeping her centred. Soft room tone, no music.",
  "duration": "5s",
  "resolution": "720p",
  "aspect_ratio": "16:9",
  "reference_image_urls": ["https://example.com/woman.webp"],
  "reference_video_urls": ["https://example.com/orbit.mp4"]
}
```

카메라는 조각상을 돌던 것과 같은 방식으로 그녀 주위를 호를 그리며 돕니다.

### 대사에 사용할 음성

프롬프트에 대사를 `@Audio1`의 음성으로 말한다고 적으세요. 여기서는 `/audio/speech`로 만든 6초짜리 대사가 음성을 제공했습니다.

```json theme={"system"}
{
  "model": "wan-3-0-reference-to-video",
  "prompt": "Medium close-up in a sunlit pottery studio. The woman from @Image1 looks into the camera and says, in the voice from @Audio1: \"Welcome in. Mind the wet clay.\" Static camera, soft room tone, no music.",
  "duration": "5s",
  "resolution": "720p",
  "aspect_ratio": "16:9",
  "reference_image_urls": ["https://example.com/woman.webp"],
  "reference_audio_urls": ["https://example.com/voice.mp3"]
}
```

그녀는 카메라를 향해 새 대사를 말합니다.

### 클립 편집

변경할 내용을 설명하고, 그대로 유지해야 할 것을 명시하고, `duration`을 클립 길이로 설정하세요.

```json theme={"system"}
{
  "model": "wan-3-0-reference-to-video",
  "prompt": "Edit @Video1: make it winter. Snow covers the courtyard, the plinth, and the cypress trees, and light snow is falling. Keep the bust, the camera movement, and the framing unchanged.",
  "duration": "5s",
  "resolution": "720p",
  "aspect_ratio": "adaptive",
  "reference_video_urls": ["https://example.com/orbit.mp4"]
}
```

조각상과 궤도 움직임은 그대로인 채 안뜰과 나무가 눈으로 덮였습니다. `adaptive`를 사용하자 854×480 소스가 1280×718로 반환되었습니다.

### 클립 확장

결과물은 다시 생성된 사용자의 클립으로 시작해 그 뒤로 이어지므로, `duration`은 결과물 전체의 길이, 즉 클립과 새 영상을 합친 길이입니다.

```json theme={"system"}
{
  "model": "wan-3-0-reference-to-video",
  "prompt": "Extend @Video1 by 5 seconds: the camera finishes its orbit, then rises slowly above the courtyard to reveal terracotta rooftops at golden hour. Same lighting and style, gentle wind, no music.",
  "duration": "10s",
  "resolution": "720p",
  "aspect_ratio": "16:9",
  "reference_video_urls": ["https://example.com/orbit.mp4"]
}
```

5초짜리 궤도 클립은 10초로 반환되었습니다. 궤도 촬영이 다시 나온 뒤 지붕 위로 올라가는 새 5초가 이어집니다. 같은 요청을 `"duration": "5s"`로 보내면 궤도 촬영만 반환되고 그 이상은 없었습니다. 시작 부분은 복사되지 않고 다시 생성되므로, 원본 프레임이 필요하다면 끝부분의 새 영상을 잘라 원래 클립에 이어 붙이세요. 클립의 초는 레퍼런스 비디오로 한 번, 결과물의 일부로 한 번, 총 두 번 청구됩니다. 클립과 `duration`이 30초 제한을 공유하므로, 10초 클립은 최대 10초까지 늘릴 수 있습니다.

### 첫 프레임과 마지막 프레임

이 예제는 image-to-video를 사용합니다. 시작 프레임을 `image_url`로, 마지막 프레임을 `end_image_url`로 보내고, 그 사이에 일어나는 일을 설명하세요. 두 프레임 모두 `/image/generate`로 만들었으며, 방이 일치하도록 두 번째 프레임은 첫 번째 프레임을 바탕으로 `/image/edit`으로 만들었습니다.

```json theme={"system"}
{
  "model": "wan-3-0-image-to-video",
  "prompt": "Time-lapse from morning to evening: daylight fades in the window, the pendant lamps switch on, and the shelves fill with teal-glazed pots. Static camera, no people.",
  "duration": "5s",
  "resolution": "720p",
  "aspect_ratio": "16:9",
  "image_url": "https://example.com/studio-day.webp",
  "end_image_url": "https://example.com/studio-evening.webp"
}
```

클립은 아침 프레임으로 시작해 저녁 프레임으로 마무리됩니다.

## 프롬프트 작성

Wan 3.0은 구조화된 프롬프트를 충실히 따르며, 테스트에서는 다음 습관이 도움이 되었습니다.

* `0-4s:`와 `4-10s:`처럼 클립의 각 구간에 타임스탬프를 지정하세요. 도자기 클립에서는 들어 올리는 동작과 푸시인이 프롬프트에서 지정한 위치에 정확히 나타났습니다.
* 대사는 큰따옴표로 감싸고, 캐릭터가 조용히 있어야 할 때를 명시하세요. 따로 지시하지 않으면 모델은 조용한 순간을 짧은 말로 채웠습니다. 도자기 클립의 첫 테이크에서는 대사 앞에 "Okay."가 추가되었습니다. 첫 장면에 `She is silent.`를, 대사 앞에 `says only:`를 넣은 두 번째 테이크에서는 조용한 "Mm." 소리만 있었습니다.
* 카메라 무빙은 `slow push-in`, `static camera`, `one slow orbit`처럼 명확하게 지정하세요.
* 룸톤과 앰비언스를 포함해 원하는 사운드를 설명하세요. Wan 3.0에는 네거티브 프롬프트가 없으므로 `no music`과 같은 제외 사항은 프롬프트 자체에 작성하세요.

## 전체 예제

이 스크립트로 도자기 클립을 만들었습니다. 작업 견적을 받고, 두 이미지를 데이터 URL로 담아 큐에 추가하고, MP4가 도착할 때까지 폴링한 뒤 저장합니다. [도예가](https://docs.venice.ai/images/guides/wan-3-0/woman.webp)와 [찻주전자](https://docs.venice.ai/images/guides/wan-3-0/teapot.webp) 이미지를 스크립트와 같은 위치에 `woman.webp`와 `teapot.webp`로 저장하세요. 20분 제한 시간은 테스트에서 가장 오래 걸린 작업의 몇 배에 해당합니다.

```python theme={"system"}
import base64
import os
import time
from pathlib import Path

import requests

BASE_URL = "https://api.venice.ai/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['VENICE_API_KEY']}"}
MIME_TYPES = {".jpg": "image/jpeg", ".jpeg": "image/jpeg", ".png": "image/png", ".webp": "image/webp"}


def data_url(path):
    encoded = base64.b64encode(path.read_bytes()).decode()
    return f"data:{MIME_TYPES[path.suffix.lower()]};base64,{encoded}"


job_request = {
    "model": "wan-3-0-reference-to-video",
    "prompt": (
        "A warm, sunlit pottery studio with wooden shelves of unglazed pots. "
        "0-4s: medium shot. The woman from @Image1 lifts the teapot from @Image2 off a shelf with both hands "
        "and turns it so the gold handle catches the window light. She is silent. "
        "4-10s: slow push-in to a close-up. She looks into the camera, smiles, and says only: "
        '"This one took three firings." '
        "Quiet room tone and birdsong from the open window, no music."
    ),
    "duration": "10s",
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "reference_image_urls": [data_url(Path("woman.webp")), data_url(Path("teapot.webp"))],
}

quote = requests.post(
    f"{BASE_URL}/video/quote",
    json={key: job_request[key] for key in ("model", "duration", "resolution")},
)
quote.raise_for_status()
print(f"Estimated cost: ${quote.json()['quote']:.2f}")

queued = requests.post(f"{BASE_URL}/video/queue", headers=HEADERS, json=job_request)
queued.raise_for_status()
job = queued.json()
print(f"Queued {job['queue_id']}")

started = time.monotonic()
deadline = started + 20 * 60
while time.monotonic() < deadline:
    result = requests.post(
        f"{BASE_URL}/video/retrieve",
        headers=HEADERS,
        json={
            "model": job["model"],
            "queue_id": job["queue_id"],
            "delete_media_on_completion": True,
        },
    )

    content_type = result.headers.get("Content-Type", "").split(";")[0].strip()
    if content_type == "video/mp4":
        output = Path("pottery-studio.mp4")
        output.write_bytes(result.content)
        print(f"Saved {output} after {time.monotonic() - started:.0f}s")
        break

    body = result.json()
    if not result.ok:
        # Terminal failure. Polling again returns the same error.
        print(f"{result.status_code}: {body.get('error')}")
        raise SystemExit(1)

    if body.get("status") != "PROCESSING":
        print(body)
        raise SystemExit(1)

    time.sleep(15)
else:
    raise SystemExit(
        f"Still processing after 20 minutes. Poll retrieve again later with queue_id={job['queue_id']}."
    )
```

Retrieve는 저장된 비디오를 전달하면서 삭제하므로, 다시 다운로드하려면 `delete_media_on_completion`을 제거하세요.

## API 파라미터

### Queue

| 필드 | 타입 | 필수 | 설명 |
| - | - | - | - |
| `model` | string | 예 | Wan 3.0 모델 ID. |
| `prompt` | string | 예 | 최대 `prompt_character_limit`자. Reference-to-video에서는 입력을 `@Image1`, `@Video1`, `@Audio1`로 지칭합니다. |
| `duration` | string | 예 | `durations` 중 하나. 클립을 확장할 때는 클립과 새 영상을 합친 길이. |
| `aspect_ratio` | string | 예 | `aspect_ratios` 중 하나. |
| `resolution` | string | 아니요 | `resolutions` 중 하나. 기본값은 `1080p`. |
| `audio` | boolean | 아니요 | 오디오 트랙이 없는 클립을 원하면 `false`로 설정. 기본값은 `true`. |
| `image_url` | string | Image-to-video | 첫 프레임. URL 또는 데이터 URL. |
| `end_image_url` | string | 아니요 | 마지막 프레임. URL 또는 데이터 URL. Image-to-video 전용. |
| `reference_image_urls` | array of strings | Reference-to-video에서 이미지 또는 비디오 필요 | 레퍼런스 이미지. URL 또는 데이터 URL. |
| `reference_video_urls` | array of strings | Reference-to-video에서 이미지 또는 비디오 필요 | 레퍼런스 비디오. URL 또는 데이터 URL. |
| `reference_audio_urls` | array of strings | 아니요 | 레퍼런스 오디오. URL 또는 데이터 URL. Reference-to-video 전용이며 이미지 또는 비디오와 함께 사용. |

### Retrieve

| 필드 | 타입 | 필수 | 설명 |
| - | - | - | - |
| `model` | string | 예 | queue 응답의 `model`. |
| `queue_id` | string | 예 | queue 응답의 `queue_id`. |
| `delete_media_on_completion` | boolean | 아니요 | 이 호출이 비디오를 반환할 때 저장된 비디오를 삭제. 기본값은 `false`. |

## 오류

| 상태 | 엔드포인트 | 본문 | 해결 방법 |
| - | - | - | - |
| `400` | queue | `Invalid request parameters`, 이유는 `issues[].message`에 표시 | `issues[].path`에 지정된 필드를 수정하세요. 요금 청구 전에 거부됩니다. |
| `400` | retrieve | `Invalid request parameters` | 레퍼런스 비디오와 `duration`의 합이 30초를 초과합니다. 요금은 환불됩니다. |
| `400` | retrieve | `The image file is corrupted or unreadable` | 이미지를 디코딩할 수 없습니다. 요금은 환불됩니다. |
| `400` | retrieve | `Request ID is invalid.` | 알 수 없는 `queue_id`입니다. 직접 받은 queue 응답의 값을 사용하세요. |
| `401` | queue, retrieve | `Authentication failed` | [venice.ai/settings/api](https://venice.ai/settings/api)에서 키를 확인하세요. |
| `402` | queue, retrieve | `Authentication required` 및 x402 결제 제안 | `Authorization` 헤더가 전송되지 않았습니다. |
| `404` | queue, quote | `Specified model not found: ...` | 모델 ID가 잘못되었습니다. 본문에 유사한 항목이 제안됩니다. |
| `404` | retrieve | `Upstream API error: 404` | 비디오가 `delete_media_on_completion`에 의해 이미 삭제되었습니다. |
| `422` | retrieve | `Video duration exceeds the maximum allowed.` | 레퍼런스 비디오가 15초보다 길거나, 비디오들의 합이 15초를 초과합니다. 요금은 환불됩니다. |
| `422` | retrieve | `Video duration is too short.` | 레퍼런스 비디오가 1초보다 짧습니다. 요금은 환불됩니다. |
| `422` | retrieve | `Audio duration exceeds the maximum allowed. Maximum is 30 seconds.` | 레퍼런스 오디오 클립이 15초보다 길거나, 클립들의 합이 15초를 초과합니다. 메시지 내용과 관계없이 제한은 15초입니다. 요금은 환불됩니다. |
| `429` | queue, retrieve | 요청 한도 초과 | Queue는 분당 40회, retrieve는 분당 120회까지 허용됩니다. 잠시 기다린 후 재시도하세요. |

## 관련 리소스

* [Quote Video Generation API](https://docs.venice.ai/ko/api-reference/endpoint/video/quote.md)
* [Queue Video Generation API](https://docs.venice.ai/ko/api-reference/endpoint/video/queue.md)
* [Retrieve Video API](https://docs.venice.ai/ko/api-reference/endpoint/video/retrieve.md)
* [비디오 모델](https://docs.venice.ai/ko/models/video.md)
* [비디오 생성](https://docs.venice.ai/ko/guides/media/video-generation.md)
* [Reference to Video](https://docs.venice.ai/ko/guides/media/reference-to-video.md)
* [Seedance 2.0 및 2.5](https://docs.venice.ai/ko/guides/media/seedance-2-0.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.