Veo 3.1 Extend Video lets you feed a previously generated Veo 3.1 clip and generate an additional segment that is automatically merged into one continuous MP4 file. The extension follows the last frames, motion, and style of the original, while allowing you to redirect the narrative via a fresh text prompt describing what should happen next.
Veo 3.1 Extend Video focuses on natural continuation rather than arbitrary editing; its strength is seamless extension of Veo‑native content
Veo 3.1 Extend Video is best used when you already have a strong base clip and want to expand the narrative, add beats, or create platform‑ready longer cuts.
vs Veo 3.1 Fast Extend: Standard Extend aims for maximum cinematic quality and may be preferable for hero shots, while Fast Extend suits high‑volume social workflows and rapid experimentation.
vs Veo 3.1: Extend is optimized for continuity and single‑file merging, while Veo focuses on initial scene creation, making them complementary stages in a content pipeli
Extending a Veo-generated video is documented as suitable for continuing a story or action from the last second of a previous clip while keeping visual and audio consistency.
It is documented for creating longer, seamless shots from an existing clip, including establishing shots that continue the action from the original video.
It is documented for adding a short continuation to a previously generated video, producing a single merged clip with the extended segment.
It is also documented for quality-focused postproduction workflows where a raw clip can be extended into a more polished final sequence.
import requests, time headers = {"Authorization": "Bearer " + AIMLAPI_KEY} job = requests.post( "https://api.aimlapi.com/v2/video/generations", headers=headers, json={ "model": "veo3.1/extend-video", "prompt": "A serene timelapse of clouds over a mountain range" }, ).json() gid = job["id"] while True: res = requests.get(f"https://api.aimlapi.com/v2/video/generations?generation_id={gid}", headers=headers).json() if res.get("status") in ("completed", "error"): break time.sleep(5) print(res["video"]["url"])
const headers = { Authorization: `Bearer ${process.env.AIMLAPI_KEY}`, "Content-Type": "application/json", }; const job = await (await fetch("https://api.aimlapi.com/v2/video/generations", { method: "POST", headers, body: JSON.stringify({ "model": "veo3.1/extend-video", "prompt": "A serene timelapse of clouds over a mountain range" }), })).json(); let res; do { await new Promise((r) => setTimeout(r, 5000)); res = await (await fetch(`https://api.aimlapi.com/v2/video/generations?generation_id=${job.id}`, { headers })).json(); } while (!["completed", "error"].includes(res.status)); console.log(res.video.url);
# submit the generation — the response contains the job "id" curl -X POST https://api.aimlapi.com/v2/video/generations \ -H "Authorization: Bearer $AIMLAPI_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"veo3.1/extend-video","prompt":"A serene timelapse of clouds over a mountain range"}' # then poll until status is "completed" — video.url holds the result curl "https://api.aimlapi.com/v2/video/generations?generation_id={id}" -H "Authorization: Bearer $AIMLAPI_KEY"
OpenAI-compatible — swap the base URL and it works with your existing SDK.
| Type | Price |
|---|---|
| Output | |
| Model | Input | Output | Context | Best for |
|---|---|---|---|---|
Veo 3.1 Extend Video This page | Video generation |
Veo 3.1 Extend Video takes video as input and returns video.
Veo 3.1 Extend Video is priced at $0.26 / sec (variable).
Veo 3.1 Extend Video is billed per generation — a fixed charge per output rather than by prompt length.
Veo 3.1 Extend Video was built by Google.
Send a request to v2/video/generations with veo3.1/extend-video as the model id.
Yes. Veo 3.1 Extend Video is served through AI/ML API, so the same key and endpoint format used for other models applies.
Yes, it includes an audio generation feature alongside video extension.