Begin exactly on the first frame and finish on the last frame. One continuous 5-second locked close-up: the folded paper crane's wings slowly uncrease and lift until they match the end still. Preserve the same crane, paper color, table, window light, and camera. Native audio: dry paper flex, a faint wooden-table creak, quiet room tone. No logos, no readable text, no products, no packaging, no prices, no CTA, no advertising, no watermark, no brand marks.
FLUX 3 First Last Frame to Video API
blackforestlabs/flux-3/first-last-frame-to-videoFLUX 3 First Last Frame to Video 提供首尾两张静帧精确锚定起始与收束构图,结合文本提示词生成 5–20 秒连贯动态过渡与可选原生同步音频。以两个视觉定点为边界指导中间运动轨迹、转场变化与镜头调度,实现精准的分镜把控。
请同时上传首帧和尾帧。
生成的视频会显示在这里
填写提示词并添加所需素材,确认设置后点击“运行”。
示例
REST API
快速开始
完成 API 认证,提交首尾帧素材与过渡指令,再通过任务 ID 获取视频结果。
连接 Vidgo API
创建 API Key,仅保存在服务端,并在请求头中发送 Authorization: Bearer VIDGO_API_KEY。
- 接口
- POST
https://api.vidgo.ai/api/generate/submit - 认证
- Authorization: Bearer VIDGO_API_KEY
提交一次生成任务
按请求示例依次传入首尾两张图片 URL 与过渡提示词,提交后保存 task_id,用于查询进度与结果。
REQUEST_BODY=$(cat <<'JSON'
{
"model": "blackforestlabs/flux-3/first-last-frame-to-video",
"input": {
"prompt": "Begin exactly on the first frame and finish on the last frame. One continuous 5-second locked close-up: the folded paper crane's wings slowly uncrease and lift until they match the end still. Preserve the same crane, paper color, table, window light, and camera. Native audio: dry paper flex, a faint wooden-table creak, quiet room tone. No logos, no readable text, no products, no packaging, no prices, no CTA, no advertising, no watermark, no brand marks.",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "auto",
"sound": true,
"image_urls": [
"https://cdn.vidgo.ai/apis/models/blackforestlabs/flux-3/first-last-frame-to-video/v1/01/input-start-frame.webp",
"https://cdn.vidgo.ai/apis/models/blackforestlabs/flux-3/first-last-frame-to-video/v1/01/input-end-frame.webp"
]
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"等待结果
用 task_id 查询状态,not_started 或 running 继续,finished 或 failed 停止。成功后读取 data.files[].file_url。
查询状态
GET https://api.vidgo.ai/api/generate/status/{task_id}以 2 秒为基准间隔轮询状态,长时间任务可适当拉长间隔。仅在 not_started 或 running 时继续,遇到 finished 或 failed 立即停止。也可以在同一请求中配置 callback_url 接收回调通知。
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "task-flux3-flf-...",
"status": "running",
"created_time": "2026-09-16T10:00:00Z"
}
}{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "finished",
"files": [
{
"file_url": "https://storage.vidgo.ai/generated/video.mp4",
"file_type": "video"
}
],
"created_time": "2026-08-22T10:00:00Z",
"progress": 100,
"error_message": null
}
}完整可运行示例
展开后可查看包含 HTTP 与业务码检查、task_id 校验、轮询、终态处理和超时边界的完整脚本。
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "blackforestlabs/flux-3/first-last-frame-to-video",
"input": {
"prompt": "Begin exactly on the first frame and finish on the last frame. One continuous 5-second locked close-up: the folded paper crane's wings slowly uncrease and lift until they match the end still. Preserve the same crane, paper color, table, window light, and camera. Native audio: dry paper flex, a faint wooden-table creak, quiet room tone. No logos, no readable text, no products, no packaging, no prices, no CTA, no advertising, no watermark, no brand marks.",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "auto",
"sound": true,
"image_urls": [
"https://cdn.vidgo.ai/apis/models/blackforestlabs/flux-3/first-last-frame-to-video/v1/01/input-start-frame.webp",
"https://cdn.vidgo.ai/apis/models/blackforestlabs/flux-3/first-last-frame-to-video/v1/01/input-end-frame.webp"
]
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
doneinput 参数
下表列出 input 对象的可用参数、类型与默认值;请求示例同时展示顶层必填字段 model。按当前任务准备首尾帧素材并配置输出规格。
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| prompt | string | 是 | — | 描述连接首尾帧的动作演化、镜头运动及原生声音。 |
| image_urls | string[] | 是 | — | 包含恰好 2 个公开图片 URL 的数组。索引 0 为首帧,索引 1 为尾帧。 |
| duration | integer | 否 | 5 | 输出视频时长,取值范围为 5 至 20 秒。 |
| resolution | string | 否 | 720p | 输出分辨率,可选 720p 或 1080p。 |
| aspect_ratio | string | 否 | auto | 输出画幅比例,支持 auto、21:9、2:1、16:9、4:3、1:1、3:4、9:16。 |
| sound | boolean | 否 | true | 是否生成原生音频,可选 true 或 false。 |
响应字段
提交成功后返回任务 ID;状态查询提供任务进度、输出文件,以及任务失败时的错误详情。
| 字段 | 类型 | 说明 |
|---|---|---|
| code | integer | 业务结果码;成功响应使用 0 或 200。 |
| message | string | 可读说明或错误详情。 |
| data.task_id | string | 用于状态查询路径的任务 ID。 |
| data.status | string | not_started、running、finished 或 failed。 |
| data.created_time | string | 任务创建时间,date-time 格式。 |
| data.progress | integer | 任务进度,范围为 0–100;仅在响应包含此字段时提供。 |
| data.files[] | array | 成功任务的全部输出文件,按响应顺序返回。 |
| data.files[].file_url | string | 生成视频的公开 URL。 |
| data.files[].file_type | string | 文件类型,例如 video。 |
| data.error_message | string | null | 状态为 failed 时的失败详情。 |
任务生命周期
在 not_started 或 running 状态下继续查询;收到 finished 或 failed 后结束轮询,并分别处理输出文件或错误详情。
not_started任务已接受,等待开始。
running正在生成。继续使用同一 task_id 轮询。
finished生成成功。从 data.files[].file_url 读取视频地址。
failed生成失败。读取 data.error_message 并停止轮询。
轮询与错误
- 认证收到 401 时,检查 Authorization 中的 Bearer API Key,更新凭据后重试。
- 校验收到 400 时,核对 image_urls 数组是否恰好包含 2 个有效图片 URL、参数取值与积分余额,调整后重新提交。
- 网络与超时状态查询遇到网络错误或超时时,保留原 task_id 并重试查询,再根据返回的任务状态处理结果。
- 轮询间隔以 2 秒为基准间隔发起状态查询;如任务耗时较长,可逐步增加查询间隔。
- 终态仅在 not_started 或 running 时继续。遇到 finished 或 failed 立即停止。
- 回调选项可在请求顶层提供 callback_url 接收终态任务对象;投递失败时仍可轮询。
模型规格
| 规格 | 取值 | 说明 |
|---|---|---|
| 输入模式 | 2 张图片(首尾帧)+ 提示词 | 有序传入首帧与尾帧图片 URL,辅以动作指引提示词。 |
| 输出 | 带原生音频的视频 | 提交后返回异步任务 ID,生成标准 MP4 视频。 |
| 时长 | 5–20 秒 | 整数取值,默认 5 秒。 |
| 分辨率 | 720p / 1080p | 默认 720p。 |
| 画幅比例 | 8 种比例(含 auto) | auto、21:9、2:1、16:9、4:3、1:1、3:4、9:16,默认 auto。 |
| 计费依据 | 输出秒数 × 分辨率费率 | 720p 为 34 积分/秒,1080p 为 58 积分/秒。 |
FLUX 3 First Last Frame to Video
FLUX 3 First Last Frame to Video 专为需要精确控制镜头起止状态的创作者打造。传入有序的首尾两帧图片作为视觉两极,模型能自动推演其间符合物理规律的位移、形变与摄像机运镜,生成 5–20 秒高保真过渡动态并同步配齐原生环境音效。
为什么选择此端点?
双锚点精准构图控制严格锁定镜头开场画面(首帧)与落幅构图(尾帧),引导视频在指定姿态与场景位置上收束。
平滑物理插值过渡基于深度运动时空模型,计算两张静帧之间的连贯位移与形变轨迹,生成自然的肢体动作与场景演进。
提示词导演中间过程在 prompt 中指引过渡中的具体细节,例如运镜路径、主体动作转折及灯光明暗变化,赋予防抖过渡以创意叙事。
原生音画同步生成随画面生成起承转合的同步原生音频,使脚步声、环境音及配乐自然契合从起点到终点的动作演变。
5–20 秒灵活时长调节支持在 5 至 20 秒之间设定过渡时长,既可做迅捷利落的转场,也能表现悠长舒缓的姿态变化。
720p 与 1080p 高清输出提供 720p 与 1080p 两种高清档位,适合从首帧到尾帧的高清动态呈现。
参数
| 参数 | 要求 | 说明 |
|---|---|---|
| prompt | 必填 | 字符串。指导从首帧过渡到尾帧的主体动作、镜头轨迹、状态变化及原生音频线索。 |
| image_urls | 必填 | 包含恰好 2 个公开图片 URL 的字符串数组。第 0 项为首帧(起始画面),第 1 项为尾帧(结束画面)。 |
| duration | 可选 | 整数。设置生成视频的时长,取值范围为 5 至 20 秒;体验区默认预选 5 秒。 默认 5 |
| resolution | 可选 | 字符串。设置视频输出分辨率,可选 720p 或 1080p;体验区默认预选 720p。 默认 720p1080p |
| aspect_ratio | 可选 | 字符串。控制视频画幅比例,支持 auto 及常见横纵比例;体验区默认预选 auto。 默认 auto21:92:116:94:31:13:49:16 |
| sound | 可选 | 布尔值。控制是否随视频同步生成原生音频;体验区默认预选 true。 默认 truefalse |
如何使用
准备首尾两帧图片获取开场静帧(首帧)与目标结束静帧(尾帧)的公开 URL,按顺序填入 image_urls 数组([首帧, 尾帧])。
编写过渡动作指令在 prompt 中描述主体如何从起始姿态过渡到结束姿态、摄像机的运镜运动及伴随的环境音效。
设定时长与节奏在 5 至 20 秒范围内设定生成时长,快节奏动作建议 5 秒,复杂平缓过渡可增加至 10 秒以上。
选择分辨率与画幅依据发布要求配置 720p 或 1080p 分辨率,画幅比例可保持 auto 或指定常用比例。
配置声音选项保持 sound 为 true 以同步生成契合动作变化的音频,或设为 false 仅生成画面。
提交运行并保存视频核对费用后点击“运行”,在任务处理完毕后预览流畅的首尾过渡效果并下载 MP4 视频。
价格
按生成的输出视频时长秒数与分辨率阶梯计费,原生同步音频包含在生成结果中。1 积分 = $0.005。
| 用量 | 费率 | 说明 |
|---|---|---|
| 720p | 34 积分 / 秒($0.17 / 秒) | 默认 5 秒 720p 为 170 积分($0.85)。 |
| 1080p | 58 积分 / 秒($0.29 / 秒) | 5 秒 1080p 为 290 积分($1.45)。 |
适用场景
商业分镜精准转场通过指定上下两个场景的关键静态构图,自然生成镜头之间的推拉穿梭或转场动画。
产品形态演变展示将产品开合、拆解前后的外观分别作为首帧和尾帧,生成展示内部构造的平滑过渡动画。
人物姿态与动作衔接设定角色的起跑姿态与冲线姿态,中间由模型智能补全富有爆发力的运动轨迹与脚步声。
无缝循环动态短片将同一张图片或高相似静帧分别设为首帧与尾帧,引导首尾衔接的流转循环视频。
专业建议
- 首帧与尾帧尽量保持主体身份、光影色调与透视逻辑的一致性,有助于模型生成极其自然的过渡动作。
- 在提示词中重点指引动作的过渡方式,例如“主体从坐姿缓缓站起,走向窗前,镜头跟随平移”。
- 若首尾两帧主体位移较大,建议配置 8 秒以上的时长,为动作过渡留出充足的物理运动时间。
- 制作无缝循环动图时,可将同一张图片同时作为首帧与尾帧,并在提示词中要求循环微动态。
- 在提示词中针对动作转折点补充音效描述,如“动作起始为轻微呼吸声,收尾伴随清脆的关门声”。
使用说明
- FLUX 3 First Last Frame to Video 要求 image_urls 数组必须恰好包含 2 个公开图片 URL,索引 0 代表起点,索引 1 代表终点。
- 生成视频的第 1 帧严格对齐首帧,最后一帧严格对齐尾帧,中间各帧平滑推演插值。
- 通过 API 提交后获得 task_id,随后通过查询接口轮询直至 finished 或 failed 终态。
- 生成的 MP4 文件可直接嵌入视频剪辑软件,首尾画面能够无缝对接已有镜头分轨。
相关端点
FLUX 3 First Last Frame to Video API 常见问题
FLUX 3 First Last Frame to Video API 是什么?
FLUX 3 First Last Frame to Video 是 Black Forest Labs 用于根据两张定点图像生成过渡视频的模型。它以用户提供的首帧与尾帧作为严格的起止构图边界,结合文本提示词生成 5 至 20 秒、最高 1080p 分辨率并包含可选原生同步音频的连贯动态短片。依托强大的物理插值算法,模型在保持起止两端构图与角色质感高度一致的前提下,推演出平滑自然的运镜轨迹与物理过渡过程。你可以通过 API 进行程序化调用,也可以在上方体验区直接在线试用。
FLUX 3 First Last Frame to Video 对两张图片的顺序有何要求?
传入 image_urls 数组时必须严格遵循顺序:数组中的第 1 个元素(索引 0)作为起始首帧,第 2 个元素(索引 1)作为结束尾帧。模型将据此推演从起点向终点的单向时间线演化。
如何通过 prompt 引导首尾两帧之间的动作细节?
提示词应重点描述从首帧状态过渡到尾帧状态的具体行为和运镜方式。例如“人物从左侧缓步走向右侧长椅坐下,镜头保持平行跟随”,明确中间过程有助于模型生成符合逻辑的连续插值画面。
如何使用 FLUX 3 First Last Frame to Video 制作闭环循环动画?
制作无缝循环视频时,可以将同一张静态图片同时作为首帧与尾帧传入(image_urls 填入两个相同 URL),并在提示词中描述一个闭环的动态动作(例如“微风吹拂发丝并回归初始状态”),有助于生成首尾衔接的循环镜头。
FLUX 3 First Last Frame to Video 在音画同步方面有何表现?
当 sound 设为 true 时,模型会结合首尾画面的场景属性以及提示词中描写的过渡动作,自动生成契合动作节奏的起承转合音效(如脚步声、布料摩擦声及环境氛围音)。
首尾两帧画面差异较大时,时长该如何配置?
如果首尾静帧在构图、主体姿态或光影上有显著位移变化,建议将 duration 设置为 8 至 15 秒以上,赋予模型充分的时长展现中间的物理加速与缓冲过程,避免过渡过于急促。
如果需要控制多于两个分镜关键画面,应该使用哪个端点?
首尾帧端点专注于双端点过渡控制;若需要沿 24 fps 时间轴定点规划多达 10 个镜头静帧,建议使用 FLUX 3 Keyframes to Video 端点进行细致的时间线多镜头编排。



