<!-- BusyBot node reference — https://busybot.net/tools/gemini-video-gen/ -->

> Node: Gemini Video Gen (`gemini_video_gen`) · Action (binary) · v1
> Category: AI · Credentials: Google AI (Gemini) (`googleAi`)
> Updated: 2026-08-16

# Gemini Video Gen

> Generate videos using Google Veo models.

## Overview

Gemini Video Gen uses the Google Veo API to generate short videos from text prompts, with configurable aspect ratio (16:9, 9:16, 1:1), duration (5–8 seconds), several samples per request, and an optional person-generation policy. Video generation is a long-running job: the node submits the request, waits for it to finish, downloads the finished files and stores them as binary data on the output item. You can also submit without waiting and pick the result up elsewhere.

**Category:** AI  
**Tool Name:** `gemini_video_gen`  
**Version:** 1

**Appearance:** Icon: `gemini` | Color: `#ffffff`

## Node Type

**Action (Binary)** — handles file/binary data operations

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Google AI (Gemini)** credentials.
See the [Credentials Guide](https://busybot.net/credentials/google-ai/) for setup instructions.

### Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Model | `options` | No | `veo-2.0-generate-001` | The video generation model to use. |
| | | | | Options: `veo-2.0-generate-001` (Veo 2.0) |
| Prompt | `string` | Yes | — | Text prompt describing the video to generate. Supports expressions. If empty, falls back to the input item's `prompt`, `text` or `description` field. |
| Options | `collection` | No | `{}` | Optional generation and polling settings. |
| — Aspect Ratio | `options` | No | `16:9` | Video aspect ratio. |
| | | | | Options: `16:9` (Landscape), `9:16` (Portrait), `1:1` (Square) |
| — Duration (Seconds) | `number` | No | `5` | Duration of the generated video in seconds (5-8). |
| — Sample Count | `number` | No | `1` | Number of video samples to generate (1-4). |
| — Person Generation | `options` | No | — | Policy for generating people in the video. |
| | | | | Options: `dont_allow`, `allow_adult`, `allow_all` — plus the empty default, which uses the model's own policy |
| — Wait For Completion | `boolean` | No | `true` | Whether to poll until the video generation is complete. If false, returns the operation name immediately. |
| — Poll Interval (ms) | `number` | No | `15000` | Milliseconds between poll requests when waiting for completion. |
| — Max Poll Duration (ms) | `number` | No | `600000` | Maximum total time to spend polling before timing out (default: 10 minutes). |
| — Binary Property Name | `string` | No | `data` | Property name for the primary video binary output. Additional videos use video_1, video_2, etc. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. |
| Include Input | `boolean` | No | `false` | Whether to include the original input item fields in the output. |
| Max Concurrency | `number` | No | `3` | Maximum number of items to process concurrently. Keep low for video generation due to heavy resource usage. |

## Output Data

One output item per input item, however many videos it contains. The first video is written to the binary property named by **Binary Property Name** (default `data`); any further samples land on `video_1`, `video_2`, `video_3` beside it. Files are `.mp4` unless the model returns WebM. Binary data arriving from upstream is preserved.

The output item's JSON contains only the fields below. The input item's JSON is merged in **only** when Include Input is on:

| Field | Description |
|-------|-------------|
| `operationName` | Identifier of the generation job Veo created for this item. |
| `model` | The model that generated the video. |
| `status` | `completed` when the job finished, `failed` when it finished unsuccessfully, `pending` when Wait For Completion is off and the node returned without waiting. |
| `videoCount` | How many videos were actually attached to the item. Present only when Wait For Completion is on. |

With **Wait For Completion** off, the item carries `operationName` and `status: "pending"` and **no video binary** — the job is still running when the node moves on, so pair this with a later step that retrieves the result.

Reference the result downstream by expression, e.g. `{{ $json.status }}`, and the videos through the binary property names above.

## Usage Examples

- Generate a video of a forest scene using Google Veo
- Create a portrait-format video for a social media reel
- Generate multiple video variations from a single prompt
- Create an 8-second video with a detailed nature description
- Generate a square video for social media

## Example Configuration

Generate one landscape clip with the defaults:

```json
{
  "type": "gemini_video_gen",
  "parameters": {
    "model": "veo-2.0-generate-001",
    "prompt": "A golden retriever running through a field of sunflowers at sunset"
  }
}
```

A vertical clip for short-form video, with no people:

```json
{
  "type": "gemini_video_gen",
  "parameters": {
    "prompt": "A satisfying close-up of fresh fruit being sliced",
    "maxConcurrency": 2,
    "options": {
      "aspectRatio": "9:16",
      "durationSeconds": 5,
      "sampleCount": 1,
      "personGeneration": "dont_allow",
      "waitForCompletion": true,
      "pollIntervalMs": 15000,
      "maxPollDurationMs": 600000,
      "binaryPropertyName": "data"
    }
  }
}
```

Three variants of the same prompt, with a longer polling window:

```json
{
  "type": "gemini_video_gen",
  "parameters": {
    "prompt": "{{ $json.sceneDescription }}, photorealistic, high detail",
    "includeInput": true,
    "maxConcurrency": 1,
    "options": {
      "aspectRatio": "16:9",
      "durationSeconds": 8,
      "sampleCount": 3,
      "waitForCompletion": true,
      "pollIntervalMs": 20000,
      "maxPollDurationMs": 900000
    }
  }
}
```

Submit and move on without waiting:

```json
{
  "type": "gemini_video_gen",
  "parameters": {
    "prompt": "An abstract animation of colorful geometric shapes morphing",
    "maxConcurrency": 3,
    "options": {
      "aspectRatio": "1:1",
      "durationSeconds": 6,
      "sampleCount": 1,
      "waitForCompletion": false
    }
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Gemini Video Gen calls the Google Veo API to generate short videos from text prompts, supporting aspect ratios of 16:9, 9:16, or 1:1 and durations of 5 to 8 seconds. Use this tool when a workflow needs to programmatically produce motion video content from descriptive text, including support for multiple samples per request. The tool outputs binary video file data via the binary storage layer on the main channel, with failures delivered to the error output.