Get API Key Get API
Docs

gemini-omni-1.1-flash-ext Video Generation

- gemini-omni-1.1-flash-ext unified video generation model

  • Supports Text-to-Video, single-image Image-to-Video, reference video, and 3-reference-image fusion
  • Supports 720p/1080p/4k resolution and 4/6/8/10 second duration
  • Asynchronous task API. Submit a task first, then query the result by task ID

Request example

curl --request POST \
  --url https://api.openveer.com/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "gemini-omni-1.1-flash-ext",
    "prompt": "a girl is dancing happily in a sunny garden",
    "duration": 10,
    "resolution": "1080p",
    "aspect_ratio": "9:16"
  }'

Response example

{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01KS1H7ZYSJWH1N779S2FSHTKA"
    }
  ]
}

Authentication

Authorization string

All requests require Bearer Token authentication.

Get an API key:

Visit the API Key management page to get your API key.

Add the following header when making requests:

Authorization: Bearer YOUR_API_KEY

Request Parameters

model string

Video generation model name. Must be gemini-omni-1.1-flash-ext.

nsfw_check boolean

Whether to run content moderation before submitting the video task.

  • true: use omni-moderation-latest to review prompts and input images
  • false or omitted: do not send a moderation request, adding no moderation cost or latency (default)
prompt string

Video content description. We recommend describing the scene, subject, action, environment, camera movement, visual style, and audio cues in detail.

Example: "a girl is dancing happily in a sunny garden"

duration integer

Video duration in seconds.

Supported values: 4, 6, 8, 10.

Warning



Other values such as 5 or 7 will return an invalid_duration error.

Warning



Do not pass duration when uploading a reference video. duration and video_urls cannot be passed at the same time.

resolution string

Video resolution. Values are case-insensitive.

Supported values:

  • 360p
  • 720p
  • 1080p
  • 4k

Warning



Other resolutions will return an invalid_resolution error.

aspect_ratio string

Video aspect ratio. Use it to control landscape or portrait output.

Common values:

  • 16:9 - landscape
  • 9:16 - portrait

Default: 16:9

size string

Compatibility field. It has the same meaning as aspect_ratio. If both are provided, keep them consistent.

generation_type string

Generation type, used to specify how the images are used.

Options:

  • frame - First-frame mode. image_urls can only contain 1 image, used as the first frame of the video.
  • reference - Reference mode. image_urls can contain 1 or 3 images, used as reference images.

Warning



When generation_type is frame, image_urls only supports 1 image; passing any other count returns an unsupported_image_count error.

image_urls string

">
Reference image URL array. You can omit it, provide 1 image, or provide 3 images, depending on generation_type:

  • Omitted or empty array: Text-to-Video
  • 1 image: single-image Image-to-Video
  • 3 images: reference image fusion (only supported when generation_type is reference)

Relationship with generation_type:

  • generation_type is frame: only 1 image can be uploaded.
  • generation_type is reference: 1 or 3 images can be uploaded.

Only publicly accessible image URLs are supported.

Warning



The first-frame plus last-frame mode with 2 images is not supported. Passing 2 images returns an unsupported_image_count error. 4 or more images have not been fully verified and are not recommended.

video_urls string

">
Reference video URL array. You can omit it or provide 1 reference video.

Only publicly accessible HTTP/HTTPS video URLs are supported. You can pass it together with image_urls: images are used as identity or composition references, while the video is used as motion reference.

Warning



gemini-omni-1.1-flash-ext supports only 0 or 1 reference video. Passing 2 or more videos returns an unsupported_video_count error.

Warning



Do not pass duration when passing video_urls. video_urls and duration cannot be passed at the same time.

Response

code integer

Response status code. Successful requests return 200.

data array
Returned task array.
status string

Initial task status. It is submitted after successful submission.

task_id string

Unique task ID for querying task status and result.

Query Task Result

Video generation is asynchronous. After submission, the API returns a task_id. Use the Get task status endpoint to query progress and results.

