Google: Veo 3.1
Veo 3.1은 생성 소리, 안내된 경계 프레임과 참조 에셋을 갖춘 텍스트·이미지 기반 장면용 Google 영상 모델입니다. 제작 프로파일은 24fps의 4·6·8초 클립과 720p·1080p·4K 출력 옵션을 제공합니다.
모델 소개
이 설명은 모델의 기능을 다룹니다. Ailoot에서 사용할 수 있는 입력, 출력 및 옵션은 아래에 선택한 메서드별로 표시됩니다.
Veo 3.1은 텍스트나 이미지 기반 기획에서 짧은 시청각 장면을 만드는 Google 영상 생성 모델입니다. 제작 프로파일은 생성 소리, 에셋 참조와 별도 이어 만들기 워크플로를 포함해 텍스트-비디오, 이미지-비디오와 안내된 시작·끝 프레임 제작을 지원합니다. 명확한 장면·동작·청각 경험을 가진 영화적 콘셉트, 짧은 제품 이야기나 시각 구간 개발에 사용하세요.
피사체·보이는 사건을 먼저 설명합니다. 주변 환경, 시간대·빛을 정하고 카메라 시점·이동과 원하는 시각 스타일을 정의하세요. 직접 만든 기획은 어두운 스튜디오 표면의 유리 용기를 보여 주고 느린 측면 이동으로 반사를 드러내며 부드러운 환경음을 동반할 수 있습니다. 각 지시는 완성 결과에서 평가할 시각·청각 특징을 제공합니다.
Google의 프롬프트 체계는 피사체, 동작, 장면, 카메라·미학을 별도 기획 부분으로 취급합니다. 가능한 모든 수식어를 추가하지 말고 숏에 필요한 부분을 사용하세요. 문서상 프롬프트 프로파일의 지시는 영어로 씁니다. 여러 동작이 있으면 관계를 명시하고 공개·반응이 잘 보이도록 짧은 클립에 맞춰 유지하세요.
시작 이미지는 첫 외형·구도를 정합니다. 캐릭터, 제품·배경이 이미 시각 에셋으로 있을 때 쓰고 이어질 움직임을 설명하세요. 마지막 프레임은 끝의 목표 구도를 추가합니다. 자연스러운 전환을 전달하고 주요 피사체를 식별하는 디테일을 보존하는 경계 프레임을 준비한 뒤 생성 후 사이 움직임을 확인하세요.
에셋 참조의 목적은 다릅니다. 경계 프레임이 장면의 특정 순간을 정하는 반면 참조는 새로 생성하는 장면의 캐릭터·물체 외형을 안내합니다. 중요한 시각 특징을 보여 주는 참조를 고르고 프롬프트에서 각 역할을 명확히 하세요. 제작 모델의 참조 이미지-비디오 사양은 그 참조 워크플로에 일반 텍스트 길이 선택과 별개의 8초 출력을 사용합니다.
제작사의 일반 제작 프로파일은 초당 24프레임의 4·6·8초 클립을 생성합니다. 가로 16:9·세로 9:16, 프롬프트당 영상 최대 4개와 720p·1080p·4K 출력 해상도를 명시합니다. 출력 영상 형식은 MP4입니다. 이미지 기반 사양은 JPEG·PNG, 최대 입력 이미지 20MB와 720p/1080p 입력 구성을 지원합니다. 사용처에 맞는 출력 프로파일을 고르고 그 크기에서 프레임 구도를 알아보기 쉽게 유지하세요.
보이는 장면에 네이티브 소리를 동반할 수 있습니다. 같은 기획의 일부로 대사, 분위기·효과음을 지정하고 각 소리를 만드는 피사체·사건을 명명하세요. 대사 지시는 연기를, 카메라 지시는 관객이 이를 보는 방식을 정하므로 서로 다른 질문에 답합니다. 클립의 유용한 발화 시간 내에 단어를 맞추고 소리 명료도와 동작 관계를 검토하세요.
이어 만들기에는 제작사가 별도 영상 연장 워크플로를 제공합니다. 적합한 생성 원본 클립에서 시작하고 다음 보이는 사건·장면 변화를 설명하세요. 원본·연장 구간을 보존해 연결부의 외형, 움직임·소리를 검토합니다. 일반 신규 생성의 길이·해상도 선택을 모든 연장 작업의 보편적 규약으로 취급하면 안 됩니다.
네거티브 설명은 작업의 시각 요구에 맞게 제외 항목을 집중시킬 수 있습니다. 제품 변형 시리즈에서는 피사체·구도를 유지하며 조명·카메라 거리 같은 창작 방향 하나를 바꾸세요. 결과에 프롬프트, 참조·선택 설정을 기록하면 무관한 생성 모음 대신 유용한 창작 차이를 비교할 수 있습니다.
일반 Veo 3.1 제작 프로파일과 Veo 3.1 Fast는 출력 해상도 프로파일이 다릅니다. Fast는 720p·1080p, 일반 3.1은 4K도 명시합니다. 제작 모델 식별자를 이전 Preview나 다른 Veo 세대로 묵시적으로 바꾸지 말고 선택 버전을 결과에 연결하세요. 피사체 외형·지원 작업 모두 선택 워크플로에 달려 있습니다.
생성은 완료 결과에서 재생·후속 편집용 영상 에셋을 제공하는 작업입니다. 반환 파일을 원본 프레임, 참조 에셋·기획과 함께 보관하고 제공 출처 정보도 보존하세요. 각 실제 출력의 피사체 외형, 동작, 구도, 소리·최종 구성을 확인합니다. 선택 클립을 제작 구성요소로 쓰고 제목·전환·다른 마무리는 주변 편집에서 추가하세요.
Ailoot Ultra · 동영상 POST /v1/videos google/veo-3.1
google/veo-3.1시작하기
Veo 3.1은 생성 소리, 안내된 경계 프레임과 참조 에셋을 갖춘 텍스트·이미지 기반 장면용 Google 영상 모델입니다. 제작 프로파일은 24fps의 4·6·8초 클립과 720p·1080p·4K 출력 옵션을 제공합니다.
- 허용 입력
- 텍스트
- 결과
- 동영상
Ailoot에서 사용 가능 · 입력 및 메서드
Ailoot Ultra · 동영상 POST /v1/videos
- 입력
text- 출력
video- 출력 형식
- mp4
- 출력 수
- 최대 4 출력s
| 필드 | 유형 | 요건 | 값과 한도 | 기본값 |
|---|---|---|---|---|
필드model | 유형string | 요건필수 | 값과 한도 google/veo-3.1 | 기본값— |
필드prompt | 유형string | 요건필수 | 값과 한도 최대 UTF-8 바이트 수: 10,000 공백이 아닌 문자 필수: 예 | 기본값— |
필드duration | 유형integer | 요건필수 | 값과 한도 4, 6, 8 | 기본값— |
필드resolution | 유형string | 요건필수 | 값과 한도 720p | 기본값— |
필드aspect_ratio | 유형string | 요건필수 | 값과 한도 16:9, 9:16 | 기본값— |
필드generate_audio | 유형boolean | 요건필수 | 값과 한도 false, true | 기본값— |
입력 자료 조합
텍스트로 동영상 생성 · 필수: prompt
메서드 매개변수와 수명 주기
| 매개변수 | 명세 |
|---|---|
매개변수content_type | 명세application/json |
매개변수required | 명세model, prompt, duration, resolution, aspect_ratio, generate_audio |
매개변수additional_properties | 명세false |
매개변수parameters | 명세{"name":"model","type":"string","required":true,"enum":["google/veo-3.1"]}, {"name":"prompt","type":"string","required":true,"non_whitespace":true,"max_utf8_bytes":10000}, {"name":"duration","type":"integer","required":true,"enum":[4,6,8]}, {"name":"resolution","type":"string","required":true,"enum":["720p"]}, {"name":"aspect_ratio","type":"string","required":true,"enum":["16:9","9:16"]}, {"name":"generate_audio","type":"boolean","required":true,"enum":[false,true]} |
매개변수material_types | 명세text |
메서드 별칭: /v1/videos/generations, /videos, /videos/generations
수명 주기: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
응답 전체와 원래 반환된 ID를 보존하세요.
결과를 알 수 없는 생성을 절대로 다시 제출하지 마세요.
요금
최종 요금 계산 방식
표시된 요율은 생성 전 비용을 예상하는 데 사용됩니다. 최종 청구액은 최초 생성에 기록된 비용으로 계산됩니다. 측정된 출력 길이와 예상 수량은 최종 청구 수량이 아닙니다.
요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.
- 빠른 모드
- 미지정 빠른 모드를 선택한 경우
- Flex 모드
- 미지정 flex 모드를 선택한 경우
- 최대 추론 수준
- 미지정 최대 추론 수준에 default 조정값을 적용하는 경우
비교용 예상 요금
설정별 가격
각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.
| 설정 | 요금표 | 예측 수량 | 오디오 생성 | 해상도 | 과금 단위 | 과금 조건 | 요금 |
|---|---|---|---|---|---|---|---|
| 설정기본 토큰 요금 | 요금표기본 요금 | 예측 수량— | 오디오 생성— | 해상도— | 과금 단위— | 과금 조건— | 요금 입력 · 입력 토큰 · 비교 전용 추정치 — / 1K 토큰 출력 · 출력 토큰 · 비교 전용 추정치 — / 1K 토큰 입력 · 캐시 읽기 · 비교 전용 추정치 — / 1K 토큰 입력 · 캐시 쓰기 · 비교 전용 추정치 — / 1K 토큰 입력 · 캐시 쓰기, 1시간 · 비교 전용 추정치 — / 1K 토큰 |
| 설정Ultra | 요금표— | 예측 수량요청한 설정이며, 예상치일 뿐입니다. | 오디오 생성오디오 포함 | 해상도720p | 과금 단위출력 동영상 초당 | 과금 조건— | 요금 출력 · 예상 출력 동영상(초) · 비교 전용 추정치 $0.8 출력 동영상 초당 표시된 요금은 생성 전 비용을 예상하기 위한 것입니다. 최종 청구액은 원래 생성에 기록된 비용을 바탕으로 계산됩니다. 동영상의 실제 재생 길이는 과금 수량이 아닙니다. |
| 설정동영상 요금 | 요금표— | 예측 수량— | 오디오 생성— | 해상도— | 과금 단위동영상 초당 | 과금 조건오디오: with_audio; 해상도: 4k | 요금 출력 · 동영상 가격 · 비교 전용 추정치 $1.2 동영상 초당 |
| 설정Ultra | 요금표— | 예측 수량요청한 설정이며, 예상치일 뿐입니다. | 오디오 생성오디오 없음 | 해상도720p | 과금 단위출력 동영상 초당 | 과금 조건— | 요금 출력 · 예상 출력 동영상(초) · 비교 전용 추정치 $0.4 출력 동영상 초당 표시된 요금은 생성 전 비용을 예상하기 위한 것입니다. 최종 청구액은 원래 생성에 기록된 비용을 바탕으로 계산됩니다. 동영상의 실제 재생 길이는 과금 수량이 아닙니다. |
| 설정동영상 요금 | 요금표— | 예측 수량— | 오디오 생성— | 해상도— | 과금 단위동영상 초당 | 과금 조건오디오: without_audio; 해상도: 4k | 요금 출력 · 동영상 가격 · 비교 전용 추정치 $0.8 동영상 초당 |
| 설정예상 생성 비용 | 요금표— | 예측 수량1회 생성 예상치 | 오디오 생성— | 해상도— | 과금 단위— | 과금 조건— | 요금 출력 · 예상 생성 비용 · 비교 전용 추정치 $1.6 생성 전 추정치 이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다. |
Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. 금액 확보와 정산 방식 →
참조 요금 상세 정보
모델 수준의 참조 요금표는 메서드 선택, 견적 또는 요금을 변경하지 않습니다. 실제 과금에는 선택한 Ailoot 메서드 요금이 적용됩니다.
동영상 설정별 요금 참조
설정별 가격
각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.
| 설정 | 과금 조건 | 요금 |
|---|---|---|
| 설정동영상 요금 | 과금 조건오디오: with_audio | 요금 출력 · 동영상 가격 $0.8 동영상 초당 표시된 구성의 공개 가격 참고값입니다. 최종 요금은 실제 청구된 구성을 따릅니다. |
| 설정동영상 요금 | 과금 조건오디오: with_audio; 해상도: 4k | 요금 출력 · 동영상 가격 $1.2 동영상 초당 표시된 구성의 공개 가격 참고값입니다. 최종 요금은 실제 청구된 구성을 따릅니다. |
| 설정동영상 요금 | 과금 조건오디오: without_audio | 요금 출력 · 동영상 가격 $0.4 동영상 초당 표시된 구성의 공개 가격 참고값입니다. 최종 요금은 실제 청구된 구성을 따릅니다. |
| 설정동영상 요금 | 과금 조건오디오: without_audio; 해상도: 4k | 요금 출력 · 동영상 가격 $0.8 동영상 초당 표시된 구성의 공개 가격 참고값입니다. 최종 요금은 실제 청구된 구성을 따릅니다. |
요청 예제
Ailoot Ultra · 동영상
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/veo-3.1", "prompt": "a calm greenhouse", "duration": 6, "resolution": "720p", "aspect_ratio": "16:9", "generate_audio": true}')
Path('request.json').write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path('result.json').read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print('Keep the complete JSON and response headers; do not resubmit an unknown creation.')
PY_RESULT
결과 수신 및 저장
Ailoot Ultra · 동영상
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
작업 상태 확인
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_STATUS_URL'
import json
from pathlib import Path
from urllib.parse import quote
r=json.loads(Path('result.json').read_text())
if not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')
Path('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))
PY_STATUS_URL
curl --fail-with-body --silent --show-error "$(cat status-url.txt)" \
-H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path('status.json').read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print('Keep the complete JSON and response headers; do not resubmit an unknown creation.')
PY_RESULT
기타 콘텐츠 조회
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path('status.json').read_text())
if r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')
if not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')
urls=[]
for i,u in enumerate(r.get('data',[])):
if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')
urls.append((str(i),u))
for label,path in urls:
u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)
if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')
target=Path('owned-'+label+'.bin')
subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)
print('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')
PY_ASSETS
완료된 결과 모두 보관
완료된 모든 동영상과 반환된 파일을 저장하고, 실제로 반환된 모든 자산 URL에서 가져오세요.
완료된 data[]의 소유한 서명된 URL을 모두 보존하고 상태 메타데이터 전체를 유지하세요. 생성된 오디오를 포함해 모든 출력을 저장하세요. generate_audio=false인 경우에도 유효한 AAC 오디오 트랙이 있을 수 있습니다. 해당 오디오를 포함한 원본 MP4 전체를 보존하세요.
원래 응답을 확인해야 할 경우
기존 원래 작업을 조회하세요. 전송 결과를 알 수 없는 요청을 절대로 다시 제출하지 마세요.
최대 출력 수: 4.
응답 필드
| 필드 | 유형 | 의미 |
|---|---|---|
필드id | 유형string | 의미— |
필드object | 유형string | 의미— |
필드model | 유형string | 의미— |
필드status | 유형string | 의미— |
필드data[] | 유형signed content URL | 의미— |
필드charge_pending_check | 유형boolean | 의미— |
필드error.code | 유형string | 의미— |
필드error.message | 유형string | 의미— |
필드operation_id | 유형string | 의미HTTP503 result_pending_check 원래 상태/콘텐츠 응답: id는 동일한 원래 공개 동영상 ID입니다. |
필드error.type | 유형string | 의미HTTP503 result_pending_check에서 server_error가 발생합니다. |
오류와 다음 단계
| 응답 | 조건 | 다음 단계 |
|---|---|---|
응답400 · invalid_request_error | 조건동영상 프로필 파싱 전에 원시 요청 본문 읽기가 실패함 | 다음 단계반환된 응답을 보존하고 읽을 수 없는 요청 본문을 수정하세요. |
응답422 · price_unavailable | 조건정확한 동영상 프로필을 파싱하지 못하거나 완전히 파싱된 프로필에 사용 가능한 정확한 요금표가 없음 | 다음 단계응답을 보존하세요. 허용된 정확한 프로필 전체와 공개된 요금표를 사용하세요. 이 분기는 공급자에게 전송하기 전에 실행됩니다. |
응답409 · video_not_ready | 조건원래 결과 콘텐츠를 아직 사용할 수 없음 | 다음 단계원래 반환된 ID를 폴링하고 Retry-After를 준수하세요. |
응답server_error | 조건반환된 응답에 작업 또는 결과 확인이 필요하다고 표시되어 있습니다 | 다음 단계최초로 반환된 작업/태스크 ID, 요청 헤더와 응답을 보관하고, 지원되는 조회 방식으로 해당 최초 작업을 계속 조회하세요. 생성 요청을 다시 제출하지 마세요. |
응답503 · result_pending_check | 조건원래 상태/콘텐츠의 GET: 작업이 게시되지 않았고 원래 작업이 failed/cancelled/expired가 아니며, 로컬 상태가 unknown이거나 원래 작업 상태가 completed인 경우입니다. | 다음 단계원래 id와 operation_id(동일한 공개 동영상 ID), 응답 및 헤더를 보존하세요. 원래 상태/콘텐츠만 조회하세요. 새 생성 요청을 절대로 제출하지 마세요. |
별칭
모델 별칭
Ailoot Ultra google/veo-3.1
메서드 경로 별칭
/v1/videos/generations, /videos, /videos/generations
관련 호출용 ID
FAQ · Google: Veo 3.1
- 어떤 입력과 결과를 사용할 수 있나요?
POST /v1/videos·google/veo-3.1:text→video- 요청은 어떤 필드를 사용하나요?
POST /v1/videos·google/veo-3.1:model,prompt,duration,resolution,aspect_ratio,generate_audio