Google Video API
Resolution, duration, keyframe, reference media, video editing and extension rules for Veo 3.1, Veo 3.1 Fast, Gemini Omni Flash and Gemini Omni 1.1.
This page specifies the Google video models veo-3.1, veo-3.1-fast, gemini-omni-flash and gemini-omni-flash-1.1. They share the POST /v1/videos create and GET /v1/videos/{id} polling flow with the other video models; authentication, media upload, polling states, downloads and error handling are covered in the Complete Video API Standard. This page lists only the fields and rules specific to Google video.
Updated 2026-10-10. New Google video requests use polling; do not send
callback_url.
Models
| Model | Positioning | Resolution | Duration | Main capabilities |
|---|---|---|---|---|
veo-3.1 | Generally available, quality first | 720P / 1080P / 4K | 4, 6 or 8s, default 8s | Text, first frame, first and last frames, 1–3 reference images, video extension, native synchronized audio |
veo-3.1-fast | Generally available, speed and cost first | 720P / 1080P / 4K | 4, 6 or 8s, default 8s | Same as veo-3.1 |
gemini-omni-flash | Preview | 720P only | 3–10s, default 3s | Text, first frame, first and last frames, up to 10 reference images (optionally with 1 reference video) |
gemini-omni-flash-1.1 | Preview, generation and editing | 720P / 1080P / 4K | 3–10s, default 3s | Text, first frame, first and last frames, up to 10 reference images and 3 reference videos, video editing, video extension |
Common rules
- Aspect ratio:
ratio(oraspect_ratio) accepts only16:9and9:16. The default is16:9. - Resolution:
resolutionaccepts720p,1080por4k. The default is720p. A360prequest is generated and billed as 720P. size: one field can set both resolution and ratio, for example1280x720,1080x1920or3840x2160. It can also carry only the ratio,16:9or9:16. Conflicting values insize,ratioandresolutionreturn 400.- Count: each request generates one video, so
nmust be 1. - Images: up to 20 MiB each, in any one of these forms:
- a public HTTPS URL (recommended);
- a Data URI, for example
data:image/png;base64,...; - raw PNG, JPEG or WebP Base64 without a prefix;
- a
multipart/form-datafile in the fieldinput_reference,image,images,first_frameorlast_frame.
- Image formats: Veo accepts JPEG and PNG only. Gemini Omni accepts PNG, JPEG and WebP.
- Videos: public HTTPS URLs only, MP4, MOV or WebM, up to 64 MiB. Upload local videos first (see Local media: permit, upload, reference) and put the returned
urlinvideo. Video Data URIs, Base64 and multipart video files are not accepted. - Reference video field: use top-level
videoorvideos, notmetadata.referenceVideos. No Google video model accepts reference audio. - Result: on completion,
video_urlis an MP4 onassets.88api.ai. Download it directly, or use it as thevideoof a later extension or edit request.
Veo 3.1 / Veo 3.1 Fast
| Scenario | Request | Rules |
|---|---|---|
| Text to video | no images or videos | 4, 6 or 8s |
| First frame | one image in images (or image, input_reference, metadata.firstFrame) | 4, 6 or 8s |
| First and last frames | two images in order in images, or metadata.firstFrame plus metadata.lastFrame | 4, 6 or 8s |
| Reference images | three images in images; with one or two reference images, add metadata.video_mode: "reference" | fixed 8s, at most 3 images |
| Video extension | task: "extend" with one video | adds 7s per call; do not send duration, ratio, resolution or size |
metadata.video_modeselectsframes(first frame or first and last frames) orreference(reference images) explicitly.taskcan also betext_to_video,image_to_video,reference_to_videoorextend. Conflicting values return 400.generate_audio(ormetadata.generateAudio) defaults totrueand generates native synchronized audio. Withfalse, the output has no audio track. Audio does not change the price.negative_prompt(up to 2000 characters) andseed(0–4294967295) can be top-level or written asmetadata.negativePromptandmetadata.seed.- The extension input must be a 1–30 second MP4. Extensions are billed by added seconds: output duration minus input duration.
- Veo does not accept reference videos, reference audio,
temperatureortop_p.
4K text to video:
{
"model": "veo-3.1",
"prompt": "A silver sports car in a rainy city at night, low tracking shot, neon reflections, cinematic",
"duration": 8,
"resolution": "4k",
"ratio": "16:9",
"generate_audio": true
}First and last frames (the two images are the first and last frame, in order):
{
"model": "veo-3.1-fast",
"prompt": "Transition smoothly from an empty square at dawn to the same view at night with the lights on",
"duration": 6,
"size": "1920x1080",
"images": [
"https://cdn.example.com/start.jpg",
"https://cdn.example.com/end.jpg"
],
"metadata": {
"negativePrompt": "blur, distortion"
}
}Reference images (fixed 8s):
{
"model": "veo-3.1",
"prompt": "Keep the face and outfit from the reference images and walk slowly along the beach",
"duration": 8,
"images": [
"https://cdn.example.com/character-front.jpg",
"https://cdn.example.com/character-side.jpg"
],
"metadata": {
"video_mode": "reference"
}
}Video extension:
{
"model": "veo-3.1",
"prompt": "Continue the shot as the person keeps walking forward",
"task": "extend",
"video": "https://assets.88api.ai/media/task-videos/2026/10/example.mp4"
}Upload a local image as the first frame (metadata is sent as a JSON string):
curl --request POST 'https://api.88api.ai/v1/videos' \
--header 'Authorization: Bearer sk-xxxx' \
--form 'model=veo-3.1-fast' \
--form 'prompt=Slowly push in while the clouds drift in the background' \
--form 'seconds=8' \
--form 'size=1280x720' \
--form 'metadata={"video_mode":"frames"}' \
--form 'input_reference=@start.jpg;type=image/jpeg'Gemini Omni Flash / Gemini Omni 1.1
Without task, the submitted media decide the task:
| Submitted media | Task |
|---|---|
| no images or videos | text to video |
| exactly one image | first frame |
first_frame, or first_frame plus last_frame (also as metadata.firstFrame, metadata.lastFrame) | first frame or first and last frames |
| two or more images, images plus a video, or several videos | reference generation |
| exactly one video | video editing (gemini-omni-flash-1.1 only) |
taskcan also be set explicitly totext_to_video,image_to_video,reference_to_video,editorextend.- Unlike Veo, two images in
imagesare treated as references. For first and last frames, usefirst_frameandlast_frame. - First/last frame fields cannot be combined with ordinary reference images.
gemini-omni-flashoutputs 720P only and does not support editing or extension. Submit its reference video together with reference images.gemini-omni-flash-1.1accepts up to 10 reference images and 3 reference videos.- Video editing (1.1): put one video in
videoand describe the change in the prompt. Do not sendratio,aspect_ratioorsize; the aspect ratio follows the source video.resolutionmay be set. - Video extension (1.1):
- Send
task: "extend"with onevideo. Do not sendduration,ratioorsize. - Each call adds about 10 seconds.
resolutioncan be720p(default) or1080p; 4K is not supported. - The input must be a 1–30 second MP4. For a longer video, cut the last part (10 seconds recommended) and extend that.
- Billing uses added seconds: output duration minus input duration. Optionally send
input_duration(input length in seconds); a value more than 0.1 seconds away from the measured length is rejected.
- Send
- The extension result is a complete MP4. Its input part is regenerated by the model: similar to the original, not a frame-exact copy. To stitch, keep the original in full and append only the part of the extension after the input duration.
temperature(0–2) andtop_p(0–1) are optional. Gemini Omni has no audio switch.
First frame (Flash):
{
"model": "gemini-omni-flash",
"prompt": "Slowly push in as steam rises from the pastries",
"duration": 5,
"ratio": "9:16",
"image": "https://cdn.example.com/start.jpg"
}Reference images plus reference video (1.1, 4K):
{
"model": "gemini-omni-flash-1.1",
"prompt": "Keep the camera rhythm of the reference video and replace the subject with the product from the image",
"duration": 8,
"resolution": "4k",
"images": ["https://cdn.example.com/product.jpg"],
"video": "https://cdn.example.com/reference.mp4"
}Video extension (1.1):
{
"model": "gemini-omni-flash-1.1",
"prompt": "Continue the scene as ripples spread naturally across the water",
"task": "extend",
"resolution": "1080p",
"video": "https://assets.88api.ai/media/task-videos/2026/10/example.mp4"
}Seedance Official Relay Video API
Resolution, duration, ratio, reference media, virtual portrait library, drafts, last frame, web search, task cancellation and video edit/extension rules for Seedance 2.0 Mini, 2.0, 2.0 Fast and 2.5.
Kling Video API
Resolution-based billing for kling-3.0-turbo (720P / 1080P / 2K / 4K), plus duration, ratio, reference image and video, keyframe and audio rules.