文生视频 API
从纯文本提示词生成视频。是 Seedance 2.0 最常用的模式,适合创意构思、广告脚本、故事板、短视频内容等所有没有视觉参考素材的场景。
端点
POST https://api.evolink.ai/v1/videos/generations
Model ID: seedance-2.0-text-to-video
如果你需要更快的生成速度和更低的成本,可改用
seedance-2.0-fast-text-to-video,参数结构完全一致。
请求参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
model | string | 是 | — | 固定为 seedance-2.0-text-to-video |
prompt | string | 是 | — | 视频内容描述。中文 ≤ 500 字符,英文 ≤ 1000 单词 |
duration | integer | 否 | 5 | 视频时长(秒),范围 4–15。按秒计费 |
quality | string | 否 | 720p | 画质:480p 或 720p。不支持 1080p |
aspect_ratio | string | 否 | 16:9 | 16:9、9:16、1:1、4:3、3:4、21:9、adaptive |
generate_audio | boolean | 否 | true | 是否生成同步音频(含环境音、配乐、对白) |
model_params.web_search | boolean | 否 | false | 启用后模型可自主联网检索最新信息。仅在实际触发时计费 |
callback_url | string | 否 | — | 任务完成回调的 HTTPS URL。最长 2048 字符,禁止内网 IP |
参数细节
prompt 写作建议
- 明确主体、动作、镜头语言(推拉摇移、俯仰角)、光照氛围
- 将对白放在英文双引号中以触发专属语音生成,例如
她转过身笑着说:"你终于来了。" - 避免在 prompt 中要求具体数字(例如"2.35:1 比例"),这类参数应通过
aspect_ratio字段传递
generate_audio: false 会输出纯视频(无任何音轨),不会降低视觉质量,但会略微减少计费(音频生成本身免费,但音频数据本身有流量成本)。
model_params.web_search: true 的典型场景:
- 生成带有"最新"、"今天"、"本周"字样的时事类内容
- 需要引用真实事件、人物、地点的品牌广告
- 模型判断无需检索时不会触发,也就不会产生检索费用
请求示例
cURL
curl -X POST https://api.evolink.ai/v1/videos/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-text-to-video",
"prompt": "微距镜头对准一只停在叶片上的玻璃蛙。焦点从它光滑的皮肤缓缓过渡到完全透明的腹部,可以清楚看到一颗鲜红的心脏正在有力地跳动。",
"duration": 8,
"quality": "720p",
"aspect_ratio": "16:9",
"generate_audio": true
}'
Python
import requests
response = requests.post(
"https://api.evolink.ai/v1/videos/generations",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"model": "seedance-2.0-text-to-video",
"prompt": "豪华腕表在大理石台面上缓慢旋转,柔和的影棚光线,商品展示感,电影质感",
"duration": 8,
"quality": "720p",
"aspect_ratio": "16:9",
"generate_audio": False
}
)
task = response.json()
print(f"Task ID: {task['id']}")
Node.js
const res = await fetch("https://api.evolink.ai/v1/videos/generations", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "seedance-2.0-text-to-video",
prompt: "夕阳西下的海面,电影级广角镜头",
duration: 5,
quality: "720p",
aspect_ratio: "16:9",
model_params: { web_search: false }
})
});
const task = await res.json();
console.log("Task ID:", task.id);
响应
提交成功后立即返回一个任务对象(HTTP 200),此时任务尚未开始生成:
{
"id": "task-unified-1774857405-abc123",
"object": "video.generation.task",
"created": 1774857405,
"model": "seedance-2.0-text-to-video",
"status": "pending",
"progress": 0,
"type": "video",
"task_info": {
"can_cancel": true,
"estimated_time": 165,
"video_duration": 8
},
"usage": {
"billing_rule": "per_second",
"credits_reserved": 50,
"user_group": "default"
}
}
字段说明
| 字段 | 说明 |
|---|---|
id | 任务 ID,用于后续查询 / 接收 webhook |
status | pending → processing → completed / failed |
progress | 0–100 百分比 |
task_info.estimated_time | 预计生成完成所需秒数 |
task_info.video_duration | 你请求的视频时长 |
task_info.can_cancel | 当前是否可调用取消接口 |
usage.billing_rule | 固定为 per_second(按秒计费) |
usage.credits_reserved | 预扣积分。实际扣费以任务最终 completed 时为准 |
获取生成结果
提交后有两种方式拿到视频 URL:
生成的视频链接 有效期 24 小时,请及时下载保存到你自己的存储。
常见问题
为什么我传了 image_urls 给 text-to-video 会报错?
text-to-video 不接受任何媒体输入。如果你有参考图,请使用 image-to-video。
能否指定分辨率具体像素数?
不能。quality 只开放 480p 和 720p 两档,具体像素由 aspect_ratio 与 quality 共同决定。
对白如何自然生成? 将台词放在英文双引号中,模型会自动识别为对白并生成人声,而非当作环境描述。