Veo 3.1
하나의 작업 API로 Veo 3.1 동영상 클립을 생성하세요. 8초 클립당 과금 모델 3개와 초당 과금 모델 2개가 있으며, 프레임 지정, 오디오, GIF 출력을 지원합니다.
Veo 3.1은 Google의 동영상 생성 모델입니다. SeedRouter는 하나의 엔드포인트에서 모델 ID 5개로 제공합니다. 3개는 클립당 과금되며 모든 클립이 8초이고, 2개는 초당 과금되며 더 많은 설정(길이, 오디오, 시드, 네거티브 프롬프트, 첫 프레임과 마지막 프레임)을 지원합니다. 요청을 보내고, 반환된 작업 ID를 보관한 뒤, 완성된 동영상을 작업에서 읽어 오세요. 이미지는 URL로 전달합니다.
모델 ID
| 모델 ID | 과금 | 길이 | 이미지 | 오디오 |
|---|---|---|---|---|
veo-3.1-fast | 클립당 | 8초 | 최대 3개, 프레임 또는 참조 모드 | 스위치 없음 |
veo-3.1-quality | 클립당 | 8초 | 최대 3개, 프레임 모드 | 스위치 없음 |
veo-3.1-lite | 클립당 | 8초 | 없음(텍스트로 동영상 생성) | 스위치 없음 |
veo-3.1-fast-official | 초당 | 4, 6 또는 8초 | 첫 프레임과 마지막 프레임 | generate_audio |
veo-3.1-quality-official | 초당 | 4, 6 또는 8초 | 첫 프레임과 마지막 프레임 | generate_audio |
현재 가격은 모델 페이지에서 확인하세요.
간단한 예제
curl https://api.seedrouter.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-fast",
"prompt": "A red paper boat drifts across a calm pond at sunrise, soft mist on the water, slow push-in on a 35mm lens, no text, no logos.",
"resolution": "720p",
"aspect_ratio": "16:9"
}'엔드포인트
POST https://api.seedrouter.ai/v1/videos/generations| 헤더 | 값 |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
응답은 완성된 동영상이 아니라 작업({"id": "task_...", "status": "processing"})입니다. 결과는 GET /v1/tasks/{task_id}를 폴링해서 받으세요. API 키는 서버 측 코드에 보관하세요.
파라미터: 클립당 과금 모델
veo-3.1-fast, veo-3.1-quality, veo-3.1-lite.
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
model | string | 필수 | 위 ID 3개 중 하나. |
prompt | string | 필수 | 샷을 설명합니다. |
duration | integer | 8 | 8만 받습니다. |
aspect_ratio | enum | 16:9 또는 9:16. | |
resolution | enum | 720p | 720p, 1080p 또는 4k(대소문자 무관). veo-3.1-lite는 4k를 지원하지 않습니다. |
enable_gif | boolean | false | 클립을 MP4 대신 애니메이션 GIF로 반환합니다. 720p 전용. |
nsfw_check | boolean | false | 생성 전에 프롬프트와 이미지에 안전하지 않은 콘텐츠가 있는지 검사합니다. |
image_urls | array | Fast와 Quality 전용. 공개 이미지 URL 최대 3개. | |
generation_type | enum | 이미지 개수에 따라 | Fast와 Quality 전용. frame 또는 reference. Quality는 frame만 받습니다. |
파라미터: 초당 과금 모델
veo-3.1-fast-official, veo-3.1-quality-official.
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
model | string | 필수 | 위 ID 2개 중 하나. |
prompt | string | 필수 | 샷을 설명합니다. |
negative_prompt | string | 클립에 넣지 않을 것. | |
duration | integer | 8 | 4, 6 또는 8초. |
aspect_ratio | enum | 16:9 | 16:9 또는 9:16. |
resolution | enum | 720p | 720p, 1080p 또는 4k(대소문자 무관). |
first_frame_image | string | 공개 이미지 URL. 클립이 이 이미지로 시작합니다. | |
last_frame_image | string | 공개 이미지 URL. first_frame_image가 필요합니다. | |
seed | integer | 무작위 | 0~4294967295. |
generate_audio | boolean | false | 오디오 트랙을 추가합니다. 더 높은 초당 요율로 과금됩니다. |
person_generation | enum | allow_adult | allow_adult 또는 disallow. |
resize_mode | enum | pad | pad 또는 crop. first_frame_image가 필요합니다. |
enhance_prompt | boolean | true | true만 받습니다. 그 외에는 필드를 생략하세요. |
nsfw_check | boolean | false | 생성 전에 프롬프트와 이미지에 안전하지 않은 콘텐츠가 있는지 검사합니다. |
스키마는 엄격합니다. 알 수 없는 필드는 무시되지 않고 거부되며, 각 모델은 자신의 필드만 받습니다. 콜백은 사용할 수 없으니 작업을 폴링하세요.
이미지 모드
veo-3.1-fast와 veo-3.1-quality에서는 generation_type이 image_urls의 사용 방식을 정합니다:
generation_type | 이미지 | 효과 |
|---|---|---|
frame | 1개 또는 2개 | 첫 번째 이미지가 첫 프레임, 두 번째 이미지가 마지막 프레임이 됩니다. |
reference | 최대 3개 | 이미지가 피사체와 스타일의 참조가 됩니다. Fast 전용. |
| 생략 | 2개 또는 3개 | 2개면 프레임 모드, 3개면 참조 모드를 씁니다. |
veo-3.1-quality는 참조 모드를 실행하지 않으므로 generation_type: "reference"와, generation_type 없이 보낸 이미지 3개를 거부합니다. veo-3.1-lite는 이미지를 받지 않습니다.
초당 과금 모델에서는 first_frame_image를 설정하고, 필요하면 last_frame_image도 설정하세요. resize_mode는 형태가 다른 이미지를 여백으로 채울지 잘라 낼지 정합니다.
미디어 입력
이미지는 공개 HTTP(S) URL입니다:
{ "image_urls": ["https://example.com/first.jpg", "https://example.com/last.jpg"] }클립당 과금 모델에서 각 이미지는 JPEG, PNG 또는 WebP이고 10MB 이하여야 합니다. 이 규칙을 어긴 파일은 작업을 실패시키지만 과금되지 않습니다. Base64 데이터는 받지 않습니다. 파일을 자체 스토리지에 업로드하고 그 URL을 전달하세요.
과금에 영향을 주는 요소
현재 요율은 모델 가격 섹션에서 확인하세요.
per-clip models: cost = price of one clip at the output resolution (720p and 1080p cost the same)
per-second models: cost = duration × rate for the resolution and audio setting요청이 접수될 때 금액이 확정되므로, 예약된 금액이 곧 과금되는 금액입니다. 최종 과금액은 계정의 사용 내역에서 확인하세요. 실패한 작업은 과금되지 않습니다.
출력 스키마
제출하면 작업이 반환됩니다:
{"id": "task_...", "model": "veo-3.1-fast", "status": "processing", "created_at": 1789689600}작업 조회
GET https://api.seedrouter.ai/v1/tasks/{task_id}status가 completed 또는 failed가 될 때까지 10~20초마다 폴링하세요. 폴링 중 네트워크 타임아웃이 났다고 생성이 실패한 것은 아닙니다. 작업 ID를 보관하고 다시 확인하세요. 진행 상황을 보려고 작업을 새로 만들지 마세요.
완료된 작업
{
"id": "task_...",
"model": "veo-3.1-fast",
"status": "completed",
"created_at": 1789689600,
"finished_at": 1789689720,
"output": {
"video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4"
}
}video_url은 MP4이며, 요청에서 enable_gif를 설정했다면 GIF입니다. 링크는 SeedRouter의 스토리지에 있습니다.
저희 테스트 실행에서 반환된 결과(각 1회, 2026-10-04):
| 요청 | 파일 |
|---|---|
veo-3.1-fast, 9:16, 프레임 모드 | MP4, H.264, 720 × 1280, 24 fps, 8초, 스테레오 AAC 오디오 트랙 포함 |
veo-3.1-fast-official, 16:9, 720p, 4초, generate_audio 없음 | MP4, H.264, 1280 × 720, 24 fps, 4초, 오디오 트랙 없음 |
veo-3.1-lite, enable_gif | GIF, 480 × 270, 16 fps, 8초 |
클립당 과금 모델에는 오디오 스위치가 없습니다. 초당 과금 모델은 generate_audio를 설정했을 때만 오디오 트랙을 추가합니다.
오류
작업이 생성되기 전에 거부된 요청은 HTTP 오류와 error 객체를 반환하며 과금되지 않습니다. 접수된 뒤 실패한 작업은 조회 시 HTTP 200과 함께 status: "failed" 및 error 객체를 반환합니다.
코드, HTTP 상태, 재시도 지침은 공통 오류 카탈로그를 참고하세요.
{
"id": "task_...",
"model": "veo-3.1-fast",
"status": "failed",
"error": {
"code": 60001,
"message": "The request was rejected by the content policy. Please revise the prompt or input images."
}
}제출 자체가 타임아웃된 경우에는 다시 보내기 전에 작업 목록을 확인하세요. 첫 번째 요청이 이미 접수되었을 수 있습니다.
팁
- 먼저
veo-3.1-lite나veo-3.1-fast의 720p로 프롬프트를 시험한 뒤, 최종 렌더링은 Quality나 4k로 옮기세요. - 카메라와 조명을 지정하세요. 형용사보다 렌즈와 카메라 움직임이 샷을 더 크게 바꿉니다.
- 지어낸 글자와 표시가 화면에 들어가지 않도록
no text, no logos를 추가하세요. - 정해진 이미지로 시작하고 끝나야 하는 샷이라면 이미지 2개로 프레임 모드를 쓰거나, 초당 과금 모델에서
first_frame_image와last_frame_image를 쓰세요. - 샷을 다듬을 때는 초당 과금 모델에서
seed를 고정하고 한 번에 한 구절씩만 바꾸세요.
