Seedance 2.0 Fast 视频生成 API
关于 APIMaster 上 Seedance 2.0 Fast 的参数、参考媒体、异步任务、认证下载和时长计费。
Seedance 2.0 Fast 视频生成
使用 seedance-2.0-fast 进行文生视频、图生视频、首/末帧生成,以及视频或音频参考。Fast 支持 480p 和 720p,输出时长从 4 到 15 秒。
对于首/末帧生成,请显式设置
aspect_ratio: "adaptive"。参考音频必须伴随图像或视频。请将您的 APIMaster API 密钥保存在您的服务器上。
端点与认证
基础 URL:https://apimaster.ai/v1。在提交、查询和下载时发送 Authorization: Bearer YOUR_API_KEY。
| 操作 | 方法与路径 |
|---|---|
| 创建视频 | POST /v1/videos/generations |
| 查询兼容性结果 | GET /v1/video/generations/{task_id} |
| 查询 OpenAI 风格结果 | GET /v1/videos/{task_id} |
| 下载视频 | GET /v1/videos/{task_id}/content |
| 下载请求的末帧 | GET /v1/videos/{task_id}/last-frame |
使用 APIMaster 返回的公共 task_id。视频任务和媒体审核任务是不同的资源:对于视频,请使用上述视频查询端点。一个被接受的请求会创建一个异步任务;HTTP 成功并不意味着视频已完成。
参数
| 字段 | 类型 | 必填 / 默认值 | 描述 |
|---|---|---|---|
model |
字符串 | 必填 | seedance-2.0-fast |
prompt |
字符串 | 必填 | 最多 4000 个字符。描述主体、动作、场景、镜头和期望的音频;简洁的提示词更易于控制。 |
duration |
整数 | 5 |
输出长度,4–15 秒。不支持 -1。 |
resolution |
字符串 | 720p |
480p 或 720p;不支持 1080p 和 4k。 |
aspect_ratio |
字符串 | 16:9 |
16:9、9:16、1:1、4:3、3:4、21:9 或 adaptive。 |
ratio |
字符串 | 同 aspect_ratio |
APIMaster 别名。如果两者同时出现,其值必须匹配。 |
size |
字符串 | 同 aspect_ratio |
比例,例如 16:9 或 adaptive。建议使用 aspect_ratio 和 resolution 分别表达两个维度。冲突的规格将返回 400。 |
seed |
整数 | 可省略 | 控制变化;匹配的种子不保证输出完全相同。 |
generate_audio |
布尔值 | true |
生成伴随音频;使用 false 输出静音视频。 |
image_urls |
字符串数组 | 可省略 | 最多 9 个参考图像。公共图像 URL 或已批准的 APIMaster asset:// ID。 |
image_with_roles |
对象数组 | 可省略 | 包含 url 和 role 的图像对象;不能与 image_urls 同时出现。请参阅下方的角色规则。 |
video_urls |
字符串数组 | 可省略 | 最多 3 个参考视频,总可计费输入时长最多 15 秒。请参阅素材要求。 |
audio_urls |
字符串数组 | 可省略 | 最多 3 个参考音频文件,总时长最多 15 秒。需要图像或视频参考。 |
return_last_frame |
布尔值 | false |
成功完成后,如果结果包含末帧,则返回一个经过认证的 APIMaster 末帧下载 URL。 |
nsfw_check |
布尔值 | false |
在生成前请求文本/图像内容审核。视频和音频不包含在此次审核中。 |
tools |
对象数组 | 可省略 | 搜索工具声明:[{"type":"web_search"}]。 |
草稿生成和草稿升级是 Seedance 2.5 独有的功能。请勿向此模型传递 draft: true 或 draft_task_id。
参考资料
提供可公开访问的 HTTPS URL,或来自 APIMaster 媒体库的已批准 ID。位于登录页面后或需要您自己的授权标头的文件无法获取。成功上传图像并不意味着内容已获批准或符合每个模型的要求。
| 材料 | 要求 |
|---|---|
| 参考图像 | 最多 9;请使用可读的 RGB JPEG/PNG 图像。APIMaster 的图像上传端点有其自身的 20 MiB 限制,并接受 JPEG、PNG、GIF 和 WebP 格式。 |
| 参考视频 | 最多 3;MP4/MOV 格式,H.264/H.265 视频编码;如有音频,需为 AAC/MP3 编码。使用 480p–720p 参考视频,合并参考时长必须符合 15 计费秒数限制。APIMaster 会在计费前验证可访问的 MP4/MOV 时长;输入片段的时长会向上取整至整秒,用于此项检查和计费。 |
| 参考音频 | 最多 3;WAV 或 MP3 格式,每个文件最大 20 MB,合并时长最多 15 秒。必须与图像或视频参考一同提供。 |
使用细节清晰、充分的图像,避免损坏或不完整的文件,并保持参考视频的运动与您的提示一致。即使提交被接受,媒体也可能在异步格式或内容审查中失败。
图像角色
role |
含义 |
|---|---|
first_frame |
起始帧;最多一个 |
last_frame |
结束帧;最多一个,且需要有一个起始帧 |
reference_image |
参考图像,包括已批准的角色素材 |
对于首帧/末帧任务,将 aspect_ratio 设置为 adaptive 并省略 video_urls 和 audio_urls。使用 image_with_roles 指定明确角色;不要同时传递 image_urls。
{
"model": "seedance-2.0-fast",
"prompt": "A paper boat drifts gently from the starting composition to the ending composition",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"image_with_roles": [
{"url": "https://your-storage.example/start.png", "role": "first_frame"},
{"url": "https://your-storage.example/end.png", "role": "last_frame"}
],
"generate_audio": false
}
上传和媒体库
使用 multipart 字段 file 和 Bearer 授权通过 POST /v1/uploads/images 上传本地图像。返回的顶层 url 可用作公共图像输入。
curl "https://apimaster.ai/v1/uploads/images" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@reference.png"
对于可重用或角色素材,使用 POST /v1/seedance2/private-avatar/groups 创建一个组,使用 POST /v1/seedance2/private-avatar/assets 提交素材,使用 GET /v1/tasks/{asset_task_id} 查询审核状态,并仅使用 Active 状态的素材作为 asset://{asset_id}。这些资源属于您的账户。请明确指定 model: "seedance-2.0-fast"。来自其他平台或账户的资产 ID 不能在此处使用。
有关创建、提交、审核、部分失败和删除的详细信息,请参阅媒体库工作流程。上传和资产管理端点是共享的;本页的生成限制适用于 Fast。失败的审核可能不会返回详细原因;请使用清晰、合规且格式受支持的素材并提交新的审核。在现有审核仍在处理时,请勿重复创建任务。
提交视频
curl "https://apimaster.ai/v1/videos/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model":"seedance-2.0-fast",
"prompt":"A small paper boat on calm water at sunrise, gentle tracking shot",
"duration":5,
"resolution":"720p",
"aspect_ratio":"16:9",
"generate_audio":true,
"return_last_frame":true
}'
创建响应:
{"code":200,"data":[{"status":"submitted","task_id":"task_PUBLIC_VIDEO_ID"}]}
提交超时是模糊的:请求可能已被接受。在重新提交前,请检查您的任务历史记录;另一次成功的提交会创建一个单独的计费任务。
视频和音频参考
{
"model": "seedance-2.0-fast",
"prompt": "Follow the reference motion and keep the scene consistent with the image",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"image_urls": ["https://your-storage.example/reference.png"],
"video_urls": ["https://your-storage.example/reference.mp4"],
"audio_urls": ["https://your-storage.example/reference.mp3"],
"generate_audio": true
}
查询和下载
每 3–5 秒轮询一次。在成功或失败时停止。
curl "https://apimaster.ai/v1/video/generations/task_PUBLIC_VIDEO_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
兼容查询成功:
{
"code":"success",
"message":"",
"data":{
"error":null,
"format":"mp4",
"metadata":null,
"status":"succeeded",
"task_id":"task_PUBLIC_VIDEO_ID",
"url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content",
"actual_time":118,
"last_frame_url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame"
}
}
示例包含可选的完成字段。actual_time 是提交到完成的经过时间(秒),而非计费的视频时长。last_frame_url 在未请求最后一帧或最后一帧不可用时会被省略。失败的任务不包含仅成功时才有的经过时间或最后一帧字段。
OpenAI 风格查询:
curl "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
| 含义 | 兼容 data.status |
OpenAI 风格 status |
|---|---|---|
| 等待中 | queued |
queued |
| 生成中 | processing |
in_progress |
| 成功 | succeeded |
completed |
| 失败 | failed |
failed |
OpenAI 风格的对象使用 id 表示公共任务 ID,使用 url 表示视频下载 URL。可选的 actual_time 和 last_frame_url 出现在顶层。失败时,请在相应的结果对象中读取 error.message。响应不包含货币字段。
使用同一账户的 API 密钥下载。仅打开结果 URL 而无授权是不够的。请及时保存输出。
curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content" \
-H "Authorization: Bearer YOUR_API_KEY" -o output.mp4
curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame" \
-H "Authorization: Bearer YOUR_API_KEY" -o last-frame.jpg
Python 完整工作流程
import os
import time
import requests
base = "https://apimaster.ai/v1"
headers = {"Authorization": f"Bearer {os.environ['APIMASTER_API_KEY']}"}
response = requests.post(base + "/videos/generations", headers=headers, json={
"model": "seedance-2.0-fast",
"prompt": "A small paper boat on calm water at sunrise",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"generate_audio": True,
"return_last_frame": True,
}, timeout=90)
response.raise_for_status()
task_id = response.json()["data"][0]["task_id"]
for _ in range(240):
response = requests.get(base + "/video/generations/" + task_id,
headers=headers, timeout=30)
response.raise_for_status()
task = response.json()["data"]
if task["status"] == "failed":
raise RuntimeError((task.get("error") or {}).get("message", "Video failed"))
if task["status"] == "succeeded":
print("Elapsed seconds:", task.get("actual_time"))
for field, filename in [("url", "output.mp4"), ("last_frame_url", "last-frame.jpg")]:
if task.get(field):
with requests.get(task[field], headers=headers, stream=True, timeout=120) as result:
result.raise_for_status()
with open(filename, "wb") as out:
for chunk in result.iter_content(1024 * 1024):
out.write(chunk)
break
time.sleep(5)
else:
raise TimeoutError("Task still processing; query the same task_id later")
时长计费
共有四个层级:480P、720P、480P-input 和 720P-input。标记为“已上传视频”的层级意味着请求包含参考视频输入。即使同时存在图像/音频参考,也请根据请求的输出分辨率选择输入层级。
- 无参考视频:生成的视频秒数 × 对应分辨率的单价。
- 有参考视频:(参考视频总秒数 + 生成的视频秒数)× 对应输入层级的单价。
- 配置的基础单价会乘以适用的渠道和账户/群组系数,以得到您的最终单价。请查看您的模型卡片和钱包消费记录以了解适用的价格。
例如,一段 4 秒的参考视频和一个 5 秒的输出,在输入层级使用 9 计费秒数。输入层级的单价可能与常规层级不同;请勿仅计算输出时长或将常规层级单价应用于视频参考。图像和音频不会增加参考视频秒数。生成的音频不会为这四个配置价格引入单独的有声/无声层级。
提交时会预留请求的输出时长,以及存在时已验证的输入视频时长。省略输出时长将预留 5 秒输出时长。任务将保持其提交时的费率;完成时会根据实际时长进行结算。生成失败将退还视频任务费用。
错误与故障排除
无效请求将返回 HTTP 错误。请同时阅读 JSON 错误信息和状态码。参数验证使用 APIMaster 的错误包装器,例如:
{"code":"invalid_request","message":"First/last-frame tasks require adaptive aspect_ratio","data":null}
| 问题 | 操作 |
|---|---|
| 不支持的分辨率/时长 | 选择 480p 或 720p,以及一个从 4 到 15 的整数时长。 |
| 冲突的比例或尺寸 | 使用一致的 aspect_ratio、ratio、size 和 resolution;最好只保留明确的比例/分辨率对。 |
| 首帧/末帧约束 | 使用 adaptive,每个角色最多一个,并省略视频/音频参考。 |
| 无法检查参考视频 | 提供一个可访问的完整 MP4/MOV 文件,并具有有效的时长。 |
| 参考音频没有图像/视频 | 添加图像/视频参考或移除音频参考。 |
| 内容审核拒绝 | 修改文本或图像并提交新请求。审核服务失败可能允许生成继续;这并非绝对的安全保证。 |
FormatUnsupported / 异步格式/内容拒绝 |
阅读失败任务的 error.message,检查格式和素材要求,并替换来源。 |
401 |
提供有效的 Bearer API 密钥。 |
| 余额不足 | 充值或使用具有足够配额额度的密钥。 |
429 / 临时服务错误 |
等待并使用退避策略重试;在模糊超时后避免重复提交。 |
同步的无效参数请求不会创建视频任务或收取生成费用。已接受的任务仍可能异步失败;在使用结果前请检查任务的最终状态。
