---
title: Resolution and duration — Gemini Omni Flash 1.2 | Runware Docs
url: https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/resolution-and-duration
description: "How to size and time clips with Gemini Omni Flash 1.2: resolution tiers from 360p to 4K, 16:9 and 9:16 pairs, cost per second, and the duration range of each mode."
---
### [Introduction](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/resolution-and-duration#introduction)

Gemini Omni Flash 1.2 renders every clip at one of **four resolution tiers**, from 360p to 4K, in landscape 16:9 or portrait 9:16. A clip runs 3 to 15 seconds, and how much of that range you get **depends on the inputs attached**.

[Watch video](https://runware.ai/docs/assets/hero.QfxwA37O.mp4)

> **Prompt**: A single continuous walkthrough of a luxury hotel suite in late-afternoon light. The camera glides in through open double doors, moves past a living area with a cream sofa, a walnut coffee table and a vase of white tulips, then turns into the bedroom, where a king bed with crisp white linen faces floor-to-ceiling windows over a city skyline. Smooth gimbal movement at chest height, photoreal, warm natural light. Audio: soft room tone and a faint city hum through the glass, no music, no dialogue.

The tier sets **how much detail each frame holds** and what every second costs. Most of the work therefore happens at 360p: **settle the prompt there**, then render it once at the tier you deliver.

### [Setting the size](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/resolution-and-duration#setting-the-size)

A request sets its size in one of two ways:

- `resolution` names **the tier alone**: `360p`, `720p`, `1080p` or `4K`. On a request with only a prompt, the clip comes out 16:9.
- A `width`/`height` pair names **the tier and the shape together**.

Send **one or the other**: a request that carries `resolution` together with `width` or `height` is rejected. The walkthrough at the top of the page asks for the 4K tier by name:

**TypeScript**:

```typescript
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'google:gemini@omni-flash-1.2',
  positivePrompt: 'A single continuous walkthrough of a luxury hotel suite in late-afternoon light. The camera glides in through open double doors, moves past a living area with a cream sofa, a walnut coffee table and a vase of white tulips, then turns into the bedroom, where a king bed with crisp white linen faces floor-to-ceiling windows over a city skyline. Smooth gimbal movement at chest height, photoreal, warm natural light. Audio: soft room tone and a faint city hum through the glass, no music, no dialogue.',
  resolution: '4K',
  duration: 8
})
```

**Python**:

```python
import asyncio
import os

from runware import Runware

async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "google:gemini@omni-flash-1.2",
            "positivePrompt": "A single continuous walkthrough of a luxury hotel suite in late-afternoon light. The camera glides in through open double doors, moves past a living area with a cream sofa, a walnut coffee table and a vase of white tulips, then turns into the bedroom, where a king bed with crisp white linen faces floor-to-ceiling windows over a city skyline. Smooth gimbal movement at chest height, photoreal, warm natural light. Audio: soft room tone and a faint city hum through the glass, no music, no dialogue.",
            "resolution": "4K",
            "duration": 8
        })

asyncio.run(main())
```

**cURL**:

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "videoInference",
      "taskUUID": "06e828d2-7bd9-4397-89c8-396642bc0f2f",
      "model": "google:gemini@omni-flash-1.2",
      "positivePrompt": "A single continuous walkthrough of a luxury hotel suite in late-afternoon light. The camera glides in through open double doors, moves past a living area with a cream sofa, a walnut coffee table and a vase of white tulips, then turns into the bedroom, where a king bed with crisp white linen faces floor-to-ceiling windows over a city skyline. Smooth gimbal movement at chest height, photoreal, warm natural light. Audio: soft room tone and a faint city hum through the glass, no music, no dialogue.",
      "resolution": "4K",
      "duration": 8
    }
  ]'
```

**CLI**:

```bash
runware run google:gemini@omni-flash-1.2 \
  positivePrompt="A single continuous walkthrough of a luxury hotel suite in late-afternoon light. The camera glides in through open double doors, moves past a living area with a cream sofa, a walnut coffee table and a vase of white tulips, then turns into the bedroom, where a king bed with crisp white linen faces floor-to-ceiling windows over a city skyline. Smooth gimbal movement at chest height, photoreal, warm natural light. Audio: soft room tone and a faint city hum through the glass, no music, no dialogue." \
  resolution=4K \
  duration=8
