Gemini Omni 1.1 VIP
curl --request POST \
--url https://toapis.com/v1/videos \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"duration": 123,
"resolution": "<string>",
"aspect_ratio": "<string>",
"image_urls": [
"<string>"
],
"generation_type": "<string>",
"video_urls": [
"<string>"
]
}
'import requests
url = "https://toapis.com/v1/videos"
payload = {
"model": "<string>",
"prompt": "<string>",
"duration": 123,
"resolution": "<string>",
"aspect_ratio": "<string>",
"image_urls": ["<string>"],
"generation_type": "<string>",
"video_urls": ["<string>"]
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
prompt: '<string>',
duration: 123,
resolution: '<string>',
aspect_ratio: '<string>',
image_urls: ['<string>'],
generation_type: '<string>',
video_urls: ['<string>']
})
};
fetch('https://toapis.com/v1/videos', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'prompt' => '<string>',
'duration' => 123,
'resolution' => '<string>',
'aspect_ratio' => '<string>',
'image_urls' => [
'<string>'
],
'generation_type' => '<string>',
'video_urls' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://toapis.com/v1/videos"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ],\n \"generation_type\": \"<string>\",\n \"video_urls\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
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")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ],\n \"generation_type\": \"<string>\",\n \"video_urls\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://toapis.com/v1/videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ],\n \"generation_type\": \"<string>\",\n \"video_urls\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "vid_example",
"object": "generation.task",
"model": "gemini-omni-1.1-flash-preview-vip",
"status": "queued",
"created_at": 1789600000
}
Gemini Omni Flash
Gemini Omni 1.1 VIP
VIP supports text-to-video, image-to-video and reference video. Choose 4 / 6 / 8 / 10 seconds and 360p / 720p / 1080p / 4k, defaulting to 6 seconds / 720p. Omit duration with reference video.
POST
/
v1
/
videos
Gemini Omni 1.1 VIP
curl --request POST \
--url https://toapis.com/v1/videos \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"duration": 123,
"resolution": "<string>",
"aspect_ratio": "<string>",
"image_urls": [
"<string>"
],
"generation_type": "<string>",
"video_urls": [
"<string>"
]
}
'import requests
url = "https://toapis.com/v1/videos"
payload = {
"model": "<string>",
"prompt": "<string>",
"duration": 123,
"resolution": "<string>",
"aspect_ratio": "<string>",
"image_urls": ["<string>"],
"generation_type": "<string>",
"video_urls": ["<string>"]
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
prompt: '<string>',
duration: 123,
resolution: '<string>',
aspect_ratio: '<string>',
image_urls: ['<string>'],
generation_type: '<string>',
video_urls: ['<string>']
})
};
fetch('https://toapis.com/v1/videos', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'prompt' => '<string>',
'duration' => 123,
'resolution' => '<string>',
'aspect_ratio' => '<string>',
'image_urls' => [
'<string>'
],
'generation_type' => '<string>',
'video_urls' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://toapis.com/v1/videos"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ],\n \"generation_type\": \"<string>\",\n \"video_urls\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
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")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ],\n \"generation_type\": \"<string>\",\n \"video_urls\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://toapis.com/v1/videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ],\n \"generation_type\": \"<string>\",\n \"video_urls\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "vid_example",
"object": "generation.task",
"model": "gemini-omni-1.1-flash-preview-vip",
"status": "queued",
"created_at": 1789600000
}
VIP supports text-to-video, image-to-video and reference video. Choose 4 / 6 / 8 / 10 seconds and 360p / 720p / 1080p / 4k, defaulting to 6 seconds / 720p. Omit duration with reference video.
Standard | Official documentation
Use your platform API key, not a supplier key. In mainland China, use https://toapis.cn as the Base URL.
Request parameters
string
required
Bearer YOUR_API_KEYstring
required
gemini-omni-1.1-flash-preview-vipstring
required
Required video description.
integer
default:"6"
VIP: 4 / 6 / 8 / 10 seconds, default 6. With VIP video_urls, omit both duration and seconds.
string
default:"720p"
VIP: 360p / 720p / 1080p / 4k, default 720p, case-insensitive.
string
default:"16:9"
16:9 or 9:16, default 16:9.
string[]
VIP frame mode requires 1 image; reference accepts 1 or 3. Two-frame input is unsupported. Omit generation_type when no images are provided.
string
VIP only. frame uses a first frame; reference uses reference images. If omitted, 1 image selects frame and 3 select reference.
string[]
VIP only. At most 1 public HTTP(S) video URL, optionally with images. Omit duration and seconds when providing a reference video. Output duration is determined by the generated result and is not guaranteed to match the source video.
Upload local media first to obtain public URLs. Do not send base64 or local file paths.
Request examples
- VIP
- VIP VIDREF
curl https://toapis.com/v1/videos \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-omni-1.1-flash-preview-vip",
"prompt": "A cinematic tracking shot through a sunlit city",
"duration": 8,
"resolution": "360p",
"aspect_ratio": "9:16",
"generation_type": "reference",
"image_urls": [
"https://example.com/a.png",
"https://example.com/b.png",
"https://example.com/c.png"
]
}'
curl https://toapis.com/v1/videos \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-omni-1.1-flash-preview-vip",
"prompt": "The same scene at night with neon lights",
"resolution": "4k",
"aspect_ratio": "16:9",
"generation_type": "reference",
"image_urls": ["https://example.com/image.png"],
"video_urls": ["https://example.com/video.mp4"]
}'
Retrieve a task
Submission returns a platform task id. Poll GET /v1/videos/ and retrieve the video result on completion. Do not use supplier task IDs or supplier polling endpoints.curl https://toapis.com/v1/videos/YOUR_TASK_ID \
-H 'Authorization: Bearer YOUR_API_KEY'
{
"id": "vid_example",
"object": "generation.task",
"model": "gemini-omni-1.1-flash-preview-vip",
"status": "queued",
"created_at": 1789600000
}