APIMaster.ai

Seedance 2.0 Mini 视频生成 API

关于 APIMaster 上 Seedance 2.0 Mini 的参数、参考媒体、异步任务、认证下载和时长计费。

Seedance 2.0 Mini 视频生成

使用 seedance-2.0-mini 进行文生视频、图生视频、首/末帧生成,以及视频或音频参考。Mini 支持 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-mini
prompt 字符串 必需 APIMaster 未施加模型特定的提示词长度限制。描述主体、动作、场景、摄像机以及期望的音频;简洁的提示词更易于控制。
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-mini",
  "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
}

上传与媒体库

使用 POST /v1/uploads/images 通过 multipart 字段 file 和 Bearer 授权上传本地图像。返回的顶级 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-mini"。来自其他平台或账户的资产 ID 不能在此处使用。

有关创建、提交、审查、部分失败和删除的详细信息,请参阅媒体库工作流程。上传和资产管理端点是共享的;本页的生成限制适用于 Mini。审查失败可能不会返回详细原因;请使用清晰、合规且格式受支持的素材并提交新的审查。在现有审查仍在处理时,请勿重复创建任务。

提交视频

curl "https://apimaster.ai/v1/videos/generations" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model":"seedance-2.0-mini",
    "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-mini",
  "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":138,
    "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-mini",
    "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 / 临时服务错误 等待并使用退避策略重试;在出现不明确的超时后避免重复提交。

同步的无效参数请求不会创建视频任务或收取生成费用。已接受的任务仍可能异步失败;在使用结果前请检查最终任务状态。

另请参阅:视频生成概述、Seedance 2.0、Seedance 2.0 Fast 和 Seedance 2.5。