```

**JSON**:

```json
{
  "taskType": "videoInference",
  "taskUUID": "06e828d2-7bd9-4397-89c8-396642bc0f2f",
  "model": "google:gemini@omni-flash-1.2",
  "positivePrompt": "A single continuous walkthrough of a luxury hotel suite in late-afternoon light. The camera glides in through open double doors, moves past a living area with a cream sofa, a walnut coffee table and a vase of white tulips, then turns into the bedroom, where a king bed with crisp white linen faces floor-to-ceiling windows over a city skyline. Smooth gimbal movement at chest height, photoreal, warm natural light. Audio: soft room tone and a faint city hum through the glass, no music, no dialogue.",
  "resolution": "4K",
  "duration": 8
}
```

A pair has to be **one of eight**, a 16:9 and a 9:16 for each tier:

| Tier | 16:9 | 9:16 |
| --- | --- | --- |
| 360p | 640 × 360 | 360 × 640 |
| 720p | 1280 × 720 | 720 × 1280 |
| 1080p | 1920 × 1080 | 1080 × 1920 |
| 4K | 3840 × 2160 | 2160 × 3840 |

Any other pair is rejected, **square sizes included**.

A request that carries `inputs.video` takes **the tier by name only**. Edits and extensions reject `width` and `height`, so set `resolution` there. [Editing video](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/editing-video) and [Extending video](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/extending-video) cover both requests.

#### [Vertical video](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/resolution-and-duration#vertical-video)

A 9:16 clip **needs the portrait pair**, since `resolution` alone gives 16:9 on a prompt-only request. The model renders the clip **natively in portrait** and composes the shot for a phone screen, so nothing is cropped out of a wider frame:

**TypeScript**:

```typescript
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'google:gemini@omni-flash-1.2',
  positivePrompt: 'A vertical social video for a fashion brand. A woman in a camel wool coat over a cream knit dress walks toward the camera along a sunlit city sidewalk, the coat swinging open with each step, then stops, turns her shoulder and looks back at the camera. Single continuous shot, the camera tracking backward at waist height with full-length framing. Bright morning light, photoreal. Audio: heels on pavement, light street ambience and an upbeat electronic beat, no dialogue.',
  width: 1080,
  height: 1920,
  duration: 8
})
```

**Python**:

```python
import asyncio
import os

from runware import Runware

async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "google:gemini@omni-flash-1.2",
            "positivePrompt": "A vertical social video for a fashion brand. A woman in a camel wool coat over a cream knit dress walks toward the camera along a sunlit city sidewalk, the coat swinging open with each step, then stops, turns her shoulder and looks back at the camera. Single continuous shot, the camera tracking backward at waist height with full-length framing. Bright morning light, photoreal. Audio: heels on pavement, light street ambience and an upbeat electronic beat, no dialogue.",
            "width": 1080,
            "height": 1920,
            "duration": 8
        })

asyncio.run(main())
```

**cURL**:

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "videoInference",
      "taskUUID": "cad665fe-298c-4c6d-b4c0-ccf9228e8a15",
      "model": "google:gemini@omni-flash-1.2",
      "positivePrompt": "A vertical social video for a fashion brand. A woman in a camel wool coat over a cream knit dress walks toward the camera along a sunlit city sidewalk, the coat swinging open with each step, then stops, turns her shoulder and looks back at the camera. Single continuous shot, the camera tracking backward at waist height with full-length framing. Bright morning light, photoreal. Audio: heels on pavement, light street ambience and an upbeat electronic beat, no dialogue.",
      "width": 1080,
      "height": 1920,
      "duration": 8
    }
  ]'
```

**CLI**:

```bash
runware run google:gemini@omni-flash-1.2 \
  positivePrompt="A vertical social video for a fashion brand. A woman in a camel wool coat over a cream knit dress walks toward the camera along a sunlit city sidewalk, the coat swinging open with each step, then stops, turns her shoulder and looks back at the camera. Single continuous shot, the camera tracking backward at waist height with full-length framing. Bright morning light, photoreal. Audio: heels on pavement, light street ambience and an upbeat electronic beat, no dialogue." \
  width=1080 \
  height=1920 \
  duration=8
```

**JSON**:

```json
{
  "taskType": "videoInference",
  "taskUUID": "cad665fe-298c-4c6d-b4c0-ccf9228e8a15",
  "model": "google:gemini@omni-flash-1.2",
  "positivePrompt": "A vertical social video for a fashion brand. A woman in a camel wool coat over a cream knit dress walks toward the camera along a sunlit city sidewalk, the coat swinging open with each step, then stops, turns her shoulder and looks back at the camera. Single continuous shot, the camera tracking backward at waist height with full-length framing. Bright morning light, photoreal. Audio: heels on pavement, light street ambience and an upbeat electronic beat, no dialogue.",
  "width": 1080,
  "height": 1920,
  "duration": 8
}
```

