88API88API
User GuideAI ApplicationsAPI ReferenceHelp & Support
Video

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

ModelPositioningResolutionDurationMain capabilities
veo-3.1Generally available, quality first720P / 1080P / 4K4, 6 or 8s, default 8sText, first frame, first and last frames, 1–3 reference images, video extension, native synchronized audio
veo-3.1-fastGenerally available, speed and cost first720P / 1080P / 4K4, 6 or 8s, default 8sSame as veo-3.1
gemini-omni-flashPreview720P only3–10s, default 3sText, first frame, first and last frames, up to 10 reference images (optionally with 1 reference video)
gemini-omni-flash-1.1Preview, generation and editing720P / 1080P / 4K3–10s, default 3sText, first frame, first and last frames, up to 10 reference images and 3 reference videos, video editing, video extension

Common rules

  • Aspect ratio: ratio (or aspect_ratio) accepts only 16:9 and 9:16. The default is 16:9.
  • Resolution: resolution accepts 720p, 1080p or 4k. The default is 720p. A 360p request is generated and billed as 720P.
  • size: one field can set both resolution and ratio, for example 1280x720, 1080x1920 or 3840x2160. It can also carry only the ratio, 16:9 or 9:16. Conflicting values in size, ratio and resolution return 400.
  • Count: each request generates one video, so n must 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-data file in the field input_reference, image, images, first_frame or last_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 url in video. Video Data URIs, Base64 and multipart video files are not accepted.
  • Reference video field: use top-level video or videos, not metadata.referenceVideos. No Google video model accepts reference audio.
  • Result: on completion, video_url is an MP4 on assets.88api.ai. Download it directly, or use it as the video of a later extension or edit request.

Veo 3.1 / Veo 3.1 Fast

ScenarioRequestRules
Text to videono images or videos4, 6 or 8s
First frameone image in images (or image, input_reference, metadata.firstFrame)4, 6 or 8s
First and last framestwo images in order in images, or metadata.firstFrame plus metadata.lastFrame4, 6 or 8s
Reference imagesthree images in images; with one or two reference images, add metadata.video_mode: "reference"fixed 8s, at most 3 images
Video extensiontask: "extend" with one videoadds 7s per call; do not send duration, ratio, resolution or size
  • metadata.video_mode selects frames (first frame or first and last frames) or reference (reference images) explicitly. task can also be text_to_video, image_to_video, reference_to_video or extend. Conflicting values return 400.
  • generate_audio (or metadata.generateAudio) defaults to true and generates native synchronized audio. With false, the output has no audio track. Audio does not change the price.
  • negative_prompt (up to 2000 characters) and seed (0–4294967295) can be top-level or written as metadata.negativePrompt and metadata.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, temperature or top_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 mediaTask
no images or videostext to video
exactly one imagefirst 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 videosreference generation
exactly one videovideo editing (gemini-omni-flash-1.1 only)
  • task can also be set explicitly to text_to_video, image_to_video, reference_to_video, edit or extend.
  • Unlike Veo, two images in images are treated as references. For first and last frames, use first_frame and last_frame.
  • First/last frame fields cannot be combined with ordinary reference images.
  • gemini-omni-flash outputs 720P only and does not support editing or extension. Submit its reference video together with reference images.
  • gemini-omni-flash-1.1 accepts up to 10 reference images and 3 reference videos.
  • Video editing (1.1): put one video in video and describe the change in the prompt. Do not send ratio, aspect_ratio or size; the aspect ratio follows the source video. resolution may be set.
  • Video extension (1.1):
    • Send task: "extend" with one video. Do not send duration, ratio or size.
    • Each call adds about 10 seconds. resolution can be 720p (default) or 1080p; 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.
  • 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) and top_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"
}