EvoLink Veo 3.1 Reference-to-Video (Official)
Keep the Subject, Not Just the First Frame
- reference_image1
- reference_image2
- reference_image3
- video
- task_id
- status_info
- result_urls
- response_json
The reference-to-video mode is Veo 3.1's answer to the eternal image-to-video complaint: first-frame-only gives you a starting point, not a subject. Give this node up to three reference images and it holds character, style, and setting across the whole clip instead of just animating whatever's in frame one. It's the one you want when you've designed a consistent look elsewhere in the graph and need it to survive the motion.
How it works
Same EvoLink machinery as the rest of the Veo nodes - submit to /videos/generations, poll, download before the 24-hour links expire, return a native VIDEO output. The difference is in the inputs: reference_image1 is required, reference_image2 and reference_image3 are optional, and the model uses the whole set to anchor the subject and style. The images upload through EvoLink's own channel, so no external image host or URL wrangling - Load Image into the slots, done.
Two model flavors: veo-3.1-generate-preview (full) and veo-3.1-fast-generate-preview (faster, cheaper). aspect_ratio defaults to auto and derives from your references plus prompt. Quality goes to 4k, and audio is generated natively - but remember, that's the extra-charge toggle (generate_audio, on by default), so flip it off for drafts.
The inputs that matter
reference_image1- required. This is your subject anchor.reference_image2/reference_image3- optional; a character turn + a location shot beats a single image when you're after consistency.prompt- required, ~2000 tokens, Chinese-friendly.model,quality,duration(4/6/8s),seed,negative_prompt.
Outputs
video → Save Video, plus the standard EvoLink quartet - task_id (job log), status_info (summary), result_urls (24h links), response_json (full payload). Chain result_urls downstream into Topaz upscale or an edit node for a longer pipeline.
Install and gotchas
Ships in the comfyui-evolink pack. Manager → search EvoLink → Install → fully restart ComfyUI (close the console; a refresh isn't enough). Or:
cd ComfyUI/custom_nodes
git clone https://github.com/deeplearning-goethe/comfyui-evolink
Only requests as a dependency; no models, no GPU. API key from evolink.ai/dashboard/keys, fill once then blank, so the key doesn't get shared inside workflow JSON.
This node is the one that rewards feeding it good references - a single blurry image makes the model do all the work and you see it. Same error-code playbook as the pack: 401 bad key, 402 no credit, 429 rate limit; content-policy blocks and failures don't charge; unchanged reruns hit ComfyUI's cache and don't bill twice. If you specifically need a fixed first and last frame rather than free-form subject anchoring, the EvoLink Veo 3.1 Image-to-Video node (with its first_frame + last_frame inputs) is the sibling for that job.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | 镜头/画面描述,支持中文,最长约 2000 tokens。 | |
| model | COMBO | veo-3.1-generate-preview | 2 options: veo-3.1-generate-preview, veo-3.1-fast-generate-preview |
| reference_image1 | IMAGE | 参考图 1(必接,最多 3 张) | |
| aspect_ratioopt | COMBO | auto | auto:按参考图与 prompt 自动 |
| durationopt | COMBO | 8 | 视频时长(秒) |
| qualityopt | COMBO | 720p | 分辨率 |
| generate_audioopt | BOOLEAN | true | 生成原生音频(额外收费) |
| negative_promptopt | STRING | 不希望出现的内容 | |
| seedopt | INT | 00–4294967295 | 0=随机 |
| reference_image2opt | IMAGE | 参考图 2(可选) | |
| reference_image3opt | IMAGE | 参考图 3(可选) | |
| api_keyopt | STRING | EvoLink API Key(sk- 开头)。首次填写后自动保存到本机配置,之后可留空。分享工作流前请清空此框。获取:evolink.ai/dashboard/keys | |
| timeout_secondsopt | INT | 120060–3600 | 最长等待时间;生成失败或审核拦截的任务不扣费 |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | 生成结果(已下载落地,可直连保存节点) |
| task_id | STRING | EvoLink 任务 ID,可到 evolink.ai/zh/dashboard/logs 查询 |
| status_info | STRING | 人读状态摘要(模型/用时/消耗 credits) |
| result_urls | STRING | 结果原始链接,每行一个(24 小时过期) |
| response_json | STRING | 平台 GET /v1/tasks/{id} 的完整 JSON 响应(status/usage/results 等),供下游节点解析 |