[Watch video](https://runware.ai/docs/assets/output-vertical.CTi1Sw06.mp4)

> **Prompt**: A vertical social video for a fashion brand. A woman in a camel wool coat over a cream knit dress walks toward the camera along a sunlit city sidewalk, the coat swinging open with each step, then stops, turns her shoulder and looks back at the camera. Single continuous shot, the camera tracking backward at waist height with full-length framing. Bright morning light, photoreal. Audio: heels on pavement, light street ambience and an upbeat electronic beat, no dialogue.

### [Resolution tiers](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/resolution-and-duration#resolution-tiers)

The model takes no `seed`, so **every render is a new take**, including the same prompt at another tier. This is the 360p request, and the other three change `resolution` and nothing else:

**TypeScript**:

```typescript
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'google:gemini@omni-flash-1.2',
  positivePrompt: 'A product video of an unbranded white knit running shoe with a plain one-piece knit upper, a smooth unmarked white midsole and a plain toe, on a gray concrete plinth against a dark studio backdrop. A narrow band of light sweeps slowly across the shoe from left to right, raking over the knit texture, the laces and a woven tongue label that reads "AERO KNIT", the only marking on the shoe, with no other logos or brand marks. Locked-off camera in a tight three-quarter close-up, single continuous shot. Audio: a low studio hum and a soft whoosh as the light passes, no music.',
  resolution: '360p',
  duration: 6
})
```

**Python**:

```python
import asyncio
import os

from runware import Runware

async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "google:gemini@omni-flash-1.2",
            "positivePrompt": "A product video of an unbranded white knit running shoe with a plain one-piece knit upper, a smooth unmarked white midsole and a plain toe, on a gray concrete plinth against a dark studio backdrop. A narrow band of light sweeps slowly across the shoe from left to right, raking over the knit texture, the laces and a woven tongue label that reads \"AERO KNIT\", the only marking on the shoe, with no other logos or brand marks. Locked-off camera in a tight three-quarter close-up, single continuous shot. Audio: a low studio hum and a soft whoosh as the light passes, no music.",
            "resolution": "360p",
            "duration": 6
        })

asyncio.run(main())
```

**cURL**:

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "videoInference",
      "taskUUID": "01c2a525-7010-4067-80d2-498f8cb5cc74",
      "model": "google:gemini@omni-flash-1.2",
      "positivePrompt": "A product video of an unbranded white knit running shoe with a plain one-piece knit upper, a smooth unmarked white midsole and a plain toe, on a gray concrete plinth against a dark studio backdrop. A narrow band of light sweeps slowly across the shoe from left to right, raking over the knit texture, the laces and a woven tongue label that reads \"AERO KNIT\", the only marking on the shoe, with no other logos or brand marks. Locked-off camera in a tight three-quarter close-up, single continuous shot. Audio: a low studio hum and a soft whoosh as the light passes, no music.",
      "resolution": "360p",
      "duration": 6
    }
  ]'
```

**CLI**:

```bash
runware run google:gemini@omni-flash-1.2 \
  positivePrompt="A product video of an unbranded white knit running shoe with a plain one-piece knit upper, a smooth unmarked white midsole and a plain toe, on a gray concrete plinth against a dark studio backdrop. A narrow band of light sweeps slowly across the shoe from left to right, raking over the knit texture, the laces and a woven tongue label that reads \"AERO KNIT\", the only marking on the shoe, with no other logos or brand marks. Locked-off camera in a tight three-quarter close-up, single continuous shot. Audio: a low studio hum and a soft whoosh as the light passes, no music." \
  resolution=360p \
  duration=6
