Create a Omni video task
curl --request POST \
--url https://gengen.farm/v1/contents/generations/tasks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "gemini-omni-1.1-flash-preview",
"prompt": "A cinematic ocean sunrise with gentle surf sounds."
}
'import requests
url = "https://gengen.farm/v1/contents/generations/tasks"
payload = {
"model": "gemini-omni-1.1-flash-preview",
"prompt": "A cinematic ocean sunrise with gentle surf sounds."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'gemini-omni-1.1-flash-preview',
prompt: 'A cinematic ocean sunrise with gentle surf sounds.'
})
};
fetch('https://gengen.farm/v1/contents/generations/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "omni:12345678-1234-4234-8234-123456789abc",
"model": "gemini-omni-1.1-flash-preview",
"status": "queued",
"outputs": {
"videos": [],
"images": []
},
"createdAt": "2026-10-09T09:58:00.000Z",
"updatedAt": "2026-10-09T09:58:00.000Z"
}Video API
Generate and edit videos with Omni
Google Gemini Omni Flash and Omni 1.1 Flash video generation.
POST
/
contents
/
generations
/
tasks
Create a Omni video task
curl --request POST \
--url https://gengen.farm/v1/contents/generations/tasks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "gemini-omni-1.1-flash-preview",
"prompt": "A cinematic ocean sunrise with gentle surf sounds."
}
'import requests
url = "https://gengen.farm/v1/contents/generations/tasks"
payload = {
"model": "gemini-omni-1.1-flash-preview",
"prompt": "A cinematic ocean sunrise with gentle surf sounds."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'gemini-omni-1.1-flash-preview',
prompt: 'A cinematic ocean sunrise with gentle surf sounds.'
})
};
fetch('https://gengen.farm/v1/contents/generations/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "omni:12345678-1234-4234-8234-123456789abc",
"model": "gemini-omni-1.1-flash-preview",
"status": "queued",
"outputs": {
"videos": [],
"images": []
},
"createdAt": "2026-10-09T09:58:00.000Z",
"updatedAt": "2026-10-09T09:58:00.000Z"
}Use
Save the returned
Mode is inferred when omitted; a source video defaults to editing. Set
gemini-omni-1.1-flash-preview or gemini-omni-flash-preview under Google. Both are Preview models and return asynchronous video tasks with native audio.
Create and retrieve
curl https://gengen.farm/v1/contents/generations/tasks \
-H 'Authorization: Bearer gengen_live_xxxxxxxxxxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-omni-1.1-flash-preview",
"mode": "text_to_video",
"prompt": "An ocean sunrise with gentle surf sounds.",
"controls": {"duration": 5, "resolution": "720p", "ratio": "16:9"}
}'
id, including omni:, and poll the shared task endpoint with the same API key until succeeded or failed. Read outputs.videos on success. Each creation request creates a new task; polling never resubmits generation.
curl 'https://gengen.farm/v1/contents/generations/tasks/omni:YOUR_TASK_UUID' \
-H 'Authorization: Bearer gengen_live_xxxxxxxxxxxxxxxx'
Modes
| Mode | Assets | Omni Flash | Omni 1.1 Flash |
|---|---|---|---|
text_to_video | None | Yes | Yes |
video_modify | sourceVideo | Yes | Yes |
image_first_frame | firstFrameImage | No | Yes |
image_first_last_frame | firstFrameImage, lastFrameImage | No | Yes |
multimodal_reference | referenceImages, referenceVideos | No | Yes |
video_extend | sourceVideo | No | Yes |
video_extend explicitly to extend. Do not combine frames, references and source-video input forms. Audio input and image output are unsupported.
{
"model": "gemini-omni-1.1-flash-preview",
"mode": "image_first_last_frame",
"prompt": "Move smoothly from the first frame to the last frame.",
"assets": {
"firstFrameImage": "https://example.com/start.png",
"lastFrameImage": "https://example.com/end.png"
},
"controls": {"duration": 5, "resolution": "1080p", "ratio": "16:9"}
}
Limits and controls
prompt: 1–10,000 characters.duration: requested duration, integer 3–10 seconds; default 5. Actual output and billable token usage may differ.resolution: Omni Flash supports720p. Omni 1.1 adds360p,1080pand4k.ratio:16:9or9:16; default16:9.- One video per task.
outputCount, if supplied, must be 1. Playground can submit several independent tasks. - Native audio is always enabled.
generateAudio, if supplied, must betrue. - Up to 10 reference images and 3 reference videos. Images accept JPEG/PNG/WebP over HTTPS (JPEG/PNG for GCS), up to 20 MiB each. Converted PNG must also fit this limit. Videos accept MP4 up to 64 MiB and 10 seconds each.
gs:// objects. GCS access requires both caller authorization and storage read permissions; contact support to register an external object or directory. Base64, local paths and asset:// inputs are unsupported. Media is validated before upstream generation; invalid media fails the task and releases its reservation.
Billing and outputs
Billing combines input tokens, text/reasoning tokens and video output tokens. See current prices. A conservative maximum reservation covers generation; final settlement uses actual returned token usage and releases the unused reservation. A requested duration alone does not determine the final price. Video links are temporary HTTPS URLs, retained for seven days after completion. Retrieve the task to renew a link before retention expires, or copy it to your own storage. Listing owned tasks is supported. This GENGEN endpoint does not expose cancellation, deletion, webhooks, streaming, or conversational interaction IDs. Invalid or unsupported parameters return HTTP 400 before reservation. Insufficient balance returns 402. A task whose upstream acceptance is uncertain remains pending for reconciliation; retrieve it rather than submitting a duplicate.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Available options:
gemini-omni-1.1-flash-preview, gemini-omni-flash-preview Required string length:
1 - 10000Inferred from assets when omitted; sourceVideo defaults to video_modify. Omni Flash supports text_to_video and video_modify; all modes are supported by Omni 1.1 Flash.
Available options:
text_to_video, image_first_frame, image_first_last_frame, multimodal_reference, video_extend, video_modify Choose frames, reference images/videos, or one sourceVideo for editing/extension. Do not mix these input forms. Images: 20 MiB; MP4 videos: 64 MiB and at most 10 seconds each.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Response
Owned asynchronous video task
Example:
"omni:12345678-1234-4234-8234-123456789abc"
Available options:
gemini-omni-1.1-flash-preview, gemini-omni-flash-preview Available options:
queued, running, succeeded, failed Show child attributes
Show child attributes