---
title: Reference images and videos — Gemini Omni Flash 1.2 | Runware Docs
url: https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/reference-driven-video
description: How to build new clips from reference images and videos with Gemini Omni Flash 1.2, carrying a person, a product, a location or an illustration style into the shot.
---
### [Introduction](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/reference-driven-video#introduction)

Gemini Omni Flash 1.2 can **build a new clip around reference images**: a portrait of a person, a product packshot, a photo of a location, or a brand's illustration. Each image goes in with **one job**, and the prompt describes the shot they all play out in. A reference video does the same for a person, and it is the input that holds a likeness best.

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

> **Prompt**: Use the woman in the portrait as the presenter and keep her face and hair. The product is the serum bottle from the packshot: keep its shape and label exactly. Use the bathroom photo as the location. In one continuous handheld shot that stays at waist-up framing the whole time, with no close-up insert, she holds the bottle up beside her face, squeezes a drop from the dropper onto the back of her hand, and smiles at the camera. She says: "Two drops every morning. That's my whole routine." Audio: her voice, close and natural, over soft bathroom room tone. No music, no subtitles, no on-screen text, no cuts.

**Presenter**:

![Waist-up portrait of a woman with shoulder-length dark curly hair and light freckles in a sage-green knit top against a light gray backdrop](https://runware.ai/docs/assets/source-presenter.BYQt0p4z_Z1a1fKD.jpg)

> **Prompt**: Waist-up portrait of a woman in her late twenties with shoulder-length dark curly hair, warm brown skin and light freckles, wearing a sage-green ribbed knit top, standing against a plain light gray studio backdrop and looking into the lens with a relaxed smile. Soft even light, natural skin texture, photoreal, 85mm lens. No text, no logos.

**Product**:

![A frosted glass serum bottle with a white dropper cap and a white label reading VERAE Vitamin C Serum, on white](https://runware.ai/docs/assets/source-serum.UkTs_MOC_2uV1gH.jpg)

> **Prompt**: Product packshot of a frosted glass serum bottle with a white dropper cap, standing upright and centered on a plain white background. A minimal white label on the bottle reads "VERAE" in thin black capitals, with "Vitamin C Serum" in small type beneath it. Soft studio light, a gentle contact shadow, photoreal e-commerce photograph.

**Location**:

![A bright bathroom with a white oval basin on a light oak vanity, a round mirror, matte white tiles and a trailing plant on a shelf](https://runware.ai/docs/assets/source-bathroom.DegjfBH7_1Uyspr.jpg)

> **Prompt**: A bright modern bathroom seen at eye level: a white oval basin on a light oak vanity, a round mirror above it, matte white wall tiles, a trailing pothos on a small shelf, and soft morning daylight from a frosted window. No people, nothing on the counter, no text. Photoreal interior photograph.

The model **rebuilds what each image shows** inside the shot the prompt asks for, so none of the three becomes a frame of the clip. To bring a reference image into footage you already have, use it in an edit instead, as in [Replacing elements with reference images](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/replacing-with-reference-images).

### [Request shape](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/reference-driven-video#request-shape)

Reference images go in `inputs.referenceImages`, **up to 10 per request**, and reference videos go in `inputs.referenceVideos`, up to three. The hero request sends three images:

**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: 'Use the woman in the portrait as the presenter and keep her face and hair. The product is the serum bottle from the packshot: keep its shape and label exactly. Use the bathroom photo as the location. In one continuous handheld shot that stays at waist-up framing the whole time, with no close-up insert, she holds the bottle up beside her face, squeezes a drop from the dropper onto the back of her hand, and smiles at the camera. She says: "Two drops every morning. That\'s my whole routine." Audio: her voice, close and natural, over soft bathroom room tone. No music, no subtitles, no on-screen text, no cuts.',
  width: 720,
  height: 1280,
  duration: 8,
  inputs: {
    referenceImages: [
      'https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-presenter.jpg',
      'https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-serum.jpg',
      'https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-bathroom.jpg'
    ]
  }
})
```

**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": "Use the woman in the portrait as the presenter and keep her face and hair. The product is the serum bottle from the packshot: keep its shape and label exactly. Use the bathroom photo as the location. In one continuous handheld shot that stays at waist-up framing the whole time, with no close-up insert, she holds the bottle up beside her face, squeezes a drop from the dropper onto the back of her hand, and smiles at the camera. She says: \"Two drops every morning. That's my whole routine.\" Audio: her voice, close and natural, over soft bathroom room tone. No music, no subtitles, no on-screen text, no cuts.",
            "width": 720,
            "height": 1280,
            "duration": 8,
            "inputs": {
                "referenceImages": [
                    "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-presenter.jpg",
                    "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-serum.jpg",
                    "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-bathroom.jpg"
                ]
            }
        })

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": "1cb9d9c2-0342-4f81-bcff-6fb2f6fa477a",
      "model": "google:gemini@omni-flash-1.2",
      "positivePrompt": "Use the woman in the portrait as the presenter and keep her face and hair. The product is the serum bottle from the packshot: keep its shape and label exactly. Use the bathroom photo as the location. In one continuous handheld shot that stays at waist-up framing the whole time, with no close-up insert, she holds the bottle up beside her face, squeezes a drop from the dropper onto the back of her hand, and smiles at the camera. She says: \"Two drops every morning. That's my whole routine.\" Audio: her voice, close and natural, over soft bathroom room tone. No music, no subtitles, no on-screen text, no cuts.",
      "width": 720,
      "height": 1280,
      "duration": 8,
      "inputs": {
        "referenceImages": [
          "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-presenter.jpg",
          "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-serum.jpg",
          "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-bathroom.jpg"
        ]
      }
    }
  ]'
```

**CLI**:

```bash
runware run google:gemini@omni-flash-1.2 \
  positivePrompt="Use the woman in the portrait as the presenter and keep her face and hair. The product is the serum bottle from the packshot: keep its shape and label exactly. Use the bathroom photo as the location. In one continuous handheld shot that stays at waist-up framing the whole time, with no close-up insert, she holds the bottle up beside her face, squeezes a drop from the dropper onto the back of her hand, and smiles at the camera. She says: \"Two drops every morning. That's my whole routine.\" Audio: her voice, close and natural, over soft bathroom room tone. No music, no subtitles, no on-screen text, no cuts." \
  width=720 \
  height=1280 \
  duration=8 \
  inputs.referenceImages.0=https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-presenter.jpg \
  inputs.referenceImages.1=https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-serum.jpg \
  inputs.referenceImages.2=https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-bathroom.jpg
```

**JSON**:

```json
{
  "taskType": "videoInference",
  "taskUUID": "1cb9d9c2-0342-4f81-bcff-6fb2f6fa477a",
  "model": "google:gemini@omni-flash-1.2",
  "positivePrompt": "Use the woman in the portrait as the presenter and keep her face and hair. The product is the serum bottle from the packshot: keep its shape and label exactly. Use the bathroom photo as the location. In one continuous handheld shot that stays at waist-up framing the whole time, with no close-up insert, she holds the bottle up beside her face, squeezes a drop from the dropper onto the back of her hand, and smiles at the camera. She says: \"Two drops every morning. That's my whole routine.\" Audio: her voice, close and natural, over soft bathroom room tone. No music, no subtitles, no on-screen text, no cuts.",
  "width": 720,
  "height": 1280,
  "duration": 8,
  "inputs": {
    "referenceImages": [
      "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-presenter.jpg",
      "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-serum.jpg",
      "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-bathroom.jpg"
    ]
  }
}
```

With references attached, `duration` **runs from 3 to 10 seconds**, with 6 as the default. [Resolution and duration](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/resolution-and-duration) has the range for every mode. This request asks for 720 × 1280, the vertical 9:16 size at 720p.

Each reference image can be up to 4096 px per side and 20 MiB. References and `inputs.frameImages` are **separate modes**, and a request that sends both is rejected. A clip that has to open on an exact picture belongs in [First and last frame](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/first-and-last-frame).

### [Prompting with references](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/reference-driven-video#prompting-with-references)

The prompt has to **say which image is which, then what to take from it**. Point at each image by what it shows. Plain language is enough, with no tags or numbered placeholders.

The hero prompt gives each image one sentence:

- **The portrait** is the presenter: "keep her face and hair."
- **The packshot** is the product: "keep its shape and label exactly."
- **The bathroom photo** is the location.

Her hair color and the label's typeface **come from the images**, so the rest of the prompt goes to **what no image shows**: the framing, the action, the line she says, and the sound.

The model often cuts a clip into several shots on its own. **Asking for one continuous shot** keeps it to a single take, which suits a creator-style ad.

### [Illustrated characters and styles](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/reference-driven-video#illustrated-characters-and-styles)

References work the same way for artwork. A brand's mascot and a frame of its motion-design style go in as two images, **one for who appears and one for how the clip is drawn**:

```text
Use the piggy bank from the character sheet as the only character and keep its design. Draw the whole clip in the style of the desk illustration, keeping its palette and line work. In one continuous shot with no transitions, on a desk where a large smartphone lies beside the laptop, the piggy bank hops from the desk onto the phone, coins fall into its slot one by one while the phone screen glows a little brighter with each coin, and it jumps for joy after the last coin. Audio: an upbeat light synth music bed, a soft clink for each coin, and a bright chime after the last coin. No voices, no text or numbers anywhere in the frame.
```

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

> **Prompt**: Use the piggy bank from the character sheet as the only character and keep its design. Draw the whole clip in the style of the desk illustration, keeping its palette and line work. In one continuous shot with no transitions, on a desk where a large smartphone lies beside the laptop, the piggy bank hops from the desk onto the phone, coins fall into its slot one by one while the phone screen glows a little brighter with each coin, and it jumps for joy after the last coin. Audio: an upbeat light synth music bed, a soft clink for each coin, and a bright chime after the last coin. No voices, no text or numbers anywhere in the frame.

**Mascot**:

![Character sheet of a coral-pink piggy bank mascot with a gold coin slot, in front and side views on white](https://runware.ai/docs/assets/source-mascot.kUpwJxCz_Z12tMKk.jpg)

> **Prompt**: Character sheet for the mascot of a budgeting app: a round coral-pink piggy bank with a gold coin slot on its back, short stubby legs, small rounded ears, and big friendly eyes. Two views side by side on a plain white background, front and side profile, at the same size. Flat 2D vector illustration with clean navy outlines and no shading. No text, no labels.

**Style**:

![Flat illustration of a desk with a laptop showing a pie chart, a wall calendar, a lamp and a plant, in coral, teal, cream and navy](https://runware.ai/docs/assets/source-style.DTCfS3-O_9l4Or.jpg)

> **Prompt**: A frame from a flat 2D motion-design explainer for a budgeting app: a stylized desk with an open laptop showing a simple pie chart, a wall calendar, a desk lamp, and a potted plant, with rounded geometric shapes and small confetti dots around them. Limited palette of coral pink, teal, cream, and deep navy, flat colors with no gradients, thin uniform navy outlines. No characters, no text, no numbers.

Keep the character and the style in **separate images**. Put the mascot alone on a plain background and **leave characters out of the style frame**, so each image has one job the prompt can name.

### [Reference videos](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/reference-driven-video#reference-videos)

For a person's likeness, **a reference video works best**. Pick a clip of up to 30 seconds where the face stays in frame and turns through a few angles.

The model **takes only the picture from a reference video**, so every sound in the new clip comes from the prompt. The field takes up to three videos, but **one per request** gives the steadiest results. Several at once can degrade the output.

**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: 'The instructor is the woman in the reference video. Keep her face and hair. She leads a set of kettlebell swings on a rooftop terrace at sunrise, wearing a black training top and black leggings, with the city skyline behind her. Full-body vertical framing, one continuous shot with a slow push-in. She finishes the set, sets the kettlebell down, and gives the camera a thumbs-up. Audio: her steady breathing, the thud of the kettlebell on the deck, a light breeze, and an upbeat electronic music bed. No dialogue, no on-screen text.',
  width: 720,
  height: 1280,
  duration: 8,
  inputs: {
    referenceVideos: [
      'https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-instructor.mp4'
    ]
  }
})
```

**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": "The instructor is the woman in the reference video. Keep her face and hair. She leads a set of kettlebell swings on a rooftop terrace at sunrise, wearing a black training top and black leggings, with the city skyline behind her. Full-body vertical framing, one continuous shot with a slow push-in. She finishes the set, sets the kettlebell down, and gives the camera a thumbs-up. Audio: her steady breathing, the thud of the kettlebell on the deck, a light breeze, and an upbeat electronic music bed. No dialogue, no on-screen text.",
            "width": 720,
            "height": 1280,
            "duration": 8,
            "inputs": {
                "referenceVideos": [
                    "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-instructor.mp4"
                ]
            }
        })

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": "16115932-a53b-4a16-8524-9a48e5d95f62",
      "model": "google:gemini@omni-flash-1.2",
      "positivePrompt": "The instructor is the woman in the reference video. Keep her face and hair. She leads a set of kettlebell swings on a rooftop terrace at sunrise, wearing a black training top and black leggings, with the city skyline behind her. Full-body vertical framing, one continuous shot with a slow push-in. She finishes the set, sets the kettlebell down, and gives the camera a thumbs-up. Audio: her steady breathing, the thud of the kettlebell on the deck, a light breeze, and an upbeat electronic music bed. No dialogue, no on-screen text.",
      "width": 720,
      "height": 1280,
      "duration": 8,
      "inputs": {
        "referenceVideos": [
          "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-instructor.mp4"
        ]
      }
    }
  ]'
```

**CLI**:

```bash
runware run google:gemini@omni-flash-1.2 \
  positivePrompt="The instructor is the woman in the reference video. Keep her face and hair. She leads a set of kettlebell swings on a rooftop terrace at sunrise, wearing a black training top and black leggings, with the city skyline behind her. Full-body vertical framing, one continuous shot with a slow push-in. She finishes the set, sets the kettlebell down, and gives the camera a thumbs-up. Audio: her steady breathing, the thud of the kettlebell on the deck, a light breeze, and an upbeat electronic music bed. No dialogue, no on-screen text." \
  width=720 \
  height=1280 \
  duration=8 \
  inputs.referenceVideos.0=https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-instructor.mp4
```

**JSON**:

```json
{
  "taskType": "videoInference",
  "taskUUID": "16115932-a53b-4a16-8524-9a48e5d95f62",
  "model": "google:gemini@omni-flash-1.2",
  "positivePrompt": "The instructor is the woman in the reference video. Keep her face and hair. She leads a set of kettlebell swings on a rooftop terrace at sunrise, wearing a black training top and black leggings, with the city skyline behind her. Full-body vertical framing, one continuous shot with a slow push-in. She finishes the set, sets the kettlebell down, and gives the camera a thumbs-up. Audio: her steady breathing, the thud of the kettlebell on the deck, a light breeze, and an upbeat electronic music bed. No dialogue, no on-screen text.",
  "width": 720,
  "height": 1280,
  "duration": 8,
  "inputs": {
    "referenceVideos": [
      "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-instructor.mp4"
    ]
  }
}
```

[Watch video](https://runware.ai/docs/assets/output-likeness.oJ-ki7o1.mp4)

> **Prompt**: The instructor is the woman in the reference video. Keep her face and hair. She leads a set of kettlebell swings on a rooftop terrace at sunrise, wearing a black training top and black leggings, with the city skyline behind her. Full-body vertical framing, one continuous shot with a slow push-in. She finishes the set, sets the kettlebell down, and gives the camera a thumbs-up. Audio: her steady breathing, the thud of the kettlebell on the deck, a light breeze, and an upbeat electronic music bed. No dialogue, no on-screen text.

**Instructor**:

[Watch video](https://runware.ai/docs/assets/source-instructor.dAdVwVdr.mp4)

> **Prompt**: A single continuous shot of a fitness instructor in her early thirties with a short platinum-blonde pixie cut, light olive skin, and an athletic build, wearing a coral tank top in a plain white studio. Waist-up framing, static camera at eye level. She looks into the lens, slowly turns her head to the left and then to the right, smiles, and raises both arms overhead in a slow stretch. Soft even light. Audio: quiet room tone only. No dialogue, no music, no on-screen text, no scene cuts.

The reference video **fixes who she is**, and the prompt **sets her outfit and the location**.

### [Combining images and a video](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/reference-driven-video#combining-images-and-a-video)

Both kinds of reference **fit in one request**, and the 10-second ceiling still applies. Give the video the person and **give the images everything else**. The reference video below is the same instructor clip as above, joined by a product photo of an activewear set and a photo of a training studio:

**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: 'The instructor is the woman in the reference video. Keep her face and hair. Dress her in the activewear set from the product photo, keeping its colors and wordmark. Use the training studio photo as the location. In one continuous shot, the camera tracks slowly sideways as she demonstrates a dumbbell squat to overhead press facing the camera, with the mirrored wall behind her, then lowers the dumbbells and nods. Audio: a driving electronic workout track, the clink of the dumbbells, and her sharp exhale on each press. No dialogue, no on-screen text.',
  width: 1280,
  height: 720,
  duration: 8,
  inputs: {
    referenceImages: [
      'https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-outfit.jpg',
      'https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-studio.jpg'
    ],
    referenceVideos: [
      'https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-instructor.mp4'
    ]
  }
})
```

**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": "The instructor is the woman in the reference video. Keep her face and hair. Dress her in the activewear set from the product photo, keeping its colors and wordmark. Use the training studio photo as the location. In one continuous shot, the camera tracks slowly sideways as she demonstrates a dumbbell squat to overhead press facing the camera, with the mirrored wall behind her, then lowers the dumbbells and nods. Audio: a driving electronic workout track, the clink of the dumbbells, and her sharp exhale on each press. No dialogue, no on-screen text.",
            "width": 1280,
            "height": 720,
            "duration": 8,
            "inputs": {
                "referenceImages": [
                    "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-outfit.jpg",
                    "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-studio.jpg"
                ],
                "referenceVideos": [
                    "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-instructor.mp4"
                ]
            }
        })

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": "77144a92-a3e5-4499-8d59-c58fa31bfed4",
      "model": "google:gemini@omni-flash-1.2",
      "positivePrompt": "The instructor is the woman in the reference video. Keep her face and hair. Dress her in the activewear set from the product photo, keeping its colors and wordmark. Use the training studio photo as the location. In one continuous shot, the camera tracks slowly sideways as she demonstrates a dumbbell squat to overhead press facing the camera, with the mirrored wall behind her, then lowers the dumbbells and nods. Audio: a driving electronic workout track, the clink of the dumbbells, and her sharp exhale on each press. No dialogue, no on-screen text.",
      "width": 1280,
      "height": 720,
      "duration": 8,
      "inputs": {
        "referenceImages": [
          "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-outfit.jpg",
          "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-studio.jpg"
        ],
        "referenceVideos": [
          "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-instructor.mp4"
        ]
      }
    }
  ]'
```

**CLI**:

```bash
runware run google:gemini@omni-flash-1.2 \
  positivePrompt="The instructor is the woman in the reference video. Keep her face and hair. Dress her in the activewear set from the product photo, keeping its colors and wordmark. Use the training studio photo as the location. In one continuous shot, the camera tracks slowly sideways as she demonstrates a dumbbell squat to overhead press facing the camera, with the mirrored wall behind her, then lowers the dumbbells and nods. Audio: a driving electronic workout track, the clink of the dumbbells, and her sharp exhale on each press. No dialogue, no on-screen text." \
  width=1280 \
  height=720 \
  duration=8 \
  inputs.referenceImages.0=https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-outfit.jpg \
  inputs.referenceImages.1=https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-studio.jpg \
  inputs.referenceVideos.0=https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-instructor.mp4
```

**JSON**:

```json
{
  "taskType": "videoInference",
  "taskUUID": "77144a92-a3e5-4499-8d59-c58fa31bfed4",
  "model": "google:gemini@omni-flash-1.2",
  "positivePrompt": "The instructor is the woman in the reference video. Keep her face and hair. Dress her in the activewear set from the product photo, keeping its colors and wordmark. Use the training studio photo as the location. In one continuous shot, the camera tracks slowly sideways as she demonstrates a dumbbell squat to overhead press facing the camera, with the mirrored wall behind her, then lowers the dumbbells and nods. Audio: a driving electronic workout track, the clink of the dumbbells, and her sharp exhale on each press. No dialogue, no on-screen text.",
  "width": 1280,
  "height": 720,
  "duration": 8,
  "inputs": {
    "referenceImages": [
      "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-outfit.jpg",
      "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-studio.jpg"
    ],
    "referenceVideos": [
      "https://assets.runware.ai/guides/google-gemini-omni-flash-1-2/reference-driven-video/source-instructor.mp4"
    ]
  }
}
```

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

> **Prompt**: The instructor is the woman in the reference video. Keep her face and hair. Dress her in the activewear set from the product photo, keeping its colors and wordmark. Use the training studio photo as the location. In one continuous shot, the camera tracks slowly sideways as she demonstrates a dumbbell squat to overhead press facing the camera, with the mirrored wall behind her, then lowers the dumbbells and nods. Audio: a driving electronic workout track, the clink of the dumbbells, and her sharp exhale on each press. No dialogue, no on-screen text.

**Instructor**:

[Watch video](https://runware.ai/docs/assets/source-instructor.dAdVwVdr.mp4)

> **Prompt**: A single continuous shot of a fitness instructor in her early thirties with a short platinum-blonde pixie cut, light olive skin, and an athletic build, wearing a coral tank top in a plain white studio. Waist-up framing, static camera at eye level. She looks into the lens, slowly turns her head to the left and then to the right, smiles, and raises both arms overhead in a slow stretch. Soft even light. Audio: quiet room tone only. No dialogue, no music, no on-screen text, no scene cuts.

**Outfit**:

![Flat lay of a deep teal sports bra above deep teal high-waisted leggings, each with a small white ARKEN wordmark, on light gray](https://runware.ai/docs/assets/source-outfit.C9CyapFn_T1Gp1.jpg)

> **Prompt**: Flat-lay product packshot of a matching women's activewear set on a plain light gray background: a deep teal sports bra laid above a pair of deep teal high-waisted leggings. A small white "ARKEN" wordmark is printed on the bra band and on the leggings waistband. Soft even studio light, photoreal e-commerce photograph, no model, no props.

**Studio**:

![An empty training studio with a black rubber floor, a mirrored wall, an oak slatted wall with a dumbbell rack, and pendant lights](https://runware.ai/docs/assets/source-studio.BB8jrSA9_ZfifpJ.jpg)

> **Prompt**: Wide shot of an empty boutique training studio: a black rubber floor, a full mirrored wall on the left, a light oak slatted wall at the back with a rack of dumbbells, warm pendant lights, and large windows letting in soft daylight. No people, no text, no logos. Photoreal interior photograph.

For a series of clips with the same person, **keep the reference video and swap the images** for each new outfit or location.

### [Tips](https://runware.ai/docs/models/google-gemini-omni-flash-1-2/guides/reference-driven-video#tips)

1. **Give each reference one job.** Separate images for the person and the product let the prompt say what each one supplies in a single sentence.
    
2. **Name what to keep from each image.** "Keep her face and hair" points at the image. Describing her hair color repeats what the image already supplies.
    
3. **Refer to images in plain words.** "The woman in the portrait" or "the desk illustration" is enough, with no tags.
    
4. **Use one reference video for a person.** Video holds a likeness best, and one clip per request gives steadier results than several.
    
5. **Write the audio into the prompt.** A reference video contributes no sound, and without direction the model picks its own.
    
6. **Ask for one continuous shot.** Without it, the model may cut the clip into several shots.