```

**JSON**:

```json
{
  "taskType": "videoInference",
  "taskUUID": "01c2a525-7010-4067-80d2-498f8cb5cc74",
  "model": "google:gemini@omni-flash-1.2",
  "positivePrompt": "A product video of an unbranded white knit running shoe with a plain one-piece knit upper, a smooth unmarked white midsole and a plain toe, on a gray concrete plinth against a dark studio backdrop. A narrow band of light sweeps slowly across the shoe from left to right, raking over the knit texture, the laces and a woven tongue label that reads \"AERO KNIT\", the only marking on the shoe, with no other logos or brand marks. Locked-off camera in a tight three-quarter close-up, single continuous shot. Audio: a low studio hum and a soft whoosh as the light passes, no music.",
  "resolution": "360p",
  "duration": 6
}
```

**360p**:

[Watch video](https://runware.ai/docs/assets/output-360p.CaqA4F-6.mp4)

> **Prompt**: A product video of an unbranded white knit running shoe with a plain one-piece knit upper, a smooth unmarked white midsole and a plain toe, on a gray concrete plinth against a dark studio backdrop. A narrow band of light sweeps slowly across the shoe from left to right, raking over the knit texture, the laces and a woven tongue label that reads "AERO KNIT", the only marking on the shoe, with no other logos or brand marks. Locked-off camera in a tight three-quarter close-up, single continuous shot. Audio: a low studio hum and a soft whoosh as the light passes, no music.

**720p**:

[Watch video](https://runware.ai/docs/assets/output-720p.ChFcYnhv.mp4)

> **Prompt**: A product video of an unbranded white knit running shoe with a plain one-piece knit upper, a smooth unmarked white midsole and a plain toe, on a gray concrete plinth against a dark studio backdrop. A narrow band of light sweeps slowly across the shoe from left to right, raking over the knit texture, the laces and a woven tongue label that reads "AERO KNIT", the only marking on the shoe, with no other logos or brand marks. Locked-off camera in a tight three-quarter close-up, single continuous shot. Audio: a low studio hum and a soft whoosh as the light passes, no music.

**1080p**:

[Watch video](https://runware.ai/docs/assets/output-1080p.BxUOqkxc.mp4)

> **Prompt**: A product video of an unbranded white knit running shoe with a plain one-piece knit upper, a smooth unmarked white midsole and a plain toe, on a gray concrete plinth against a dark studio backdrop. A narrow band of light sweeps slowly across the shoe from left to right, raking over the knit texture, the laces and a woven tongue label that reads "AERO KNIT", the only marking on the shoe, with no other logos or brand marks. Locked-off camera in a tight three-quarter close-up, single continuous shot. Audio: a low studio hum and a soft whoosh as the light passes, no music.

**4K**:

[Watch video](https://runware.ai/docs/assets/output-4k.CtO-MIqQ.mp4)

> **Prompt**: A product video of an unbranded white knit running shoe with a plain one-piece knit upper, a smooth unmarked white midsole and a plain toe, on a gray concrete plinth against a dark studio backdrop. A narrow band of light sweeps slowly across the shoe from left to right, raking over the knit texture, the laces and a woven tongue label that reads "AERO KNIT", the only marking on the shoe, with no other logos or brand marks. Locked-off camera in a tight three-quarter close-up, single continuous shot. Audio: a low studio hum and a soft whoosh as the light passes, no music.

The player fits every take to the width of the page, which **hides most of the gap** between tiers. The frame at 3 seconds, pulled from the 360p and 4K files and cropped to the same region at full size, shows it:

![A close crop of the 360p take, where the laces and the perforated knit upper are soft and smeared and no individual knit loops can be made out](https://runware.ai/docs/assets/crop-360p.CV5O5mQ5_ZDs9EC.jpg)

*360p take, 192 × 108 crop*

> **Prompt**: A product video of an unbranded white knit running shoe with a plain one-piece knit upper, a smooth unmarked white midsole and a plain toe, on a gray concrete plinth against a dark studio backdrop. A narrow band of light sweeps slowly across the shoe from left to right, raking over the knit texture, the laces and a woven tongue label that reads "AERO KNIT", the only marking on the shoe, with no other logos or brand marks. Locked-off camera in a tight three-quarter close-up, single continuous shot. Audio: a low studio hum and a soft whoosh as the light passes, no music.

![The same crop of the 4K take, where the flat laces, the perforated mesh and the individual knit loops of the upper stay sharp on both sides of the band of light](https://runware.ai/docs/assets/crop-4k.B-ptO3FQ_1IV0OX.jpg)

*4K take, 1152 × 648 crop*

> **Prompt**: A product video of an unbranded white knit running shoe with a plain one-piece knit upper, a smooth unmarked white midsole and a plain toe, on a gray concrete plinth against a dark studio backdrop. A narrow band of light sweeps slowly across the shoe from left to right, raking over the knit texture, the laces and a woven tongue label that reads "AERO KNIT", the only marking on the shoe, with no other logos or brand marks. Locked-off camera in a tight three-quarter close-up, single continuous shot. Audio: a low studio hum and a soft whoosh as the light passes, no music.

The 4K crop holds **36 times the pixels** of the 360p crop for the same patch of the frame, which is what fine texture needs to resolve. Pick the tier by **where the clip ends up**:

- **360p:** drafts, while the prompt is still changing.
- **720p:** previews and review links.
- **1080p:** standard delivery in social feeds and on product pages.
- **4K:** large screens and footage you plan to crop or reframe in the edit.

### [Cost per second](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/resolution-and-duration#cost-per-second)

Each second of output is **billed at the tier's rate**, so the cost of a clip moves with `resolution` and `duration` together:

| Tier | Per second | 6-second clip | 15-second clip |
| --- | --- | --- | --- |
| 360p | $0.02 | $0.12 | $0.30 |
| 720p | $0.07 | $0.42 | $1.05 |
| 1080p | $0.10 | $0.60 | $1.50 |
| 4K | $0.21 | $1.26 | $3.15 |

A second of 4K costs **more than ten times** a second of 360p. Ten 360p drafts of a 6-second clip come to $1.20, less than a single 4K render of the same clip.

#### [Drafting at 360p](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/resolution-and-duration#drafting-at-360p)

1. **Draft at 360p and at the final length.** A different `duration` paces the beats differently, so keep it fixed from draft to final. For vertical work, draft with the 360 × 640 pair.
    
2. **Revise the prompt until the draft lands.** Judge what the prompt controls: the beats, the camera move, the framing and the audio.
    
3. **Render once at the delivery tier.** Change `resolution`, or the pair, and nothing else.
    

The delivery render is **a new take of the same prompt**, not an upscale of the draft, as the four tiers above show. What carries over is the prompt, so settle everything it controls before you pay for the final.

### [Clip length](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/resolution-and-duration#clip-length)

`duration` is set in **whole seconds** and defaults to 6. Its range **depends on the mode**, which the attached inputs decide:

| Mode | Inputs | Duration |
| --- | --- | --- |
| Text-to-video | A prompt alone | 3 to 15 seconds |
| [One first frame](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/first-and-last-frame) | One image in `inputs.frameImages` | 3 to 15 seconds |
| [First and last frames](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/first-and-last-frame) | Two images in `inputs.frameImages` | 3 to 10 seconds |
| [References](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/reference-driven-video) | `inputs.referenceImages`, `inputs.referenceVideos` or both | 3 to 10 seconds |
| [Extend](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/extending-video) | `inputs.video` with `duration` | 3 to 10 seconds added |
| [Edit](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/editing-video) | `inputs.video` without `duration` | Left out |

A value outside the mode's range is rejected. Two modes read `duration` differently:

- **Extend:** it is **the length added** to a source clip of 1 to 27 seconds. The result is the source plus the continuation.
- **Edit:** the request leaves `duration` out, and **adding one turns it into an extension**. The source clip runs 3 to 15 seconds.

#### [Matching beats to seconds](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/resolution-and-duration#matching-beats-to-seconds)

A **beat** is one action or one shot. Count them before you set `duration`, and **give each one time to play out**. A single beat fits the short end of the range, here in 4 seconds:

[Watch video](https://runware.ai/docs/assets/output-short.DJ4npBmD.mp4)

> **Prompt**: A red convertible carrying a young couple rounds a bend on a coastal cliff road above a turquoise sea, filmed by a drone tracking alongside it. Single continuous shot, bright midday sun, photoreal travel footage. Audio: the engine and the wind, waves far below, no music, no dialogue.

Four beats fill **the text-to-video maximum** of 15 seconds:

**TypeScript**:

```typescript
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'google:gemini@omni-flash-1.2',
  positivePrompt: 'A travel video of a weekend road trip on a Mediterranean coast, in four shots. First, a drone follows a red convertible carrying a young couple along a cliff road above a turquoise sea. Second, the couple walk up a narrow stepped street in a whitewashed hilltop village lined with bougainvillea. Third, they share a plate of grilled fish at a terrace table above the harbor. Last, they walk barefoot along the beach at sunset as the camera pulls back to a wide shot of the bay. Photoreal, warm natural light. Audio: an upbeat acoustic guitar track throughout, with wind, footsteps and waves underneath, no dialogue.',
  resolution: '1080p',
  duration: 15
})
```

**Python**:

```python
import asyncio
import os

