Agent Skill

The gemini-omni-flash-api Skill: Real Omni Flash Video for Your Agent

The gemini-omni-flash-api skill is Google's official way to give a coding agent working Gemini Omni Flash video. It bundles tested scripts so agents like Claude Code and Antigravity run real commands instead of guessing API calls. This guide covers the install, the scripts, agent usage, the one honest discrepancy, and the limits you inherit.

Editorial hero illustration for The gemini-omni-flash-api Skill for AI Agents

Get the latest on AI, LLMs & developer tools

New MCP servers, model updates, and guides like this one — delivered weekly.

What the Skill Is

The gemini-omni-flash-api skill is an official agent skill from Google that teaches a coding agent to drive Gemini Omni Flash, Google's video model, by running real Python scripts instead of hand-writing API calls. It ships in the google-gemini/gemini-skills repository, and you install it with one command.

npx skills add google-gemini/gemini-skills --skill gemini-omni-flash-api

Omni Flash (model ID gemini-omni-flash-preview) launched to developers on June 30, 2026 as a natively multimodal video model in public preview. It ingests any mix of text, image, and video and returns an MP4 with audio through a conversational interface. The problem for an autonomous agent is that Omni has no simple one-shot endpoint, so an agent left to guess the request shape tends to hallucinate parameters. This skill removes the guessing: it hands the agent tested scripts and a SKILL.md that documents exactly how to call them.

What It Wraps

Under the hood the skill wraps two things: the google-genai SDK calls that reach the Interactions API, and ffmpeg preprocessing. Omni Flash runs only through the Interactions API (client.interactions.create), so every generation, edit, and file upload is an interaction. Rather than trusting the model to remember that, the skill encodes it.

