Seedance 2.5 API 指南:用代码或 AI Agent 生成视频
Seedance 2.5 是一款能力出色的文生视频与参考图生视频模型。目前的访问方式为抢先体验、由服务商中转——尚未正式对外开放,因此请将下文全部视为预期行为,并在上线前与服务商核实。本文是一份独立指南,EvoLink 是我们推荐的第三方服务商(我们与字节跳动没有任何关联)。请求结构遵循 EvoLink 的 API 规范——上线生产前请对照其文档核对。
准备工作
在 EvoLink 上创建一个 API key,充值余额,导出该 key,就可以开始测试了:
export EVOLINK_KEY="sk-..."
计费目前尚无公开价格。预计按输出秒数计费,原生音频免费包含,关闭 content_filter 预计费用约为 1.1 倍。开发前请在服务商控制台核实当前模型。
生成请求
模型 id 为 seedance-2.5-reference-to-video(抢先体验版——请将其保持为可配置项,以便服务商最终确定后随时替换)。
curl -X POST https://api.evolink.ai/v1/videos/generations \
-H "Authorization: Bearer $EVOLINK_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-reference-to-video",
"prompt": "golden-hour drone pullback over a coastal city, anamorphic flare",
"duration": 5,
"quality": "720p",
"generate_audio": true,
"content_filter": true
}'
各字段说明:
model— 上文的抢先体验版 id;请保持可配置。prompt— 对镜头画面的文字描述。duration— 秒数,预期范围 4–30(默认5)。上限请与服务商核实。quality—"480p"或"720p"(默认"720p")。1080p 等更高分辨率在服务商文档确认前仍待定——请勿默认支持。generate_audio— 布尔值,默认true。原生音频一次生成,不额外收费。content_filter— 布尔值,默认true。设为false预计按约 1.1 倍计费。image_urls(≤30)、video_urls(≤10)、audio_urls(≤10)— 参考文件,详见下文。callback_url— 可选的完成回调 webhook。
API 会返回一个任务,之后由你进行轮询:
{ "id": "task_8f2c...", "status": "pending" }
完整的参数说明见我们的 API 页面。
轮询获取结果
轮询任务详情接口,直到状态变为 completed:
curl "https://api.evolink.ai/v1/task-detail?id=task_8f2c..." \
-H "Authorization: Bearer $EVOLINK_KEY"
status 会依次经历 pending → processing → completed(或 failed)。变为 completed 后,下载返回的视频 URL。
Node 示例
一个基于 fetch 的最小流程——先提交,再轮询:
const KEY = process.env.EVOLINK_KEY;
const BASE = "https://api.evolink.ai/v1";
const MODEL = "seedance-2.5-reference-to-video"; // pre-release, keep configurable
async function generate() {
const res = await fetch(`${BASE}/videos/generations`, {
method: "POST",
headers: {
"Authorization": `Bearer ${KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: MODEL,
prompt: "the character walks through a market at dusk",
duration: 5,
quality: "720p",
generate_audio: true,
content_filter: true,
}),
});
const { id } = await res.json();
return id;
}
async function poll(id) {
while (true) {
const res = await fetch(`${BASE}/task-detail?id=${id}`, {
headers: { "Authorization": `Bearer ${KEY}` },
});
const task = await res.json();
if (task.status === "completed") return task;
if (task.status === "failed") throw new Error("generation failed");
await new Promise((r) => setTimeout(r, 5000));
}
}
const id = await generate();
const done = await poll(id);
console.log(done);
参考文件
你可以按类型分组,以 URL 列表的形式附加参考素材:
image_urls— 最多 30 张图片。video_urls— 最多 10 段视频。audio_urls— 最多 10 段音频。
{
"model": "seedance-2.5-reference-to-video",
"prompt": "the character walks through the market, camera following the uploaded drone move",
"image_urls": [
"https://cdn.example.com/character_front.png",
"https://cdn.example.com/character_profile.png"
],
"video_urls": ["https://cdn.example.com/drone_move.mp4"],
"audio_urls": ["https://cdn.example.com/score_draft.mp3"],
"duration": 5,
"quality": "720p",
"generate_audio": true
}
图片用于锁定人物身份与色调,视频片段贡献镜头运动与运动风格,音频驱动节奏。想了解如何用提示词发挥这些能力,提示词库展示了真实请求及其输出。
生产环境中的成本控制
目前尚未公布公开价格,因此以下建议仅供方向性参考,请在服务商控制台核实:
- 草稿短,成片长。 计费预计按输出秒数计算,所以
duration是最大的成本杠杆。先用短草稿反复迭代,再对定稿的较长片段进行渲染。 - 在服务端限制时长。 在你自己的 API 层对
duration做上限约束,避免某个 bug 在重试循环里渲染出超长片段。记住预期范围是 4–30 秒。 - 留意
content_filter。 默认保持开启;关闭它预计会使账单增加约 10%。 - 音频免费。 原生音频免费包含,因此
generate_audio: true不会改变按秒计费的算式。
等服务商公布价格后,可从价格页面复现当前数字,或在体验场里直观试算任意配置。
接入 AI Agent
在你的 Agent 框架(Claude Agent SDK、Vercel AI SDK、LangChain 或 MCP server)中,把 REST 调用封装成单个函数工具。暴露 prompt、duration、quality、generate_audio、content_filter 以及参考 URL 列表等参数——这正好对应 API 页面上的接口约定。
一条生产经验:把轮询步骤做成与生成步骤独立的工具。相比一个在渲染期间占着工具槽、阻塞式的调用,Agent 处理”检查任务 X 是否完成”要优雅得多。推荐的实现结构见 Agent 指南。
第一天就该做好的错误处理
- 鉴权 / 余额错误 — 向用户展示这些错误并附上充值链接;不要盲目重试。
- 限流 — 采用指数退避;负载高时渲染时间可能拉长。
failed状态或内容策略拒绝 — 记录返回的原因;这些通常是提示词问题,而非传输层的 bug。
由于目前处于抢先体验阶段,还要处理模型 id 尚未为你的账号开通的情况——请保持其可配置,并在上线生产前确认服务商的支持情况。
获取一个 key,运行上面的请求,开始测试吧:API 快速上手 →