from runware import Runware

async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "google:gemini@omni-flash-1.2",
            "positivePrompt": "A travel video of a weekend road trip on a Mediterranean coast, in four shots. First, a drone follows a red convertible carrying a young couple along a cliff road above a turquoise sea. Second, the couple walk up a narrow stepped street in a whitewashed hilltop village lined with bougainvillea. Third, they share a plate of grilled fish at a terrace table above the harbor. Last, they walk barefoot along the beach at sunset as the camera pulls back to a wide shot of the bay. Photoreal, warm natural light. Audio: an upbeat acoustic guitar track throughout, with wind, footsteps and waves underneath, no dialogue.",
            "resolution": "1080p",
            "duration": 15
        })

asyncio.run(main())
```

**cURL**:

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "videoInference",
      "taskUUID": "5e5f8e03-4616-4d6d-b47e-2d45dc573779",
      "model": "google:gemini@omni-flash-1.2",
      "positivePrompt": "A travel video of a weekend road trip on a Mediterranean coast, in four shots. First, a drone follows a red convertible carrying a young couple along a cliff road above a turquoise sea. Second, the couple walk up a narrow stepped street in a whitewashed hilltop village lined with bougainvillea. Third, they share a plate of grilled fish at a terrace table above the harbor. Last, they walk barefoot along the beach at sunset as the camera pulls back to a wide shot of the bay. Photoreal, warm natural light. Audio: an upbeat acoustic guitar track throughout, with wind, footsteps and waves underneath, no dialogue.",
      "resolution": "1080p",
      "duration": 15
    }
  ]'
```

