Guides

Use your cast in Veo 3.1

Google. Verified 2026-10-19. Official docs.

Veo 3.1 produces 8 second clips with native audio and offers three different consistency tools: a first frame, a first plus last frame pair, and up to three reference images of a character. It is strong on realism and lip-synced dialogue, but its people policy is the strictest of the five, so photoreal character packs can be refused in some regions.

Which file goes where

Capabilities

Steps

  1. Open Google AI Studio (aistudio.google.com) or the Gemini app and choose a Veo 3.1 video model; developers use the google-genai SDK with the same model IDs.
  2. Decide the mode first. Image-to-video: upload hero.png as the starting image. Reference mode: upload closeup.png, three_quarter.png and profile.png as asset references. The two modes are different request shapes; start with one of them, not both.
  3. Paste the bible text from character.json at the top of the prompt, then the action, camera and any dialogue in quotes.
  4. Set aspect ratio (16:9 or 9:16), resolution and the 8 second duration (1080p and 4K need the full 8 seconds).
  5. Leave person generation at allow_adult for image-to-video and reference requests; that is the only accepted value for those modes.
  6. Generate, then download within two days because generated videos are deleted from the server after that.
  7. For a longer scene, extend the finished clip by 7 seconds per step (up to 20 times) rather than re-uploading a frame grab; extension keeps audio and motion continuity.

Prompt template

{{bible}} This is the same character shown in the attached image; keep the face, hairstyle, skin tone, outfit and body proportions identical. {{action}} Cinematic realism, natural movement, consistent lighting, no additional people. Note: use either a starting image or reference images in one request, not both.

Replace {{bible}} with the bible text from character.json and {{action}} with what the character does in the shot.

Tips

Caveats

API notes

Use the google-genai SDK (client.models.generate_videos) or the REST predictLongRunning method with model veo-3.1-generate-preview. The starting image is sent inline as image bytes with a mime type; a last frame goes in the config as lastFrame (requires a starting image) and references go in referenceImages with referenceType set to asset. The call returns a long-running operation that you poll with operations.get until done, then download the video from the returned file reference.

Start a series

Other generators: Grok Imagine, Hailuo, Seedance 2.0, Nova Reel.