Seedance 2.0 Fast
使用 Seedance 2.0 Fast,通过文本、首尾帧图片或多模态素材来生成视频。本页详细介绍了该模型从发起请求到获取结果的完整工作流。
API 模型 ID: seedance-2-0-fast
视频生成采用异步模式。请保存创建任务时返回的 taskId,后续用于查询状态或接收 Webhook 回调。
模型能力
| 功能 | 支持的取值 |
|---|---|
| 输出分辨率 | 480p · 720p |
| 输出时长 | 4–15 秒 |
| 画面比例 | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive |
| 参考图片 | 最多 9 张图片 |
| 参考视频 | 最多 3 个视频 |
| 参考音频 | 最多 3 个音频文件 |
| 素材总数 | 合计最多 12 个参考素材文件 |
| 视频/音频组总时长限制 | 15 秒 |
| seed | -1到4294967295 |
价格与积分
视频生成按计费时长扣除积分,时长以秒为单位。没有视频输入时,按输出时长计费;有视频输入时,还需加上参考视频的时长。
下表列出的是每秒需要消耗的积分,并非整个任务的总费用。每秒单价取决于所选模型、输出分辨率,以及是否在参考视频生成模式中传入视频素材。具体计算方式和示例见表格下方。
| 输出分辨率 | 无视频输入 | 有视频输入 |
|---|---|---|
480p | 5 积分/秒 | 3 积分/秒 |
720p | 10 积分/秒 | 6 积分/秒 |
- 无视频输入:输出视频秒数 × 无视频单价。
- 有视频输入:(输出视频秒数 + 经解析的参考视频秒数) × 有视频单价。服务器将解析参考视频的总时长,并在计费前向上取整至整秒数。
- 仅上传图片或音频参考时,仍按“无视频单价”计费。“有视频单价”仅在“参考视频生成”模式且确实上传了视频素材时适用。
计费案例
5 秒 720p 文字生成视频:5 × 10 = 50 积分。
5 秒 720p 输出(附带 5 秒参考视频):(5 + 5) × 6 = 60 积分。
积分将在提交任务时预扣,并在任务成功后实际扣除。失败或超时的任务将进入退款流程。若计费状态显示为 refund_failed,代表自动退款未成功,请检查 API 日志或联系客服支持。
身份验证
请在控制台中创建 API 密钥。完整的密钥仅会显示一次,请妥善保存在您的服务器上,并在每次发起 API 请求时将其作为 Bearer 令牌携带于请求头中。
基础 URL
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/json在运行示例代码前,请先设置 SEEVIO_API_KEY 环境变量。JavaScript 示例适用于 Node.js 服务端环境;Python 示例需使用 requests 库。
快速开始
提交这个最简请求并保存返回的 taskId,随后使用下方的查询接口获取结果。创建响应中返回的积分(credits)为该任务冻结的预扣积分。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'创建任务的响应示例
上方请求被成功接收后,接口会返回以下 JSON。taskId 是任务标识,用于后续查询任务状态;credits 是本次任务预扣的积分数量。此响应仅表示任务已创建,不代表视频已生成完成。你需要使用轮询查询任务状态,或通过 Webhook 来接收视频结果。
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 50
}创建任务
POST https://api.seevio.ai/v1/videos/generations发送包含 model、input 以及可选参数 callback_url 的 JSON 对象。请务必指定本页中显示的对应模型 ID;若不指定 model,系统将默认选择 seedance-2-0。
请求体
| 字段 | 类型 | 是否必填 | 说明及约束 |
|---|---|---|---|
model | string | 是 | 模型 ID。使用 Seedance 2.0 Fast 时,请填写 seedance-2-0-fast。 |
callback_url | string | 否 | 用于接收任务完成或失败回调的公网 HTTPS 接口。不支持私有网络或本地 localhost。 示例: https://example.com/webhooks/seevio |
input | object | 是 | 生成设置。必须包含非空的 prompt 提示词。 |
输入参数
image_urls、video_urls 和 audio_urls 均使用 URL 字符串数组(string[])传入。每个元素直接填写媒体文件的 URL。所有 URL 都必须是公网可访问的 HTTPS 地址。
| 字段 | 类型 | 是否必填 | 默认值 | 说明及约束 |
|---|---|---|---|---|
input.prompt | string | 是 | — | 所有模式均须提供 prompt。去除首尾空白前最多 10,000 个字符,且不能全部为空白字符。 示例: A cat surfing at sunset |
input.generation_type | string | 否 | text-to-video | text-to-video 仅使用 prompt;image-to-video 使用 1–2 张图片;reference-to-video 支持使用图片、视频和/或音频作为参考素材。 支持的取值 text-to-video | image-to-video | reference-to-video |
input.image_urls | string[] | 视条件而定 | [] | image-to-video 模式下:传入 1 张图片作为首帧,或按顺序传入 2 张图片分别作为首帧和尾帧。reference-to-video 模式下:最多支持 9 张图片。在 text-to-video 模式下此字段会被忽略。 示例: ["https://example.com/first-frame.jpg"] |
input.video_urls | string[] | 视条件而定 | [] | 仅在 reference-to-video 模式下生效;最多支持 3 个视频,总时长不能超过 15 秒。在其他模式下会被忽略。 示例: ["https://example.com/source.mp4"] |
input.audio_urls | string[] | 视条件而定 | [] | 仅在 reference-to-video 模式下生效;最多支持 3 个音频文件,总时长不能超过 15 秒。在其他模式下会被忽略。 该模型不支持仅使用音频作为参考素材。传入 audio_urls 时,必须同时通过 image_urls 提供至少一张参考图片,或通过 video_urls 提供至少一个参考视频。 示例: ["https://example.com/music.mp3"] |
input.duration | integer | 否 | 5 | 整数类型的输出时长,范围为 4 到 15 秒。 支持的取值 4–15示例: 5 |
input.aspect_ratio | string | 否 | adaptive | 输出视频的画面比例。设为 adaptive 将由模型自动决定画面比例。 支持的取值 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive示例: adaptive |
input.resolution | string | 否 | 720p | 请使用此处列出的支持输出分辨率之一。 支持的取值 480p | 720p示例: 720p |
input.generate_audio | boolean | 否 | true | 是否同步生成音效/音频。 支持的取值 true | false示例: true |
input.watermark | boolean | 否 | false | 是否在生成的视频中添加 AI 水印。 支持的取值 true | false示例: false |
input.web_search | boolean | 否 | false | 在模型支持的前提下,是否允许启用联网搜索功能。 支持的取值 true | false示例: false |
input.return_last_frame | boolean | 否 | false | 是否获取最终生成的视频最后一帧。当该帧生成完毕时,查询接口中 data.last_frame_url 会返回对应地址,否则为 null。 支持的取值 true | false示例: true |
input.seed | integer | 否 | -1 | 整数类型随机种子,范围为 -1 到 4294967295。传入 -1 将使用随机种子。 支持的取值 -1到4294967295示例: 42 |
布尔值字段必须为 JSON 的 true 或 false,不能使用字符串或数字。
创建任务响应
HTTP 200 返回 taskId(字符串)和 credits(数字)。这仅代表任务已成功接收,不代表生成完成。下方显示的积分对应 5 秒 720p 快速入门示例的预扣积分。
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 50
}生成模式与示例
文字生成视频
仅根据文字提示词生成视频。在此模式下,传入的媒体 URL 会被忽略。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'首帧参考
提供一张图片作为视频的首帧,并在提示词中描述您期望的动态画面。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg"
],
"aspect_ratio": "adaptive"
}
}'首尾帧参考
按顺序提供两个图片 URL:首帧图片和尾帧图片。此示例还设置了获取视频最后一帧的请求。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"aspect_ratio": "adaptive",
"return_last_frame": true
}
}'多模态参考
将图片、视频和音频参考素材组合使用。提示词仍为必填项。由于包含了参考视频,扣费将应用有视频输入的计费公式。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
"duration": 5,
"resolution": "720p",
"generation_type": "reference-to-video",
"image_urls": [
"https://example.com/character.jpg"
],
"video_urls": [
"https://example.com/camera.mp4"
],
"audio_urls": [
"https://example.com/ambience.mp3"
],
"aspect_ratio": "adaptive"
}
}'查询任务状态
GET https://api.seevio.ai/v1/tasks/{taskId}请将示例中的 ID 替换为创建任务时返回的 taskId。查询接口仅支持查询当前 API 密钥所属用户的任务;若 ID 无权访问或不存在,将返回 HTTP 404 错误。
建议每 10–20 秒轮询一次,遇到 HTTP 429 时请增加重试间隔(退避),并在状态为 completed 或 failed 时停止轮询。生产环境中推荐使用 Webhook。下方的代码示例均只执行单次查询。
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| 状态 | 说明及约束 |
|---|---|
queued | 任务已接收,正在排队等待调度。 |
generating | 视频正在生成中。 |
completed | 生成成功。请在视频链接过期前下载 data.results 中的文件。 |
failed | 生成失败。可以通过 failed_reason 和 billing_status 排查原因。 |
| 字段 | 类型 | 说明及约束 |
|---|---|---|
id | string | 任务唯一标识。即创建任务响应中返回的 taskId。 |
created_at | number | 任务创建的 Unix 时间戳(秒)。 |
model | string | 执行该任务所调用的公共模型 ID。 |
billing_status | string | 计费状态:reserved(已预扣)、charged(已扣除)、refunded(已退款)或 refund_failed(退款失败)。 |
credits | number | 该任务预扣的积分。发生退款后,此数值仍会保留;请通过 billing_status 判断最终的实际扣费结果。 |
failed_reason | string | null | 任务失败时的具体原因;任务未失败时为 null。失败任务的查询响应中会省略 data 字段。 |
data | object | 任务成功生成或处于处理中时存在。包含输出内容和处理详情。 |
data.results | string[] | 生成的视频 URL 数组。在任务完成前或视频过期后,该数组为空。 |
data.video_expires_at | string | null | 视频过期时间,格式为 ISO 8601 时间戳;暂不可用时为 null。请在此时间前下载并保存结果。 |
data.last_frame_url | string | null | 请求了最后一帧且成功获取时返回其 URL,否则为 null。 |
data.processing_time | number | null | 服务商的处理耗时(秒);暂不可用时为 null。 |
任务已完成:查询响应与视频结果
查询返回 status 为 completed 时,表示视频已生成完成。你可以从 data.results 获取视频地址,并在 data.video_expires_at 指定的过期时间前下载保存。billing_status 为 charged 表示本次任务已按预扣积分完成扣费。
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-fast",
"status": "completed",
"billing_status": "charged",
"credits": 50,
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}任务已失败:查询响应与退款状态
查询返回 status 为 failed 时,表示视频生成未成功。请通过 failed_reason 查看失败原因,通过 billing_status 确认退款结果。以下示例中的 refunded 表示积分已退还;credits 仍保留原预扣积分数量,失败响应不包含 data 字段。
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-fast",
"status": "failed",
"billing_status": "refunded",
"credits": 50,
"failed_reason": "provider_failed"
}Webhook
在创建任务的请求中设置 callback_url,当任务完成或失败时,系统将向该地址发送 JSON POST 请求。接收端需在 15 秒内返回 2xx 响应。若推送失败系统会重试,请根据任务 ID(id)在您的接收端做好幂等处理。
你的回调接口需支持接收 POST 请求及 JSON 格式的请求体(Content-Type: application/json)。
创建带有 Webhook 回调的任务
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
},
"callback_url": "https://example.com/webhooks/seevio"
}'Webhook 接收的数据格式与主动查询接口略有不同:Webhook 中没有 billing_status 和 credits 字段;失败的详细原因和退款积分会被放在 data.failed_reason 和 data.credits_refunded 中。Webhook 中的 created_at 为该回调事件触发时的 Unix 时间戳(秒)。
任务完成回调:返回生成的视频结果
视频生成成功后,系统会发送 status 为 completed 的回调。你可以通过 id 关联对应任务,从 data.results 获取视频地址,并在 data.video_expires_at 指定的过期时间前下载并保存视频。
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-fast",
"status": "completed",
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}任务失败回调:返回失败原因和退款信息
视频生成失败后,系统会发送 status 为 failed 的回调。你可以通过 id 关联对应任务,从 data.failed_reason 查看失败原因,从 data.credits_refunded 查看已退还的积分数量。
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-fast",
"status": "failed",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 50
}
}接收端代码示例
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrls = callbackData.data.results;
// Save the video URLs and mark this task as completed in your application.
console.log(callbackData.id, videoUrls);
}
if (callbackData.status === "failed") {
const { failed_reason, credits_refunded } = callbackData.data;
// Record the failure reason and refunded credits for this task.
console.error(callbackData.id, failed_reason, credits_refunded);
}
return new Response(null, { status: 200 });
}此 Next.js 示例直接读取回调的 JSON 请求体,分别处理任务完成和失败两种状态。实际接入时,请补充数据存储及按任务 ID 去重的逻辑;耗时操作建议先放入队列,再及时返回响应。
媒体文件要求与限制
- 所有媒体和回调 URL 必须使用公网可访问的 HTTPS 协议。请勿使用 localhost、局域网 IP 以及需要 Cookie 或登录权限的链接。参考视频或音频的 URL 必须能直接读取到媒体流文件。
- 在 reference-to-video 模式下,必须提供至少一种参考素材。图片最多 9 张,视频最多 3 个,音频最多 3 个,素材总数不超过 12。参考视频和参考音频的总时长也分别不能超过 15 秒。
- text-to-video 会忽略所有媒体参考。image-to-video 仅解析首尾帧图片,并忽略传入的视频和音频。如需组合多种媒体,请使用 reference-to-video 模式。
- 对于 Seedance 2.0 模型,为了保证兼容性,使用音频时必须搭配至少一张图片或一个视频。纯音频输入的示例请参考 Seedance 2.5 页面。
- Fast 和 Mini 模型支持 480p 和 720p 分辨率。请勿在请求验证时尝试传入更高的分辨率:此模型不支持更高级的分辨率规格。
图片素材要求
- 单张图片须小于 30 MB。
- 支持格式:jpeg、png、webp、bmp、tiff、gif。
- 宽高比(宽 ÷ 高):0.4 到 2.5,包含边界值。
- 宽度和高度分别须在 300 到 6,000 像素之间,包含边界值。
视频素材要求
- 支持格式:mp4、mov。
- 单个视频不得超过 100 MB。
- 帧率:24 到 60 FPS,包含边界值。
- 宽高比(宽 ÷ 高):0.4 到 2.5,包含边界值。
- 总像素数(宽 × 高)须在 407,696 到 8,295,044 之间,包含边界值。例如,614 × 664 = 407,696,3,326 × 2,494 = 8,295,044。这里限制的是宽高乘积,并非要求固定的宽度和高度。
音频素材要求
- 支持格式:wav、mp3。
- 单个音频文件不得超过 15 MB。
错误处理
发生 HTTP 错误时将返回一个包含 code 和 message 的 error 对象。成功创建的任务仍有可能在后续处理中失败,请及时查询任务状态或处理失败回调。
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | 字段 | 解决方法 |
|---|---|---|
| 400 | invalid_request | 请求参数有误,请在重试前修正 JSON 格式、缺失的提示词、参数取值范围或媒体文件 URL。 |
| 401 | invalid_api_key | 身份验证失败,请检查您的 Bearer 令牌及 API 密钥是否处于启用状态。 |
| 402 | insufficient_credits | 账户余额不足。请充值或降低本次任务的生成配置。响应中可能会返回当前任务所需积分及您的可用积分。 |
| 403 | forbidden | 请检查错误信息中提示的账户限制。 |
| 404 | not_found | 未找到相关资源。请检查任务 ID 是否正确,以及该密钥是否属于发起该任务的用户。 |
| 429 | rate_limited | 请求过于频繁,请在 Retry-After 指定的时间间隔后再进行重试。 |
| 500 | internal_error | 服务器内部错误。请查看错误消息和 API 日志。重试时请保持谨慎;重新发送创建请求可能会创建新的计费任务。 |
频次限制
创建任务:每个 API 密钥默认每分钟最多请求 100 次,目前不支持自定义设置限额。
查询任务:每个 API 密钥默认每分钟最多请求 120 次。查询任务与创建任务分别计数,互不占用对方的请求额度。