curl --request GET \
  --url https://api.openveer.com/v1/tasks/task_01KS1H7ZYSJWH1N779S2FSHTKA \
  --header 'Authorization: Bearer <token>'

We recommend waiting 5-10 seconds after submission before the first query, then polling every 5-10 seconds. A single task usually completes in about 3-5 minutes.

Successful Result Example

{
  "code": 200,
  "data": {
    "id": "task_01KS1H7ZYSJWH1N779S2FSHTKA",
    "status": "completed",
    "progress": 100,
    "created": 1779246294,
    "completed": 1779246534,
    "actual_time": 240,
    "estimated_time": 600,
    "cost": 0.4,
    "credits_cost": 4,
    "result": {
      "videos": [
        {
          "url": ["https://cdn.example.com/videos/abc.mp4"],
          "expires_at": 1779332760
        }
      ]
    }
  }
}

Failed Result Example

{
  "code": 200,
  "data": {
    "id": "task_01KS1H7ZYSJWH1N779S2FSHTKA",
    "status": "failed",
    "progress": 100,
    "created": 1779246294,
    "completed": 1779246534,
    "actual_time": 240,
    "estimated_time": 600,
    "cost": 0,
    "credits_cost": 0,
    "error": {
      "message": "invalid duration 7, must be one of 4/6/8/10",
      "code": "task_failed"
    }
  }
}

Use Cases

Scenario 1: Text-to-Video

{
  "model": "gemini-omni-1.1-flash-ext",
  "prompt": "a beautiful sunset over the ocean with seagulls flying",
  "duration": 6,
  "resolution": "720p",
  "aspect_ratio": "16:9"
}

Scenario 2: Single-Image Video

{
  "model": "gemini-omni-1.1-flash-ext",
  "prompt": "make the character smile and slowly turn around, cinematic camera motion",
  "duration": 6,
  "resolution": "1080p",
  "aspect_ratio": "9:16",
  "image_urls": ["https://example.com/character.jpg"]
}

Scenario 3: 3-Reference-Image Fusion

{
  "model": "gemini-omni-1.1-flash-ext",
  "prompt": "a creative scene combining these elements with smooth camera motion",
  "duration": 10,
  "resolution": "1080p",
  "aspect_ratio": "9:16",
  "image_urls": [
    "https://example.com/scene.jpg",
    "https://example.com/character.jpg",
    "https://example.com/product.jpg"
  ]
}

Scenario 4: 4K Short Video

{
  "model": "gemini-omni-1.1-flash-ext",
  "prompt": "close-up of a hummingbird hovering in front of a red flower",
  "duration": 4,
  "resolution": "4k",
  "aspect_ratio": "16:9"
}

Scenario 5: Reference Video Generation

{
  "model": "gemini-omni-1.1-flash-ext",
  "prompt": "the same scene but at night with neon lights",
  "resolution": "720p",
  "aspect_ratio": "16:9",
  "video_urls": ["https://example.com/reference.mp4"]
}

Error Codes

HTTP Error type Meaning Suggested action
400 invalid_request_error model is not gemini-omni-1.1-flash-ext, prompt is empty, or the JSON format is invalid Check the request body
400 invalid_duration duration is not 4, 6, 8, or 10 Use a supported duration
400 invalid_resolution resolution is not 720p, 1080p, or 4k Use a supported resolution
400 unsupported_image_count The number of image_urls is unsupported, commonly caused by passing 2 images Use 0, 1, or 3 images
400 unsupported_video_count The number of video_urls is unsupported, commonly caused by passing 2 or more videos Use 0 or 1 reference video
401 authentication_error Invalid token Check the Bearer Token
402 payment_required Insufficient balance Recharge and try again
429 rate_limit_error Rate limit exceeded Reduce concurrency or try again later

When a task fails, the task status API returns the failure reason in data.error. Common causes include temporary upstream quota exhaustion, content moderation failure, or upstream timeout.

This documentation is built and hosted on Mintlify, a developer documentation platform.