**CLI**:

```bash
runware run google:gemini@omni-flash-1.2 \
  positivePrompt="A travel video of a weekend road trip on a Mediterranean coast, in four shots. First, a drone follows a red convertible carrying a young couple along a cliff road above a turquoise sea. Second, the couple walk up a narrow stepped street in a whitewashed hilltop village lined with bougainvillea. Third, they share a plate of grilled fish at a terrace table above the harbor. Last, they walk barefoot along the beach at sunset as the camera pulls back to a wide shot of the bay. Photoreal, warm natural light. Audio: an upbeat acoustic guitar track throughout, with wind, footsteps and waves underneath, no dialogue." \
  resolution=1080p \
  duration=15
```

**JSON**:

```json
{
  "taskType": "videoInference",
  "taskUUID": "5e5f8e03-4616-4d6d-b47e-2d45dc573779",
  "model": "google:gemini@omni-flash-1.2",
  "positivePrompt": "A travel video of a weekend road trip on a Mediterranean coast, in four shots. First, a drone follows a red convertible carrying a young couple along a cliff road above a turquoise sea. Second, the couple walk up a narrow stepped street in a whitewashed hilltop village lined with bougainvillea. Third, they share a plate of grilled fish at a terrace table above the harbor. Last, they walk barefoot along the beach at sunset as the camera pulls back to a wide shot of the bay. Photoreal, warm natural light. Audio: an upbeat acoustic guitar track throughout, with wind, footsteps and waves underneath, no dialogue.",
  "resolution": "1080p",
  "duration": 15
}
```

[Watch video](https://runware.ai/docs/assets/output-sequence.DtycbtGv.mp4)

> **Prompt**: A travel video of a weekend road trip on a Mediterranean coast, in four shots. First, a drone follows a red convertible carrying a young couple along a cliff road above a turquoise sea. Second, the couple walk up a narrow stepped street in a whitewashed hilltop village lined with bougainvillea. Third, they share a plate of grilled fish at a terrace table above the harbor. Last, they walk barefoot along the beach at sunset as the camera pulls back to a wide shot of the bay. Photoreal, warm natural light. Audio: an upbeat acoustic guitar track throughout, with wind, footsteps and waves underneath, no dialogue.

Fifteen seconds over four shots leaves **about four seconds** for each, close to the length of the single beat above. The modes that stop at 10 seconds hold fewer beats, so plan two or three there. [Prompting](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/prompting) covers timing each beat to the second.

### [Tips](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/resolution-and-duration#tips)

1. **Send the portrait pair for vertical clips.** `resolution` on its own renders a prompt-only request at 16:9.
    
2. **Draft at 360p.** A 6-second draft costs $0.12, against $1.26 at 4K.
    
3. **Keep the length fixed from draft to final.** The beats are paced to `duration`.
    
4. **Count the beats before setting the length.** Give each a few seconds, and use fewer of them in the modes that stop at 10 seconds.