The three input modes — and why image-to-video usually wins
Every 2026 video model exposes some combination of three input modes. Picking the right one matters more than picking the right model in many cases.
Text-to-video (T2V)
Type a prompt, get a clip. The original Sora-style demo.
What it's good for:
- Concept exploration. Mood boards, "what if" tests.
- Single-shot social. Vertical 9s clip for a TikTok where the exact frame composition isn't the point.
What it's bad for:
- Anything with a specific brand asset. The model invents the frame. You can prompt "Coca-Cola can on a wooden table" but you get whatever the model thinks that looks like — not your client's pack shot.
- Sequence work. Each generation invents its own frame. Cut three T2V shots together and the continuity is broken.
- Cost predictability. Acceptance rate is the worst in T2V because you have the least control. Plan for 5-10x retakes.
Image-to-video (I2V) — the sweet spot
Two shapes:
- Stack a still, then animate. Author the first frame with
gemini-3.1-flash-image(orgemini-3-pro-image) viagenerate_content. Then feed that frame plus a motion prompt to Veo 3.1 (generate_videos) or Omni (client.interactions.create,video_config.task=image_to_video). - One-shot Omni I2V. Same Interactions call, no separate still sitting in your pipeline. Valid. You do not owe the stack a second model.
What this buys you:
- The frame is yours (when you authored it). Composition, brand assets, character identity — locked in before the video model touches them.
- Lower acceptance-rate burn. The video model only has to solve motion, not composition. Retake rate drops from 5-10x to 2-3x.
- Sequence consistency. Use the same anchor frame (or a consistent style) across multiple clips and the sequence cuts together.
A 1K still is ~$0.067. An 8-second Veo 3.1 Lite clip is $0.40.
The seconds dominate. You stack a still because you want the
frame, not because the still is a discount on the video bill.
Imagen 4 (imagen-4.0-*) on the Gemini API died 2026-08-17;
don't send first frames there.
Supported by every major model in 2026: Omni, Veo 3.1, Kling 3.0
(kling-v3), Luma Ray 3.2, Runway gen4_turbo / gen4.5. Sora 2
I2V still runs through 2026-09-24.
The default for product work should be image-to-video. T2V is a research demo most of the time. One-shot Omni I2V counts.
Video-to-video (V2V)
Take an existing clip, transform it. This is Runway Aleph's specialty, Kling Pro's "with video input" mode at $0.168/sec, and Pika's modify features.
What it's good for:
- Restyling. Take a raw screen recording, turn it into a stylized animation.
- Look transfer. Apply a reference visual style to footage you already shot.
- Motion preservation. When you need the exact motion of a source clip but a different aesthetic.
What it costs: usually 1.5-2x text-to-video pricing on the same model, because the model is doing more work (parsing the source and generating).
The decision tree
Do you have an existing clip to transform?
→ Yes → video-to-video
→ No → Do you care about exact frame composition or brand assets?
→ Yes → image-to-video
(still via generate_content, or one-shot Omni I2V)
→ No → text-to-video (concept work only)
Why this matters for your budget
Imagine a 60-second promo, 10 shots of 6 seconds each, on Veo 3.1 Lite at 720p ($0.05/sec, so $0.30 per 6s clip).
- T2V path, 8x retake rate: 10 shots × $0.30 × 8 = $24
- I2V path, 2.5x retake rate: 10 shots × ($0.30 × 2.5 + $0.067 per anchor frame) ≈ $8.17
- The savings is the retake drop, not the still. Swap Lite for Veo 3.1 Standard ($0.40/sec) and the same 2.5x I2V minute is $60 of video plus $0.67 of frames. Video seconds dominate.
Multiply across a year of work and the input-mode choice is worth more than the model choice.
What the prompt looks like in I2V mode
Pseudocode (API shape varies by vendor — exact field names will change, the structure won't):
# first frame, if you want one
frame = client.models.generate_content(
model="gemini-3.1-flash-image",
contents="hero pack shot, 35mm, window light from frame-left",
)
# Google default: one-shot Omni I2V (no separate still required)
response = client.interactions.create(
model="gemini-omni-1.1-flash",
input_image=frame, # or a still you already have
video_config={"task": "image_to_video"},
)
# Veo 3.1, if you want the Veo look
# response = client.models.generate_videos(
# model="veo-3.1-lite-generate-preview",
# image=frame,
# prompt="slow push-in, 4 seconds",
# )
The prompt is shorter because half the work is in the image.
The frame says "this is the scene." The motion prompt only says
"do this thing to it." Cleaner contract, fewer hallucinations,
lower retake rate. If you skip the still, Omni still takes the
image_to_video task in one call.
The cynical version
Most "AI video looks bad" critiques are critiques of T2V output prompted by people who don't know I2V exists. When the same prompt is run through I2V with a hand-authored frame, the output gets noticeably better. The skill ceiling in AI video right now is mostly the input-mode discipline, not the model choice.