Begin exactly from Image 1 and finish on Image 2. In one continuous four-second locked-camera shot, the same observatory dome opens along its existing seam while the same telescope rises from its stowed position and rotates upward through the opening. Preserve the building footprint, white metal panels, concrete base, service opening, telescope construction, foreground rocks, mountains, frost, star field, camera position, crop, and blue-hour color throughout. Mechanical movement must be continuous, correctly hinged, and free of warping; settle cleanly into the final composition. Synchronized audio: a low dome motor, two restrained gear changes, a soft metal stop, and distant alpine wind. No cuts, no people, no vehicles, no extra structures, no readable text, no logos, no brands, no products, no advertising, no watermark.
Seedance 2.0 Image-to-Video API
seedance-2.0/image-to-videoSeedance 2.0 图片生成视频接口以必填首帧确定主体和构图,可用可选尾帧约束结束状态。请分开描述主体运动与镜头运动,输出时长为 4–15 秒,画面比例固定为 Auto,最高支持 4K。
输入
拖拽文件、粘贴剪贴板素材,或输入 URL。
拖拽文件、粘贴剪贴板素材,或输入 URL。
高级参数
生成音频
请求模型随视频生成音轨。
返回最后一帧
保留视频主结果,并把最后一帧作为额外文件返回。
联网辅助
发送可选的联网辅助生成字段。
输出
等待运行生成文件会显示在这里
设置输入、选择时长,然后运行异步视频任务。
继续使用
示例
REST API
快速开始
完成认证,提交最小合法的图片生成视频请求,再取得异步视频结果。
连接 Vidgo API
创建 API 密钥,仅保存在服务端,并通过 Bearer Header 发送。
- 端点
- POST
https://api.vidgo.ai/api/generate/submit - 认证
- Authorization: Bearer VIDGO_API_KEY
提交一个生成任务
发送精确模型 ID 和当前模式必填字段,成功后立即取得 task_id。
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/image-to-video",
"input": {
"prompt": "Begin exactly from Image 1 and finish on Image 2. In one continuous four-second locked-camera shot, the same observatory dome opens along its existing seam while the same telescope rises from its stowed position and rotates upward through the opening. Preserve the building footprint, white metal panels, concrete base, service opening, telescope construction, foreground rocks, mountains, frost, star field, camera position, crop, and blue-hour color throughout. Mechanical movement must be continuous, correctly hinged, and free of warping; settle cleanly into the final composition. Synchronized audio: a low dome motor, two restrained gear changes, a soft metal stop, and distant alpine wind. No cuts, no people, no vehicles, no extra structures, no readable text, no logos, no brands, 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/image-to-video/v1/input-start-frame.png",
"https://cdn.vidgo.ai/apis/models/bytedance/seedance-2.0/image-to-video/v1/input-end-frame.png"
],
"generate_audio": true,
"seed": 26082702
}
}'等待结果
仅轮询 not_started 或 running,或使用 callback_url 接收平铺终态对象。
跟踪状态
GET https://api.vidgo.ai/api/generate/status/8HZGPXXLKL5B39OS初始轮询间隔约 2 秒,长任务逐步退避并设置超时。finished 与 failed 都是终态。网络失败、请求超时和任务失败应分别处理;callback_url 使用同一请求契约。
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "8HZGPXXLKL5B39OS",
"status": "running",
"created_time": "2026-08-27T14:16:55"
}
}{
"code": 200,
"data": {
"task_id": "8HZGPXXLKL5B39OS",
"status": "finished",
"progress": 100,
"created_time": "2026-08-27T14:16:55",
"error_message": null,
"files": [
{
"file_type": "video",
"file_url": "https://cdn.vidgo.ai/apis/models/bytedance/seedance-2.0/image-to-video/v1/output.mp4"
}
]
}
}完整可运行示例
示例包含 HTTP 与业务码检查、task_id 校验、退避轮询、超时、终态与结果提取。
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "seedance-2.0/image-to-video",
"input": {
"prompt": "Begin exactly from Image 1 and finish on Image 2. In one continuous four-second locked-camera shot, the same observatory dome opens along its existing seam while the same telescope rises from its stowed position and rotates upward through the opening. Preserve the building footprint, white metal panels, concrete base, service opening, telescope construction, foreground rocks, mountains, frost, star field, camera position, crop, and blue-hour color throughout. Mechanical movement must be continuous, correctly hinged, and free of warping; settle cleanly into the final composition. Synchronized audio: a low dome motor, two restrained gear changes, a soft metal stop, and distant alpine wind. No cuts, no people, no vehicles, no extra structures, no readable text, no logos, no brands, 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/image-to-video/v1/input-start-frame.png",
"https://cdn.vidgo.ai/apis/models/bytedance/seedance-2.0/image-to-video/v1/input-end-frame.png"
],
"generate_audio": true,
"seed": 26082702
}
}
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/8HZGPXXLKL5B39OS" \
--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,额外属性会被拒绝或忽略。
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| model | string | 是 | — | 必须为 seedance-2.0/image-to-video. |
| callback_url | string (URL) | 否 | — | 接收终态任务对象的公开 HTTP(S) 地址。 |
| input | object | 是 | — | 只包含当前模式公开字段。 |
| input.prompt | string | 必填 | — | trim 后 1–20,000 个字符;体验区提供示例提示词。 |
| input.duration | integer | 必填 | — | 4–15 的整数,包含边界;体验区默认 5 秒。 |
| input.resolution | string | 必填 | 720p | 支持 480p、720p、1080p、4k;体验区默认 720p。 |
| input.aspect_ratio | string | 必填 | auto | 只能显式发送 auto。 |
| input.image_urls | string[] | 必填 | — | 1–2 个公开 HTTP(S) 图片 URL;顺序为首帧、可选尾帧。 |
| input.generate_audio | boolean | 可选 | true | boolean;体验区默认并显式发送 true。 |
| input.return_last_frame | boolean | 可选 | false | boolean;体验区默认并显式发送 false。 |
| input.web_search | boolean | 可选 | false | boolean;体验区默认并显式发送 false。 |
| input.seed | integer | 可选 | — | 整数;公开契约未声明范围,留空时省略。 |
| 不接受的媒体字段 | — | — | — | start_image_url, end_image_url, reference_*_urls, video_url, video_urls |
响应字段
提交响应提供任务身份,状态响应提供进度、全部结果文件或失败信息。
| 字段 | 类型 | 说明 |
|---|---|---|
| code | integer | 业务返回码;成功兼容 0 与 200。 |
| message | string | 可选的响应或错误说明。 |
| data.task_id | string | 提交后用于查询状态的任务 ID。 |
| data.status | string | not_started, running, finished, or failed. |
| data.created_time | string | 任务创建时间。 |
| data.progress | integer | 已报告的完成百分比。 |
| data.files[] | array | 按返回顺序排列的全部结果文件。 |
| data.files[].file_url | string | 结果文件直链。 |
| data.files[].file_type | string | video、image 或其他公开类型。 |
| data.files[].watermark_url | string | null | 后端提供时的水印文件 URL。 |
| data.error_message | string | null | 失败终态的错误说明。 |
任务生命周期
not_started 与 running 为非终态;finished 与 failed 为终态。
not_started请求已接收,等待执行。
running生成进行中,按退避策略继续轮询。
finished成功终态,读取全部 files。
failed失败终态,读取 error_message 并停止。
轮询与错误
- 认证401 表示 Bearer Key 缺失或无效,修正后再请求。
- 校验400 表示请求违反当前端点契约,按字段错误修正。
- 余额不足余额不足与普通 400 分开提示所需积分和美元金额。
- 轮询与超时约 2 秒开始并逐步退避;网络失败和客户端超时不是任务 failed。
- 终态与 callbackfinished 或 failed 立即停止;callback_url 可接收同一任务的平铺终态对象。
模型规格
| 规格 | 取值 | 说明 |
|---|---|---|
| 输入模式 | 1–2 张图片 | 首帧必填,尾帧可选。 |
| 输出 | 异步视频任务 | 可能返回多个文件,按顺序全部展示。 |
| 分辨率 | 480p / 720p / 1080p / 4k | Standard 提供完整四档。 |
| 时长 | 4–15 秒整数 | 包含边界值。 |
| 画面比例 | auto | 图片模式只能为 auto。 |
| 计费依据 | 输出秒数 | 480p: 20 credits ($0.100)/s; 720p: 40 credits ($0.200)/s; 1080p: 90 credits ($0.450)/s; 4k: 200 credits ($1.000)/s |
相关模型
关于 Seedance 2.0 图片生成视频 API 的常见问题
Seedance 2.0 图片生成视频 API 是什么?
Seedance 2.0 是 ByteDance Seedance 模型。当前图片生成视频端点接收提示词、必填首帧和可选尾帧,并按照文档中的 REST 请求结构返回异步视频生成任务。
如何调用 Seedance 2.0 图片生成视频 API?
通过 Authorization: Bearer VIDGO_API_KEY 调用 POST /api/generate/submit。成功响应包含 task_id,可用于统一状态查询。
Seedance 2.0 图片生成视频 API 如何计费?
按输出秒数乘以分辨率费率计算。480p: 20 credits ($0.100)/s; 720p: 40 credits ($0.200)/s; 1080p: 90 credits ($0.450)/s; 4k: 200 credits ($1.000)/s。
Seedance 2.0 图片生成视频 API 接受哪些输入?
接受 1–20,000 字符提示词、4–15 秒整数、480p、720p、1080p、4k,以及按首帧、尾帧顺序排列的 1–2 个 image_urls;aspect_ratio 只能为 auto。
如何获取生成视频?
轮询 GET /api/generate/status/{task_id},或提交 callback_url。只在 not_started、running 时继续;finished 后从 data.files[].file_url 读取全部结果,failed 时停止并处理错误。
应该选择哪个 Seedance 2.0 端点?
无源素材选择 Text,首帧或首尾帧选择 Image,需要图片、视频或音频共同引导时选择 Reference。Standard 提供到 4K 的更多分辨率,Fast 仅 480p/720p 并采用较低当前费率。















