Gemini Omni 1.1 Video Generation and Editing
curl --request POST \
--url https://toapis.com/v1/videos/generationsimport requests
url = "https://toapis.com/v1/videos/generations"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://toapis.com/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://toapis.com/v1/videos/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://toapis.com/v1/videos/generations"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://toapis.com/v1/videos/generations")
.asString();require 'uri'
require 'net/http'
url = URI("https://toapis.com/v1/videos/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_bodyGemini Omni Official
Gemini Omni 1.1 Video Generation and Editing
Generate 3-10 second videos with official Gemini Omni 1.1 Flash Preview at four resolutions
POST
/
v1
/
videos
/
generations
Gemini Omni 1.1 Video Generation and Editing
curl --request POST \
--url https://toapis.com/v1/videos/generationsimport requests
url = "https://toapis.com/v1/videos/generations"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://toapis.com/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://toapis.com/v1/videos/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://toapis.com/v1/videos/generations"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://toapis.com/v1/videos/generations")
.asString();require 'uri'
require 'net/http'
url = URI("https://toapis.com/v1/videos/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_bodySet
Upload media first and pass the returned URLs. Veo-specific parameters such as generateAudio, negativePrompt and seed are not supported. Use video_list for input videos.
model to gemini-omni-1.1-flash-preview-official. This preview model supports text, image and reference image generation, plus video editing.
Users in mainland China can replace the example domain with
https://toapis.cn.Parameters
Authorization: Bearer YOUR_API_KEY
| Field | Description |
|---|---|
model | gemini-omni-1.1-flash-preview-official |
prompt | Required. Describe the video to generate or edit. |
duration | Integer from 3 to 10 seconds. Default: 6. |
resolution | 360p / 720p / 1080p / 4K. Default: 720p. |
aspect_ratio | 16:9 / 9:16. Default: 16:9. Omitted for video editing. |
image_urls | Up to 10 reference image URLs. Cannot be combined with input videos. |
video_list | Up to 3 items, each containing video_url. MP4/MOV only, up to 50 MiB each. |
metadata.task | Optional: text_to_video / image_to_video / reference_to_video / edit. The model infers the task when omitted. |
Pricing
USD. Output is billed by requested seconds. Input videos are measured by the server, rounded up separately to whole seconds and billed at an additional $0.006950/second. These are base prices; group or account discounts follow the quote.| Output resolution | Price per second |
|---|---|
| 360p | $0.027034 |
| 720p | $0.081088 |
| 1080p | $0.121632 |
| 4K | $0.243264 |
Request example
curl https://toapis.com/v1/videos/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-omni-1.1-flash-preview-official",
"prompt": "A red paper boat floating on a calm lake at sunrise",
"duration": 3,
"resolution": "360p",
"aspect_ratio": "16:9"
}'
{
"model": "gemini-omni-1.1-flash-preview-official",
"prompt": "Change the sky to a warm sunset",
"duration": 6,
"resolution": "1080p",
"video_list": [{"video_url": "https://example.com/uploaded-video.mp4"}],
"metadata": {"task": "edit"}
}
Retrieve results
Read the task id from the submission response, then use the unified task endpoint to retrieve status and results.curl https://toapis.com/v1/videos/generations/TASK_ID \
-H "Authorization: Bearer YOUR_API_KEY"