curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_ext_t2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_1_1_flash_ext",
"params": {
"prompt": "Keep the characters and outfits from the two reference images, walking in the garden",
"image_url": [
"https://example.com/ref-1.jpg",
"https://example.com/ref-2.jpg"
],
"resolution": "1080p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_11_img2_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "Keep the subject and camera movement from the reference video, with cleaner lighting",
"video_url": ["https://example.com/reference.mp4"],
"resolution": "4K",
"aspect_ratio": "16:9"
},
"out_task_id": "omni_ext_v2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_1_1_flash_ext",
"params": {
"prompt": "Use the character from the reference image and follow the camera movement from the reference video",
"image_url": ["https://example.com/ref-1.jpg"],
"video_url": ["https://example.com/reference.mp4"],
"resolution": "720p",
"aspect_ratio": "16:9"
},
"out_task_id": "omni_11_img_v2v_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_ext_t2v_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "gemini_omni_flash_ext",
params: {
prompt: "A girl dancing happily in a sunny garden, cinematic feel",
resolution: "720p",
aspect_ratio: "16:9",
video_length: "6"
},
out_task_id: "omni_ext_t2v_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "gemini_omni_flash_ext",
"params": map[string]interface{}{
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6",
},
"out_task_id": "omni_ext_t2v_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_ext_t2v_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "gemini_omni_flash_ext",
"params" => [
"prompt" => "A girl dancing happily in a sunny garden, cinematic feel",
"resolution" => "720p",
"aspect_ratio" => "16:9",
"video_length" => "6"
],
"out_task_id" => "omni_ext_t2v_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "omni_ext_t2v_123456",
"status": "pending",
"estimated_credits": "<Estimated Credits>",
"created_at": "2026-08-28T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please recharge and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
Gemini Omni Flash Ext / 1.1
Gemini Omni Flash Ext Video Generation
- Same parameter set with two model IDs:
gemini_omni_flash_ext(1.0) andgemini_omni_1_1_flash_ext(1.1) - Asynchronous processing mode, returning a task ID for subsequent queries
- Supports text-to-video, up to 7 reference images, and 1 optional reference video; images and video can be passed simultaneously
- Supports 720p / 1080p / 4K, duration only 4 / 6 / 8 / 10 seconds
POST
/
api
/
openapi
/
submit
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_ext_t2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_1_1_flash_ext",
"params": {
"prompt": "Keep the characters and outfits from the two reference images, walking in the garden",
"image_url": [
"https://example.com/ref-1.jpg",
"https://example.com/ref-2.jpg"
],
"resolution": "1080p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_11_img2_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "Keep the subject and camera movement from the reference video, with cleaner lighting",
"video_url": ["https://example.com/reference.mp4"],
"resolution": "4K",
"aspect_ratio": "16:9"
},
"out_task_id": "omni_ext_v2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_1_1_flash_ext",
"params": {
"prompt": "Use the character from the reference image and follow the camera movement from the reference video",
"image_url": ["https://example.com/ref-1.jpg"],
"video_url": ["https://example.com/reference.mp4"],
"resolution": "720p",
"aspect_ratio": "16:9"
},
"out_task_id": "omni_11_img_v2v_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_ext_t2v_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "gemini_omni_flash_ext",
params: {
prompt: "A girl dancing happily in a sunny garden, cinematic feel",
resolution: "720p",
aspect_ratio: "16:9",
video_length: "6"
},
out_task_id: "omni_ext_t2v_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "gemini_omni_flash_ext",
"params": map[string]interface{}{
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6",
},
"out_task_id": "omni_ext_t2v_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_ext_t2v_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "gemini_omni_flash_ext",
"params" => [
"prompt" => "A girl dancing happily in a sunny garden, cinematic feel",
"resolution" => "720p",
"aspect_ratio" => "16:9",
"video_length" => "6"
],
"out_task_id" => "omni_ext_t2v_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "omni_ext_t2v_123456",
"status": "pending",
"estimated_credits": "<Estimated Credits>",
"created_at": "2026-08-28T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please recharge and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
1.0 and 1.1 share the parameters on this page. To switch models, simply change the
model field.gemini_omni_flash_ext— Gemini Omni Flash Ext (1.0)gemini_omni_1_1_flash_ext— Gemini Omni 1.1 Flash Ext
Authorizations
string
required
All endpoints require Bearer Token authentication.Get the API Key:Visit API Key management page to get your API Key.When using it, add the following to the request header:
Authorization: Bearer YOUR_API_KEY
Body
string
required
Model name, choose one of two:
gemini_omni_flash_extgemini_omni_1_1_flash_ext
type.object
required
Model parameter object.
Show params Object Properties
Show params Object Properties
string
required
Text description for video generation. Required.
string
default:"6"
Generated video duration in seconds. Accepts strings only:
"4""6"- Default"8""10"
Do not pass
3, 5, 7, 9, or other durations in seconds. Enum validation requires a string; please pass "6" instead of the number 6.string
default:"720p"
Output resolution:
720p- Default1080p4K
string
default:"16:9"
Video aspect ratio:
16:9- Landscape, Default9:16- Portrait
string | string[]
Reference image URL(s), must be directly accessible via the public network. Can also be passed as a single string. If omitted, text-to-video generation will be performed.
- Up to 7 images, 2 images allowed
- Short edge no less than 300px, up to 10MB per image
string | string[]
Reference video URL, optional, up to 1 video. Can also be passed as a single string. Can be passed together with reference images.Video requirements:
- Formats: MP4, MOV
- Duration not exceeding 10 seconds
- Up to 100MB
- Short edge no less than 300px
video_length when passing a reference video; output duration follows the uploaded video, up to 10 seconds. Reference video counts as 2 slots towards the 7-slot quota.string
required
Initiator task ID.User-defined task identifier, required. Only letters, numbers, underscores, and hyphens are supported, with a length of 1-64 characters. You can use this ID later to query the task status and results.
Response
string
Caller task ID, can be used to query results.
string
Initial status, usually
"pending".number
Estimated credits consumed by this task.
string
Creation time, ISO format.
Query Task
Both models use asynchronous video generation. After submitting a task, please useout_task_id to query the task status. You can also refer to Get Task Status.
string
required
The initiator task ID passed when submitting the task.
curl --request POST \
--url https://aireiter.com/api/openapi/query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"out_task_id": "omni_ext_t2v_123456"
}'
output array in the response will contain the generated video, with each element containing a video field.
Parameter Comparison
| Input | image_url | video_url | Duration |
|---|---|---|---|
| Text-to-Video | Do not pass, or empty array | Do not pass | video_length "4" / "6" / "8" / "10" |
| Reference Image | 1–7 images (including 2 images) | Do not pass | Same as above |
| Reference Video | Do not pass, or empty array | 1 video, up to 10 seconds | Do not pass video_length, follows source video |
| Image + Video | Up to 5 images (number of images + 2 ≤ 7) | 1 video, up to 10 seconds | Do not pass video_length, follows source video |
Request Examples
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_ext_t2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_1_1_flash_ext",
"params": {
"prompt": "Keep the characters and outfits from the two reference images, walking in the garden",
"image_url": [
"https://example.com/ref-1.jpg",
"https://example.com/ref-2.jpg"
],
"resolution": "1080p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_11_img2_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "Keep the subject and camera movement from the reference video, with cleaner lighting",
"video_url": ["https://example.com/reference.mp4"],
"resolution": "4K",
"aspect_ratio": "16:9"
},
"out_task_id": "omni_ext_v2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini_omni_1_1_flash_ext",
"params": {
"prompt": "Use the character from the reference image and follow the camera movement from the reference video",
"image_url": ["https://example.com/ref-1.jpg"],
"video_url": ["https://example.com/reference.mp4"],
"resolution": "720p",
"aspect_ratio": "16:9"
},
"out_task_id": "omni_11_img_v2v_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_ext_t2v_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "gemini_omni_flash_ext",
params: {
prompt: "A girl dancing happily in a sunny garden, cinematic feel",
resolution: "720p",
aspect_ratio: "16:9",
video_length: "6"
},
out_task_id: "omni_ext_t2v_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "gemini_omni_flash_ext",
"params": map[string]interface{}{
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6",
},
"out_task_id": "omni_ext_t2v_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "gemini_omni_flash_ext",
"params": {
"prompt": "A girl dancing happily in a sunny garden, cinematic feel",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": "6"
},
"out_task_id": "omni_ext_t2v_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "gemini_omni_flash_ext",
"params" => [
"prompt" => "A girl dancing happily in a sunny garden, cinematic feel",
"resolution" => "720p",
"aspect_ratio" => "16:9",
"video_length" => "6"
],
"out_task_id" => "omni_ext_t2v_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "omni_ext_t2v_123456",
"status": "pending",
"estimated_credits": "<Estimated Credits>",
"created_at": "2026-08-28T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please recharge and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}