文生视频 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,参数结构完全一致。

请求参数

参数类型必填默认值说明
modelstring固定为 seedance-2.0-text-to-video
promptstring视频内容描述。中文 ≤ 500 字符,英文 ≤ 1000 单词
durationinteger5视频时长(秒),范围 415。按秒计费
qualitystring720p画质:480p720p不支持 1080p
aspect_ratiostring16:916:99:161:14:33:421:9adaptive
generate_audiobooleantrue是否生成同步音频(含环境音、配乐、对白)
model_params.web_searchbooleanfalse启用后模型可自主联网检索最新信息。仅在实际触发时计费
callback_urlstring任务完成回调的 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
statuspendingprocessingcompleted / failed
progress0–100 百分比
task_info.estimated_time预计生成完成所需秒数
task_info.video_duration你请求的视频时长
task_info.can_cancel当前是否可调用取消接口
usage.billing_rule固定为 per_second(按秒计费)
usage.credits_reserved预扣积分。实际扣费以任务最终 completed 时为准

获取生成结果

提交后有两种方式拿到视频 URL:

  1. 轮询GET /v1/tasks/{id} 每 5 秒查询一次。详见 异步任务
  2. Webhook:在请求中携带 callback_url,任务完成时系统主动 POST 结果。详见 Webhooks

生成的视频链接 有效期 24 小时,请及时下载保存到你自己的存储。

常见问题

为什么我传了 image_urls 给 text-to-video 会报错? text-to-video 不接受任何媒体输入。如果你有参考图,请使用 image-to-video

能否指定分辨率具体像素数? 不能。quality 只开放 480p720p 两档,具体像素由 aspect_ratioquality 共同决定。

对白如何自然生成? 将台词放在英文双引号中,模型会自动识别为对白并生成人声,而非当作环境描述。

相关文档