Nodes/BizyAirPlus/Google Veo3.1 First Last Frame (Official Edition)
ComfyUI Node

Google Veo3.1 First Last Frame (Official Edition)

Veo 3.1 first-last-frame video, the standard Official Edition — the one I'd use

By siliconflow·Created 5 months ago·Updated about a month ago· 20
Google Veo3.1 First Last Frame (Official Edition)
  • first_frame_url
  • last_frame_url
  • api_config
  • video
  • request_id
  • urls
prompt
resolution720p
duration4
generate_audiotrue
negative_prompt
aspect_ratio16:9
seed0
skip_errorfalse

Of everything in this pack's Veo family, this is the node I'd actually reach for. "Google Veo3.1 First Last Frame (Official Edition)" - the standard tier of Veo 3.1 doing first-last-frame generation, with the full control set and none of the tier trade-offs. You give it a start frame, an end frame, and a prompt, and it invents the video between them. That's the strongest trick in Veo's bag, on the tier with nothing taken away.

The FLF trick matters because it's the difference between hoping and directing. Plain image-to-video hopes the model takes your frame somewhere good; FLF tells it where to land. Storyboards, character two-pose shots, loopable b-roll, product pans from "here" to "there" - every one of those jobs is a first-last-frame job, and this node is the standard-tier way to do it.

Why you'd reach for it

Because the standard tier is the reference point - Fast and Lite are tuned for cost or speed, and this is what Veo 3.1 actually is when you don't compromise. Its improved image-to-video and audio behavior is what the 3.1 release was credited for, and FLF is where that shows. Combined with the Official Edition controls - duration, generate_audio, negative_prompt, seed - you get reproducibility and steering on top of the best trick. When a transition finally works here, it works.

How it works

Required: first_frame_url (IMAGE - the opening frame), prompt, resolution (720p default), duration (default 4), generate_audio (default true). Optional: last_frame_url (IMAGE - the destination frame), negative_prompt, aspect_ratio (16:9 default), seed (0 default). The frame inputs are named for the provider's URL-based API contract, but you wire in normal IMAGE tensors and the node handles the hosting side.

On queue the node uploads both frames, submits to Veo 3.1 through BizyAir's channel, polls, and returns video (VIDEO - preview or save like any local render), request_id (STRING - trace ID), and urls (STRING - clip location). The optional api_config (BIZYAIR_OPENAPI_CONFIG) overrides base_url/api_key per request; skip_error swaps a failed call for a placeholder so the workflow survives.

Install and setup

One-time install, identical across the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/siliconflow/BizyAirPlus.git
cd BizyAirPlus
python -m pip install -r requirements.txt

Restart ComfyUI (or install "BizyAirPlus" via ComfyUI Manager). No model files - the bizyair-cloudberry and bizytrd pip packages auto-install on startup. Click the BizyAirPlus button to ON, get an API key from bizyair.ai, enter it, and queue.

Common issues

  • The middle doesn't convince - FLF bridges plausibly, not deterministically. Mismatched lighting or composition between the two frames makes the model invent a jarring transition; make the frames agree before queueing.
  • Last frame silently ignored - if last_frame_url is unconnected, this quietly degrades to plain image-to-video. Check the wire.
  • Reproducibility - seed defaults to 0 (effectively random); pin an explicit value when a transition needs to be re-run identically.

Pack caveat: BizyAir auto-installs and sends your images to the cloud. Legitimate SiliconFlow product, but keep the switch OFF for local-only sessions.

CategoryBizyAirModelServices/BizyTRD/Veo

Inputs (11)

NameTypeDefaultDescription
first_frame_urlIMAGEFirst image
promptSTRINGPrompts
resolutionCOMBO720pResolution
durationCOMBO4Video duration
generate_audioBOOLEANtrueAudio
last_frame_urloptIMAGEEnd frame picture
negative_promptoptSTRINGBack prompts
aspect_ratiooptCOMBO16:9Aspect ratio
seedoptINT0-1–2147483647Seeds
api_configoptBIZYAIR_OPENAPI_CONFIG单次请求覆盖base_url和api_key
skip_erroroptBOOLEANfalse开启后遇到错误不中断工作流,输出对应类型的错误占位符

Outputs (3)

NameTypeDescription
videoVIDEO
request_idSTRING
urlsSTRING