Begin exactly from Image 1 and finish on Image 2. In one continuous four-second shot, the same beige vintage compact car switches on its lights, rolls from the wet shoulder into the near lane, and drives away along the forest-road curve. Use one stable, gentle pan only. Preserve the exact car body, beige paint, wheels, forest, road geometry, camera height, mist, and dawn lighting. Keep the movement physically plausible, with restrained tire spray and stable reflections, and settle cleanly into the final composition without morphing. Synchronized audio: one quiet engine start, tires on wet asphalt, light rain, and distant forest ambience. No cuts, no people, no extra vehicles, no readable text, no logos, no products, no advertising, no watermark.
Seedance 2.0 Mini Image-to-Video API
bytedance/seedance-2.0-mini/image-to-videoSeedance 2.0 Mini Image-to-Video API 将一张必填首帧和一张可选尾帧生成 4–15 秒的 480p 或 720p 视频。首帧必须放在 image_urls 第一项,尾帧放在第二项,aspect_ratio 只能使用 auto。
输入
生成音频
请求模型随视频生成音轨。
高级参数
返回最后一帧
保留视频主结果,并把最后一帧作为额外文件返回。
联网搜索
发送可选的 web_search 布尔字段。
输出
等待运行生成文件会显示在这里
设置输入、选择时长,然后运行异步视频任务。
继续使用
示例
REST API
快速开始
认证,提交一个公开首帧 URL,然后取得异步视频结果。
连接 Vidgo API
在服务端保存 VIDGO_API_KEY,并通过 Bearer Header 发送。
- 接口
- POST
https://api.vidgo.ai/api/generate/submit - 认证
- Authorization: Bearer VIDGO_API_KEY
提交一个生成任务
最小请求包含提示词、时长和一个 image_urls 项。
curl --request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "seedance-2.0-mini/image-to-video",
"callback_url": "https://webhook.site/b3fc9007-e1ec-4df1-97da-fd65c209e5d6",
"input": {
"prompt": "Begin exactly from Image 1 and finish on Image 2. In one continuous four-second shot, the same beige vintage compact car switches on its lights, rolls from the wet shoulder into the near lane, and drives away along the forest-road curve. Use one stable, gentle pan only. Preserve the exact car body, beige paint, wheels, forest, road geometry, camera height, mist, and dawn lighting. Keep the movement physically plausible, with restrained tire spray and stable reflections, and settle cleanly into the final composition without morphing. Synchronized audio: one quiet engine start, tires on wet asphalt, light rain, and distant forest ambience. No cuts, no people, no extra vehicles, no readable text, no logos, no products, no advertising, no watermark.",
"duration": 4,
"resolution": "720p",
"aspect_ratio": "auto",
"image_urls": [
"https://cdn.vidgo.ai/apis/models/bytedance/seedance-2.0-mini/image-to-video/v1/input-start-frame.png",
"https://cdn.vidgo.ai/apis/models/bytedance/seedance-2.0-mini/image-to-video/v1/input-end-frame.png"
],
"generate_audio": true,
"seed": 24082402
}
}'等待结果
只轮询非终态,或提供 callback_url 接收扁平终态对象。
查询状态
GET https://api.vidgo.ai/api/generate/status/ZC7XZS2EAVXDCRBQ初始每 2–5 秒查询,长任务逐步退避;finished 或 failed 停止。网络超时与任务 failed 必须分别处理,也可以使用 callback_url。
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "ZC7XZS2EAVXDCRBQ",
"status": "running",
"created_time": "2026-08-24T08:56:39"
}
}{
"code": 200,
"data": {
"task_id": "ZC7XZS2EAVXDCRBQ",
"status": "finished",
"created_time": "2026-08-24T08:56:39",
"progress": 100,
"error_message": null,
"files": [
{
"file_type": "video",
"file_url": "https://cdn.vidgo.ai/apis/models/bytedance/seedance-2.0-mini/image-to-video/v1/output.mp4"
}
]
}
}完整可运行示例
展开脚本包含提交、轮询、失败、超时与结果提取。
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "seedance-2.0-mini/image-to-video",
"callback_url": "https://webhook.site/b3fc9007-e1ec-4df1-97da-fd65c209e5d6",
"input": {
"prompt": "Begin exactly from Image 1 and finish on Image 2. In one continuous four-second shot, the same beige vintage compact car switches on its lights, rolls from the wet shoulder into the near lane, and drives away along the forest-road curve. Use one stable, gentle pan only. Preserve the exact car body, beige paint, wheels, forest, road geometry, camera height, mist, and dawn lighting. Keep the movement physically plausible, with restrained tire spray and stable reflections, and settle cleanly into the final composition without morphing. Synchronized audio: one quiet engine start, tires on wet asphalt, light rain, and distant forest ambience. No cuts, no people, no extra vehicles, no readable text, no logos, no products, no advertising, no watermark.",
"duration": 4,
"resolution": "720p",
"aspect_ratio": "auto",
"image_urls": [
"https://cdn.vidgo.ai/apis/models/bytedance/seedance-2.0-mini/image-to-video/v1/input-start-frame.png",
"https://cdn.vidgo.ai/apis/models/bytedance/seedance-2.0-mini/image-to-video/v1/input-end-frame.png"
],
"generate_audio": true,
"seed": 24082402
}
}
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')
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
while true; do
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/ZC7XZS2EAVXDCRBQ" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
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 2
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
done请求参数
model 与 callback_url 位于顶层;input 只接受公共字段和有序 image_urls。
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| model | string | 是 | — | 必须为 seedance-2.0-mini/image-to-video。 |
| callback_url | string (URL) | 否 | — | 公开终态回调地址。 |
| input | object | 是 | — | 模型输入对象。 |
| input.prompt | string | 是 | — | trim 后 1–20,000 个字符。 |
| input.image_urls | string[] | 是 | — | 1 个首帧 URL 和可选第 2 个尾帧 URL。 |
| input.duration | integer | 是 | — | 4–15 的整数,包括 4 和 15。 |
| input.resolution | string | 否 | 720p | 480p 或 720p。 |
| input.aspect_ratio | string | 否 | — | 省略或仅发送 auto。 |
| input.generate_audio | boolean | 否 | — | 可选生成音频。 |
| input.return_last_frame | boolean | 否 | — | 可选最后一帧。 |
| input.web_search | boolean | 否 | — | 可选的 boolean 字段。 |
| input.seed | integer | 否 | — | 无公开范围。 |
响应字段
提交返回任务身份;状态返回进度、所有文件或终态错误。
| 字段 | 类型 | 说明 |
|---|---|---|
| code | integer | 业务码,成功为 0 或 200。 |
| message | string | 响应消息。 |
| data.task_id | string | 状态查询 ID。 |
| data.status | string | 四种公开状态。 |
| data.created_time | string | 创建时间。 |
| data.progress | integer | 进度。 |
| data.files[] | array | 全部成功文件。 |
| data.files[].file_url | string | 结果 URL。 |
| data.files[].file_type | string | 视频、图片或其他类型。 |
| data.files[].watermark_url | string | null | 水印地址。 |
| data.error_message | string | null | 失败信息。 |
任务生命周期
只轮询非终态。
not_started已接收并排队。
running生成中。
finished成功终态,读取全部文件。
failed失败终态,停止并读取错误。
轮询与错误
- 认证401 表示 Bearer Key 缺失或无效。
- 校验400 表示字段、帧数量或比例无效。
- 轮询间隔从 2–5 秒开始,长任务、429 或 5xx 退避。
- 终态finished 或 failed 立即停止,并设置超时。
- 回调callback_url 接收扁平终态任务对象。
模型规格
| 规格 | 取值 | 说明 |
|---|---|---|
| 输入模式 | 1–2 帧 | image_urls 中必填首帧与可选尾帧。 |
| 输出 | 视频 + 可选最后一帧 | 异步混合文件结果。 |
| 分辨率 | 480p / 720p | 默认 720p。 |
| 时长 | 4–15 秒 | 整数范围。 |
| 画面比例 | Auto | 其他值会被拒绝。 |
| 计费 | 10 或 24 积分/秒 | 按输出秒数。 |
Seedance 2.0 Mini 图生视频 API 概览
Seedance 2.0 Mini Image-to-Video API 使用 image_urls 接收一张首帧和一张可选尾帧。prompt 说明首尾画面之间的主体动作与镜头移动;任务异步执行,生成文件通过状态查询或 callback_url 返回。
为什么使用 Seedance 2.0 Mini Image-to-Video API?
使用首帧提供画面信息。image_urls 第一项提供主体外观、环境、光线和初始构图。
使用尾帧指定结束画面。需要指定视频结束时的主体姿态或构图时,将第二张图片放入 image_urls。
分别说明主体和镜头运动。在 prompt 中先写主体如何移动,再写横移、推进、环绕或固定机位。
选择分辨率和整数时长。resolution 接受 480p 或 720p,duration 接受 4–15 的整数。
参数
| 参数 | 要求 | 说明 |
|---|---|---|
| prompt | 必填 | trim 后 1–20,000 个字符的动作与镜头说明。 |
| image_urls | 必填 | 1 张首帧和可选第 2 张尾帧的有序数组;删除首帧不会把尾帧提升为首帧。 |
| duration | 必填 | 4–15 秒整数;Playground 初始为 5 秒。 |
| resolution | 可选 | API 与 Playground 默认 720p。 默认值 720p480p |
| aspect_ratio | 可选 / 固定 | 只能省略或发送 auto;Playground 显示只读 Auto 并显式发送。 默认值 auto |
| generate_audio | 可选 | boolean。Playground 初始发送 true,API 未声明默认值。 |
| return_last_frame | 可选 | 请求额外最后一帧文件。 |
| web_search | 可选 | boolean 字段。 |
| seed | 可选 | 公开契约未声明范围的整数。 |
使用方法
选择首帧使用能看清主体外观、初始姿态、环境和构图的图片。
按需添加尾帧把尾帧放在 image_urls 第二项,指定视频结束时呈现的画面。
描述主体运动说明主体从首帧开始执行的动作以及动作结束的位置。
单独描述镜头运动明确横移、推进、环绕或固定机位。
提交并跟踪运行任务,然后轮询 task_id 或处理终态回调。
价格
图生视频使用无参考视频费率。首尾帧数量、generate_audio、return_last_frame、web_search 和 seed 当前不改变价格。
| 计费项 | 费率 | 说明 |
|---|---|---|
| 480p 输出 | 10 积分 / 输出秒 | $0.050/秒;5 秒为 50 积分($0.250)。 |
| 720p 输出 | 24 积分 / 输出秒 | $0.120/秒;5 秒为 120 积分($0.600)。 |
适用场景
产品动作展示提交产品首帧,并在 prompt 中说明旋转、移动或部件动作。
角色动作片段提交角色肖像或全身图片,并在 prompt 中指定一个主体动作。
首尾画面过渡用 image_urls 第一项指定开场画面,用第二项指定结束画面。
镜头运动对比从同一首帧分别生成固定、跟随、推进或环绕镜头。
提示词技巧
- 让首帧负责构图、身份、服装、环境和光线。
- 先写主体运动,再写镜头移动,避免两类指令互相竞争。
- 使用尾帧时描述过渡过程,不要重新复述两张图片。
- 除非需要变形,否则避免加入会改变角色身份的描述。
- 短片聚焦一个动作,并说明动作最终停在哪里。
注意事项
- image_urls 必须是 1–2 个公开 HTTP(S) URL,顺序为首帧、尾帧。
- Seedance 2.0 Mini Image-to-Video API 不接收参考素材字段,也不接收独立的 start_image_url 或 end_image_url。
- aspect_ratio 只允许 auto。
- Playground 图片上传策略为 JPEG/PNG/WebP、30 MB,不代表完整上游限制。
Seedance 2.0 Mini Image-to-Video API — 常见问题
Seedance 2.0 Mini Image-to-Video API 是什么?
Seedance 2.0 Mini Image-to-Video API 将一张首帧和一张可选尾帧生成视频。image_urls 第一项是首帧,第二项是尾帧;请求成功后返回用于查询异步任务的 task_id。
如何调用 Seedance 2.0 Mini Image-to-Video API?
使用 Bearer Key 向 /api/generate/submit 发送 POST,将模型 ID 设置为 seedance-2.0-mini/image-to-video,并在 input.image_urls 中提供一到两个公开 HTTP(S) URL。取得 task_id 后查询任务状态,或提供 callback_url。
Seedance 2.0 Mini Image-to-Video API 如何计费?
480p 每个输出秒使用 10 积分($0.050),720p 每个输出秒使用 24 积分($0.120)。时长和分辨率相同时,提交一张或两张图片的费率相同。
Seedance 2.0 Mini Image-to-Video API 支持哪些输入?
input 必须包含 prompt、4–15 的整数 duration 和包含一到两个有序图片 URL 的 image_urls。resolution 接受 480p 或 720p,aspect_ratio 只能省略或发送 auto。
如何获取 Seedance 2.0 Mini Image-to-Video API 的生成结果?
仅在状态为 not_started 或 running 时查询任务。状态变为 finished 或 failed 后停止查询;data.files 包含视频以及服务返回的其他文件。
三种 Seedance 2.0 Mini API 应该如何选择?
需要首帧和可选尾帧时使用 Seedance 2.0 Mini Image-to-Video API;没有源素材时使用 Seedance 2.0 Mini Text-to-Video API;需要图片、视频或音频参考时使用 Seedance 2.0 Mini Reference-to-Video API。


