Creates a short video from a written description using Google Veo, then saves the MP4 on your Joomla site.
Creates a short video from a written description using Google Veo, then saves the MP4 on your Joomla site.
When the flow reaches this step, JOrchestrator calls the configured model using credentials from Node Configuration, then exposes the response fields listed below to downstream steps.
Google Veo is a AI step in the Generative Video group. AI steps call language or media models. Use them to generate text, classify content, or produce assets that later steps publish or send.
Typical reasons teams add Google Veo to a flow:
Common patterns on the canvas:
Write your prompt on the Design tab. Longer clips can be built by extending the first scene on supported models. You receive a web link to the saved video — not the raw video file itself unless you turn that option on.
Add your Gemini API key under Joomla → Node Configuration → AI LLMs. Use an Upload Media step afterward if the video must sit in a specific /images folder.
The designer shows these tabs for this node:
| Tab | Purpose |
|---|---|
| Info | Plain-language description and output payload fields for downstream steps |
| General | Canvas label and read-only node ID |
| AI | Optional assistant to help draft settings from plain language |
| Design | Node-specific configuration fields |
These fields are managed by the designer or runtime — you do not type into them directly:
| Property key | Label | Type | Required | Visible when | Notes |
|---|---|---|---|---|---|
_nodeId | Node ID | node-id | No | — | — |
_payloadFields | Available Fields | payload-panel | No | — | — |
| Property key | Label | Type | Required | Visible when | Notes |
|---|---|---|---|---|---|
label | Label | text | No | — | Node label |
| Property key | Label | Type | Required | Visible when | Notes |
|---|---|---|---|---|---|
prompt | Prompt | textarea | Yes | — | Describe the video to generate… Google Gemini API key is read from Joomla Node Configuration → AI LLM's → Google Gemini (same key as the Gemini LLM node). |
modelId | Veo model | select (veo-3.1-generate-preview | veo-3.1-fast-generate-preview | veo-3.1-lite-generate-preview | veo-3.0-generate-001 | veo-3.0-fast-generate-001 | veo-2.0-generate-001; default: veo-3.1-generate-preview) | No | — | Only models available on the Gemini API for video generation. Veo 3.1 variants use -preview ids (veo-3.1-generate-001 and veo-3.1-lite-generate-001 are not available on Gemini API). |
targetDurationSeconds | Target duration (seconds) | select (4 | 6 | 8 | 15 | 22 | 29 | 36 | 43 | 50 | 60 | 90 | 120 | 148; default: 8) | No | googleVeoSupportsExtension | Total desired clip length. Values above the initial segment use Veo scene extension (Veo 3.1 or 3.1 Fast only; 720p; ~148s max). Not supported on Veo 3.1 Lite. |
segmentDurationSeconds | Initial segment (seconds) | select (4 | 6 | 8; default: 8) | No | googleVeoSupportsExtension | Length of the first generated clip. Extension steps add ~7 seconds each until the target is reached. |
extensionPrompt | Extension prompt (optional) | payload-text | No | googleVeoSupportsExtension | Optional: prompt for each extension step Used for each extension call after the initial clip. Leave blank to reuse the main prompt. |
savePath | Save path (optional) | payload-text | No | — | images/flow-inline/my-video.mp4 Local path under the Joomla site root. Leave blank to auto-save under images/flow-inline/. After download, use {{NodeLabel.url}} or {{NodeLabel.videoUrl}} in downstream nodes. |
aspectRatio | Aspect ratio | select (` | 16:9 | 9:16; default: `) | No | — | Optional. Preview models (Gemini API) ignore extra settings and use the prompt only. |
sampleCount | Number of videos | select (1 | 2 | 3 | 4; default: 1) | No | — | Ignored for preview models. |
resolution | Resolution (Veo 3+) | select (` | 720p | 1080p | 4k; default: `) | No | — | Optional. Ignored for preview models. Lite models do not support 4K. |
negativePrompt | Negative prompt | payload-text | No | — | Optional: what to avoid in the video Ignored for preview models. |
pollIntervalSeconds | Poll interval (seconds) | select (5 | 10 | 15 | 30; default: 10) | No | — | — |
maxPollMinutes | Max wait (minutes) | select (5 | 10 | 15 | 20 | 30; default: 15) | No | — | — |
Credentials, API keys, mailers, SMTP, and integration defaults are configured in the CMS plugin under Node Configuration, not per step on this node. Link the flow to a domain before testing CMS-backed fields.
After this step runs, later nodes can reference these fields using placeholders such as {{google_veo.success}}.
| Field key | Type | Description |
|---|---|---|
success | boolean | Whether the operation completed successfully. |
modelId | string | AI or video model identifier used. |
operationName | string | Long-running API operation identifier. |
videoUri | string | Google Gemini API file URI before local download. |
localPath | string | Saved file path relative to the Joomla site root. |
path | string | Relative path to the saved MP4 under the site root. |
url | string | Public URL to the downloaded MP4 on your Joomla site. |
videoUrl | string | Public URL to the downloaded video file. |
video | string | Public URL to a video file. |
media | string | Public URL to a media asset. |
filename | string | File name without directory path. |
bytesWritten | number | Size of the downloaded MP4 in bytes (not the raw bytes themselves). |
videoBase64 | string | Base64-encoded video bytes (when Include base64 is enabled on the node). |
targetDurationSeconds | number | Target total video duration in seconds. |
segmentDurationSeconds | number | Initial clip duration in seconds. |
extensionCount | number | Number of scene extensions applied (Veo). |
estimatedDurationSeconds | number | Estimated final video duration in seconds. |
videos | array | Array of generated video metadata objects. |
videoCount | number | Number of generated video samples. |
pollAttempts | number | Number of times the node polled for completion. |
apiSource | string | API host that served the response. |
message | string | Human-readable status, error, or result summary. |
prompt) must be filled before the flow can be saved.Other steps in the same area of the palette:
aws-nova-reel) — Generative Video