视频生成 API 使用说明(Seedance)
面向普通用户。记录截止 2026-07-30。 本站与
https://llm.eastwisdom.cc是两套独立的账号和余额,不通用。 管理员相关内容见服务器运维手册.md。
1. 这是什么
用字节跳动的 Seedance 2.0 模型生成视频,支持文字生成视频(文生视频)。
- 站点地址:https://video.eastwisdom.cc
- 生成方式:异步。提交后拿到一个任务 ID,之后自己轮询查结果,不是发一个请求就等着返回视频
- 单次耗时:2–5 分钟(实测 115 秒到 279 秒都出现过,同样参数也会波动)
⚠️ 和主站是两套东西
| 主站 | 本站 | |
|---|---|---|
| 地址 | llm.eastwisdom.cc | video.eastwisdom.cc |
| 用途 | Claude / GPT / Grok 文本模型 | Seedance 视频生成 |
| 账号 | 各自独立 | 各自独立 |
| 余额 | 各自独立 | 各自独立 |
| API Key | 不能跨站使用 | 不能跨站使用 |
主站的 key 拿到这里用会报鉴权失败,反之也一样。两边要分别充值。
2. 开通账号和建 Key
账号
打开 https://video.eastwisdom.cc/register,填写用户名、邮箱和密码,点击发送验证码。 验证码会发到邮箱,填入后即可完成注册,10 分钟内有效。
新账号初始额度为 0,需要管理员充值后才能生成视频。
建 API Key
- 登录后进「令牌」页面 → 新建
- 名称随便填,方便自己区分用途
- 分组选
default - 额度按需设,也可以设成无限
- 建好后立刻复制保存——关掉弹窗就看不到完整的 key 了
Key 形如 sk- 开头的一串。这串就是密码,不要提交到 git、不要贴在公开群里。
验证 key 能用
不花钱,随便查一个不存在的任务,能返回业务错误就说明鉴权是通的:
curl -s https://video.eastwisdom.cc/v1/videos/task_notexist \
-H "Authorization: Bearer sk-你的key"
- 返回任务不存在之类的错误 → key 正常
- 返回 401 / 未提供令牌 → key 不对或没带上
3. 可用模型和价格
目前开放两个模型:
| 模型名 | 说明 | 支持分辨率 |
|---|---|---|
doubao-seedance-2-0-260128 | 标准版,质量更好 | 480p / 720p / 1080p |
doubao-seedance-2-0-fast-260128 | Fast 版,更快更便宜 | 仅 480p / 720p |
模型名必须照抄,写错会报「无可用渠道」。
⚠️ Fast 版传 1080p 会被拒绝,不要用。
价格
按视频实际消耗的 token 计费,不是按次固定价。
| 模型 | 480p / 720p | 1080p |
|---|---|---|
| 标准版 | $10.50 / 百万 token | $11.64 / 百万 token |
| Fast 版 | $8.40 / 百万 token | 不支持 |
🔴 分辨率对费用的影响远超单价差
单价只差 10%,但高分辨率消耗的 token 数量差好几倍。实测同一条提示词、同样 4 秒:
| 配置 | token 消耗 | 实际费用 |
|---|---|---|
| Fast + 480p | 50,638 | $0.43 |
| 标准版 + 1080p | 245,025 | $2.85 |
同样 4 秒的视频,1080p 比 480p 贵 6.6 倍。 看单价表会严重低估 1080p 的成本,一定要按 token 量估算。
⚠️ 另外同样参数 token 量本身也会浮动(实测 40594 和 50638 都出现过,差 25%),按条估成本要留余量。
4. 怎么调用
三步:提交 → 轮询 → 取回。
POST /v1/videos 提交,立刻返回 task_id
GET /v1/videos/{task_id} 轮询进度
GET /v1/videos/{task_id}/content 下载 mp4
Base URL 统一是 https://video.eastwisdom.cc,鉴权统一用 Authorization: Bearer sk-你的key。
不要同步等待。提交接口只返回任务 ID,视频要 2–5 分钟才好。
4.1 提交任务
curl https://video.eastwisdom.cc/v1/videos \
-H "Authorization: Bearer sk-你的key" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0-fast-260128",
"prompt": "一只玻璃香水瓶放在大理石桌面上,清晨柔和光线,镜头缓慢推近",
"duration": 4,
"metadata": {
"resolution": "480p",
"ratio": "16:9",
"generate_audio": false,
"watermark": false
}
}'
返回:
{
"id": "task_6Y2CXrNvpPFPghsCtL52gKgGcr7TLMsc",
"task_id": "task_6Y2CXrNvpPFPghsCtL52gKgGcr7TLMsc",
"object": "video",
"model": "doubao-seedance-2-0-fast-260128",
"status": "queued",
"progress": 0,
"created_at": 1785317575
}
🔴 两个最容易踩的坑
1. resolution 必须放在 metadata 里面
"metadata": {"resolution": "720p"} ✅ 正确
"size": "720p" ❌ 会按 480p 档计费,但实际出 720p
放错位置视频照样能生成,但计费档位会算错,属于我们这边的账不对,请配合放对位置。
2. 用 prompt 字段,不要用 content 数组
如果你参考过火山引擎或 BytePlus 的官方文档,那边用的是 content: [{...}] 数组格式。本站不接受那种格式,会报 prompt is required。请用上面示例里的 prompt 字符串写法。
立刻存下 task_id
拿到 task_id 第一件事就是存起来(写日志、写数据库都行)。生成要好几分钟,程序中途崩了、网断了、终端关了,只要有 task_id 就还能查回结果;丢了就等于钱白花,任务还在跑但你拿不到视频。
4.2 查询进度
curl https://video.eastwisdom.cc/v1/videos/task_6Y2CXrNvpPFPghsCtL52gKgGcr7TLMsc \
-H "Authorization: Bearer sk-你的key"
进行中:
{"task_id": "task_6Y2...", "status": "in_progress", "progress": 0}
完成:
{
"task_id": "task_6Y2CXrNvpPFPghsCtL52gKgGcr7TLMsc",
"status": "completed",
"progress": 100,
"created_at": 1785317575,
"completed_at": 1785317689,
"metadata": {
"url": "https://d1olhcno4eh2oq.cloudfront.net/media/videos/mvt-7aa4fa6ec83944d1.mp4"
}
}
状态取值:
| status | 含义 |
|---|---|
queued | 排队中 |
in_progress | 生成中 |
completed | 完成,metadata.url 里是视频地址 |
failed | 失败,费用会退回 |
轮询建议
- 间隔 15 秒。太密没意义,生成本身要好几分钟
- 超时上限设 10 分钟。实测 115–279 秒,但留足余量
- 别写成死循环无限轮询,加个最大次数
4.3 取回视频
两种方式,任选:
方式一:直接用返回的 URL(推荐)
metadata.url 是 CDN 直链,不需要鉴权,可以直接下载、分享、嵌入网页:
curl -L -o output.mp4 "https://d1olhcno4eh2oq.cloudfront.net/media/videos/mvt-xxx.mp4"
方式二:走本站代理接口
curl -L https://video.eastwisdom.cc/v1/videos/task_6Y2xxx/content \
-H "Authorization: Bearer sk-你的key" \
--output output.mp4
这个接口要带 key,支持分片下载(Accept-Ranges: bytes)。
注意路径是 /v1/videos/{id}/content(videos),不是 /v1/video/generations/...。
视频尽快转存
CDN 链接不保证长期有效。生成完就下载到自己的存储里,别把这个 URL 当长期地址存进数据库。
5. 参数说明
顶层字段
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | ✅ | 模型名,见 §3,必须照抄 |
prompt | string | ✅ | 画面描述。不要用 content 数组 |
duration | integer | 时长(秒),常用 4 / 5 / 10 |
metadata 里的字段
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
resolution | string | 720p | 480p / 720p / 1080p。必须放这里 |
ratio | string | 画幅比例,如 16:9、9:16、1:1 | |
generate_audio | boolean | false | 是否生成音频 |
watermark | boolean | false | 是否加水印 |
提示词怎么写
Seedance 对镜头语言的理解不错,描述里可以带上:
- 主体:什么东西、什么状态
- 环境光线:清晨柔光、霓虹夜景、逆光
- 镜头运动:缓慢推近、环绕、固定机位、快速切镜
- 风格:写实、电影感、延时摄影
例:写实风格,晴朗蓝天下一大片白色雏菊花田,镜头缓慢推近,最终定格在一朵雏菊特写,花瓣上有晶莹露珠
时长越长、分辨率越高,token 消耗越多。先用 Fast + 480p 试提示词,效果满意再用标准版和高分辨率出成品,能省不少钱。
6. 完整示例
Python(提交 + 轮询 + 下载)
import time
import requests
BASE_URL = "https://video.eastwisdom.cc"
API_KEY = "sk-你的key"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
# 1. 提交任务
resp = requests.post(f"{BASE_URL}/v1/videos", headers=headers, json={
"model": "doubao-seedance-2-0-fast-260128",
"prompt": "一只玻璃香水瓶放在大理石桌面上,清晨柔和光线,镜头缓慢推近",
"duration": 4,
"metadata": {
"resolution": "480p", # 注意:放在 metadata 里
"ratio": "16:9",
"generate_audio": False,
"watermark": False,
},
})
resp.raise_for_status()
task_id = resp.json()["task_id"]
# 2. 立刻存下 task_id —— 后面任何环节出错都还能查回来
print("task_id:", task_id)
with open("tasks.log", "a") as f:
f.write(f"{time.strftime('%F %T')}\t{task_id}\n")
# 3. 轮询,15 秒一次,最多 10 分钟
video_url = None
for _ in range(40):
r = requests.get(f"{BASE_URL}/v1/videos/{task_id}", headers=headers, timeout=30)
r.raise_for_status()
data = r.json()
status = data.get("status")
print("status:", status)
if status == "completed":
video_url = data["metadata"]["url"]
break
if status == "failed":
raise RuntimeError(f"任务失败(费用会退回): {data}")
time.sleep(15)
if not video_url:
raise TimeoutError(f"超时未完成,任务可能还在跑,稍后用 task_id 再查: {task_id}")
# 4. 下载(CDN 直链,无需鉴权)
with requests.get(video_url, stream=True, timeout=120) as s:
s.raise_for_status()
with open("output.mp4", "wb") as f:
for chunk in s.iter_content(8192):
f.write(chunk)
print("saved output.mp4")
Bash(简版)
KEY="sk-你的key"
BASE="https://video.eastwisdom.cc"
# 提交
TASK=$(curl -s "$BASE/v1/videos" \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"model":"doubao-seedance-2-0-fast-260128",
"prompt":"一只玻璃香水瓶放在大理石桌面上,镜头缓慢推近",
"duration":4,
"metadata":{"resolution":"480p","ratio":"16:9"}}' \
| python3 -c "import json,sys; print(json.load(sys.stdin)['task_id'])")
echo "task_id: $TASK" # 存下来!
# 轮询
for i in $(seq 1 40); do
R=$(curl -s "$BASE/v1/videos/$TASK" -H "Authorization: Bearer $KEY")
echo "$R" | grep -q '"completed"' && break
echo "$R" | grep -q '"failed"' && { echo "失败"; exit 1; }
sleep 15
done
# 下载
curl -sL "$BASE/v1/videos/$TASK/content" \
-H "Authorization: Bearer $KEY" -o output.mp4
echo "saved output.mp4"
7. 计费怎么算
按视频实际消耗的 token 计费(不是按次固定价):
费用 = 实际 total_tokens / 1,000,000 × 单价
单价见 §3。
你会在日志里看到两条记录
提交任务时预扣一笔(按请求的时长和分辨率估算),任务完成后按真实用量补扣或退款。
对账时把同一个任务的两条记录合并,净额才是最终费用。看到"扣了两次"不要慌。
失败会退
任务 failed 时预扣的费用会退回。
省钱的几个做法
- 调提示词一律用 Fast + 480p(约 $0.43 一条),效果满意了再用标准版和高分辨率出成品。直接拿 1080p 试提示词,试十次就是 $28
- 1080p 只用在真要交付的成品上。实测比 480p 贵 6.6 倍,见 §3
- 时长按需,4 秒够用就别写 10 秒
- 生成前想清楚,失败重试也要重新排队等几分钟
实测费用参考
| 配置 | tokens | 费用 |
|---|---|---|
| Fast + 480p + 4s | 50,638 | $0.43 |
| 标准版 + 1080p + 4s | 245,025 | $2.85 |
查余额
登录 https://video.eastwisdom.cc 看首页,或者:
curl -s https://video.eastwisdom.cc/v1/dashboard/billing/subscription \
-H "Authorization: Bearer sk-你的key"
8. 暂不支持的功能
以下能力上游有,但本站没有开放,请求了会报错或计费不准。需要的话找管理员说,可以评估开通。
| 功能 | 状态 | 说明 |
|---|---|---|
| 4K 分辨率 | ❌ 未开放 | 上游报价未明确,开了可能算错钱 |
| 图生视频 | ⚠️ 未验证 | 接口支持传参考图,但本站还没实测过,想用先跟管理员打招呼 |
| 视频生视频 | ❌ 别用 | 传参考视频会导致计费偏差,本站计费口径和上游不一致 |
数字人 / 真人素材(asset://) | ❌ 不支持 | 需要素材上传接口,本站网关没有这个路由 |
| Mini 系列模型 | ❌ 未开放 | 上游未提供报价 |
| EP 版模型 | ❌ 未开放 | 可按需开通 |
关于真人图片
标准版和 Fast 版对真人人像会触发上游的隐私拦截。上游有专门的 -hc 模型处理这类素材,但它依赖素材上传接口(asset://),本站网关不支持,所以真人视频目前做不了。
9. 常见问题
报错对照
| 报错 | 原因 | 怎么办 |
|---|---|---|
prompt is required | 用了 content 数组格式 | 改用 prompt 字符串,见 §4.1 |
model_not_found / 无可用渠道 | 模型名写错,或用了未开放的模型 | 照抄 §3 的模型名 |
401 / 未提供令牌 | key 没带上、写错,或用了主站的 key | 检查 Authorization: Bearer sk-... |
| 余额不足 | 本站余额用完 | 本站余额和主站独立,要单独充 |
| Fast 传 1080p 被拒 | Fast 版不支持 1080p | 换标准版,或降到 720p |
resource download failed | 参考图 URL 上游下载不了 | 换公开可访问、无防盗链的 HTTPS 直链 |
视频一直 in_progress,是卡住了吗
大概率没卡。实测 115–279 秒都有,5 分钟内属正常。超过 10 分钟还在 in_progress,把 task_id 发给管理员查。
程序崩了 / 终端关了,任务还在吗
任务在服务端继续跑,只要你存了 task_id,随时可以再查:
curl https://video.eastwisdom.cc/v1/videos/你的task_id \
-H "Authorization: Bearer sk-你的key"
没存 task_id 就找不回来了,钱照扣。所以 §4.1 反复强调先存 ID。
主站的 key 能用在这里吗
不能。两套独立账号,key 不通用,余额也不通用。
能用现成的客户端调吗
视频生成是异步任务制,大部分聊天类客户端(Cherry Studio、Chatbox 等)不支持这种"提交—轮询—下载"流程。目前建议用代码调,照抄 §6 的示例改改就能用。
为什么同样的参数,两次费用不一样
token 消耗由模型实际生成过程决定,会有波动(实测同参数差过 25%)。按 token 计费是随上游口径,我们这边不做加成之外的调整。
10. 联系
遇到下列情况,请发送邮件至 [email protected]:
- 开号、充值
- 任务超过 10 分钟没结果(带上 task_id)
- 想开通 §8 里未开放的功能(4K、图生视频、EP 模型等)
- 计费有疑问(带上 task_id,能查到预扣和补差的明细)
反馈问题时请提供:task_id + 完整请求体 + 收到的报错。只说"生成失败了"查不了。
相关文档
用户使用说明.md— 主站(Claude / GPT / Grok 文本模型)的使用说明服务器运维手册.md— 管理员运维文档