import base64
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input="A marble rolling fast on a chain reaction style track, continuous smooth shot.",
)
with open("marble.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))

That is the call the model would otherwise have to reconstruct from memory on every turn: the exact model ID, the input schema, and how to decode the base64 video out of the response. The script does it the same way every time. For the full API surface behind these scripts, see our Gemini Omni Flash developer guide.

Requirements

Three things must be in place before the skill works: google-genai 2.10.0 or newer, Python 3.10 or newer, and both ffmpeg and ffprobe on your PATH. A Gemini API key is the fourth.

python3 --version                 # need 3.10 or newer
pip install "google-genai>=2.10.0"
ffmpeg -version                   # must be on PATH
ffprobe -version                  # must be on PATH
export GEMINI_API_KEY="your-key"  # from aistudio.google.com/apikey

The version floor matters. The Interactions API itself works from google-genai 1.55.0, but this skill recommends 2.10.0 or newer. If your agent reports that client.interactions does not exist, the SDK is too old. Upgrade before you debug anything else.

The Bundled Scripts

The skill ships four scripts under scripts/video. Each does one job so the agent can compose them.

ScriptWhat it does
generate_video.pyGenerates or edits a clip through the Interactions API. Flags include --image, --video, --strip-audio, --aspect-ratio, --duration 3..10, --previous-interaction-id, --prompts-file with --concurrency N, and --batch jobs.json.
prep_video.pyPreprocesses source footage with ffmpeg: trims to 10 seconds or less, scales to 1280x720 or smaller, converts the frame rate, and can strip the audio track.
inspect_video.pyAn ffprobe wrapper that reports duration, resolution, frame rate, and codecs, so the agent can check a file before it spends tokens on it.
upload_file.pyUploads a file through the Files API and polls until it is ACTIVE. Warns when a file is larger than 25 MB.

The example commands the SKILL.md documents look like this:

# Text to video
./scripts/video/generate_video.py "A close-up of a cat drinking tea" \
  --output media/cat_tea.mp4

# Edit an uploaded clip, drop its audio
./scripts/video/generate_video.py "Transform the style to Japanese anime" \
  --video input.mp4 --strip-audio --output media/anime.mp4

# Continue a stored session with no re-upload
./scripts/video/generate_video.py "Change the setting to a snowy winter wonderland." \
  --previous-interaction-id "abc123..." --output media/winter.mp4

Note the pattern in the third command: --previous-interaction-id continues a stored session, so the model edits the previous clip without re-uploading anything. That is the conversational edit chain, exposed as a flag.

Inside Claude Code and Antigravity

Because it is a standard skill, a SKILL.md plus scripts, any agent that can read that file and run shell commands can use it. That includes Anthropic's Claude Code and Google's Antigravity. You prompt in plain language; the agent maps your request onto script runs. A two-step request becomes a two-command chain.

# You: "Make a 6-second clip of a cat drinking tea, then restyle it as anime."

# Step 1 - generate, capture the interaction id
./scripts/video/generate_video.py "A close-up of a cat drinking tea" \
  --duration 6 --output media/cat_tea.mp4

# Step 2 - restyle the exact clip from step 1
./scripts/video/generate_video.py "Transform the style to Japanese anime. Keep everything else the same." \
  --previous-interaction-id "<id from step 1>" --output media/cat_anime.mp4

The agent captures the interaction id from step one and passes it to step two, so the restyle edits the exact clip it just made. If you are deciding which agent to run this in, our Antigravity vs Claude Code comparison covers the trade-offs; the skill itself is agent-agnostic.

The Interpolation Discrepancy

One honest caveat. The skill exposes what it calls a video interpolation command, in which you pass two images, a start and an end, but the official Omni Flash API documentation lists interpolation and extension as not supported.

# The skill calls this "interpolation":
./scripts/video/generate_video.py "Move smoothly from the first frame to the last" \
  --image start.png --image end.png --output media/morph.mp4

So what actually happens? The two images are used as reference-to-video conditioning, not as true keyframes the model tweens between. The output is a plausible clip that starts and ends near those images, not a frame-accurate interpolation. Both the skill and the API docs are official; they simply describe the same capability with different words.

Flag it honestly: treat the skill's interpolation as convenience naming over the reference-to-video task type. Do not promise a client true keyframe interpolation on the strength of a flag name.

fofr's Subagent Music Video

The reason this skill matters is what it unlocks once an agent can call video generation on its own. The clearest demonstration came from fofr (@fofrAI), who published his own Omni API agent skill and then wired it into a subagent. He gave that subagent a hyperframes skill plus a batch of Omni Flash outputs, and it assembled a full music video on its own, with the soundtrack generated by Google's Lyria 3. No human in the timeline.

That is the endgame the gemini-omni-flash-api skill is built for: an agent that plans a sequence, generates each clip, edits it conversationally, and stitches the result, all through scripts it can actually run.

Companion Skill and MCP

The skill does not ship alone. First, gemini-interactions-api is a broader skill for the whole Interactions API, covering text, image, audio, and tool use, for agents that need more than video.

npx skills add google-gemini/gemini-skills --skill gemini-interactions-api

Second, Google ships a Gemini Docs MCP that gives a coding agent live access to the Gemini documentation, so the agent can look up current parameters instead of relying on training data. If you are assembling an agent toolkit, our best MCP servers for Claude Code roundup is a good starting point for pairing this skill with the right servers.

Limitations

The skill is honest scaffolding, but it inherits every constraint of the model underneath. Budget for these.

LimitDetail
Public previewOmni Flash is preview-grade, so its schemas can shift even though the core Interactions API is generally available. Pin your SDK and re-test after updates.
720p ceilingOutput is 720p, 24 FPS, 3 to 10 seconds, in 16:9 or 9:16. There is no 1080p or 4K path.
Every edit re-billsAt roughly $0.10 per second, each conversational edit re-renders and re-bills the full clip. Three 10-second edits cost about $3.00, not three free tweaks.
Regional upload blockEditing uploaded videos is blocked in the EEA, Switzerland, the UK, and some US states. Editing videos the model generated works everywhere.
English only, reallyEnglish is fully supported; other languages are listed as not evaluated.
store must stay trueThe edit chain relies on stored sessions. Force store=false and previous-interaction-id stops working, and background jobs become incompatible.
ffmpeg is requiredprep_video.py and inspect_video.py shell out to ffmpeg and ffprobe. Without them on PATH, half the skill is dead weight.

The regional block is the one that wastes the most time, because it does not throw an error. A blocked upload-edit just comes back fast and empty:

// Symptom of the regional upload-edit block
// (EEA, Switzerland, UK, some US states):
{
  "status": "completed",
  "usage": { "total_output_tokens": 0 },
  "steps": [ /* no model_output video block */ ]
}

FAQ

What is the gemini-omni-flash-api skill?

It is an agent skill from Google's official gemini-skills repository that drives the Gemini Omni Flash video model. It bundles Python scripts built on google-genai plus ffmpeg helpers, so a coding agent runs real commands instead of guessing Interactions API calls.

How do I install the skill?

Run npx skills add google-gemini/gemini-skills --skill gemini-omni-flash-api. The scripts live under scripts/video in the repository at github.com/google-gemini/gemini-skills.

What does the skill require?

google-genai 2.10.0 or newer, Python 3.10 or newer, and both ffmpeg and ffprobe on your PATH. You also need a Gemini API key exported as GEMINI_API_KEY. If client.interactions is missing, upgrade the SDK before debugging anything else.

Does it work in Claude Code and Antigravity?

Yes. It is a standard coding-agent skill, so any agent that reads a SKILL.md file and can run shell commands, including Anthropic's Claude Code and Google's Antigravity, can install it and invoke the scripts.

Does the skill really do video interpolation?

The skill exposes an interpolation command that takes two images with --image start and --image end, but the official Omni Flash API lists interpolation and extension as not supported. Treat it as convenience naming over two-image reference-to-video, not true keyframe interpolation.

Why do my uploaded-video edits return empty output?

Editing uploaded videos is blocked in the EEA, Switzerland, the UK, and some US states. The symptom is a video-to-video edit that finishes fast with total_output_tokens of 0 or no video. Editing videos the model generated works everywhere.

Glossary

Agent skill
A packaged set of instructions and scripts, described in a SKILL.md file, that a coding agent loads to gain a new capability.
gemini-omni-flash-preview
The model ID for Gemini Omni Flash, Google's natively multimodal video model, in public preview since June 30, 2026.
Interactions API
The Gemini endpoint (POST /v1beta/interactions) that Omni Flash runs through. It stores session state so you can chain edits.
previous_interaction_id
The field that continues a stored session, letting the model edit a prior clip without re-uploading it.
reference-to-video
An Omni Flash task type that conditions a new video on one or more reference images.
SynthID
The invisible, detectable watermark Google stamps on every Omni Flash output.

Verdict

The gemini-omni-flash-api skill is the right way to give a coding agent real Omni Flash video: it trades hallucinated API calls for tested scripts, and it slots into any skill-aware agent. It will not fix Omni's ceilings. The 720p cap, preview-grade schemas, per-second edit billing, and the regional upload lock are all still yours to manage.

Use it when:  your agent produces or iterates on short 720p clips in a pipeline.
Skip it when: you need 1080p/4K, guaranteed availability (it is preview),
              or you are in a region that blocks uploaded-video edits.
Always:       pin the SDK version and verify the "interpolation" flag
              is really reference-to-video before you promise a client.

Use it for agentic media pipelines where short, editable 720p clips are the deliverable. It is the difference between an agent that guesses at a video API and one that runs the same working command every time.

Sources

Official Google docs and repository:

Builders and community:

Get the latest on AI, LLMs & developer tools

New MCP servers, model updates, and guides like this one — delivered weekly.