Skip to content

视频生成 Seedance ​

POST /api/v1/seedance/videos
Authorization: Bearer sk-xxx
Content-Type: application/json

异步视频生成接口:输入一段文字描述即可生成视频(文生视频);Seedance 2.5 / 2.0 标准档另支持传入参考图 / 参考视频 / 参考音频做图生视频。任务完成后通过网关代理下载 mp4。

⚠️ 参考素材限制:仅 doubao-seedance-2-5 与 doubao-seedance-2-0 支持参考素材;素材 URL 必须是公网可访问的 https:// 地址,或本站登记后的 asset://<assetId>(不支持 base64、内网 / 本地文件)。传入不合规的 URL、或在 Fast / Mini 上带参考素材,会被网关拒绝(400)。参考素材是否加价以供应商报价为准,当前按下方时长档位计收。

👤 含人物的素材请先登记为素材,用 asset:// 引用,见 素材登记。

支持模型 ​

模型 ID 用火山官方家族名,分辨率由请求里的 resolution 决定(不再烧进模型 ID)。

模型 ID可选分辨率时长(秒)单价(元 / 百万 tokens)约合(元 / 秒)
doubao-seedance-2-0-fast720p4~1537.000.7992
doubao-seedance-2-0-mini720p4~1523.000.4968
doubao-seedance-2-0720p / 1080p / 4k4~1546.00 / 51.00 / 26.000.9936 / 2.748 / 2.8568
doubao-seedance-2-5480p / 720p / 1080p4~3070.00 / 70.00 / 77.000.6726 / 1.512 / 4.1164

480p 与 720p 的每百万 token 单价相同(上游价目里 480P/720P 就是同一行),480p 省的是每秒 token 数(854×480 的面积约为 1280×720 的 44.5%),不是折扣。

时长上限按模型代际区分:Seedance 2.0 系列最长 15 秒,Seedance 2.5 系列最长 30 秒(火山官方规格)。超出上限的请求会被网关直接拒绝(上游不校验时长、纯按秒计费,放行超限会造成按请求秒数多扣而实际交付更短)。

分辨率只认已开档:传白名单外的值(如给 doubao-seedance-2-0-fast 传 1080p)会被拒(400);不传按 720p 出片并按 720p 计费。

素材登记 ​

参考素材可以直接给公网 https 链,也可以先登记成本站素材,拿到 asset://<assetId> 再引用。登记这一步不收费,素材按租户隔离(只能引用自己登记过的素材,别人的 ID 一律按"不存在"处理)。

什么时候必须走登记:素材里含人物面孔时,上游对公网直链会做内容审核,两道都可能拦:

  • 入站(创建任务时就拒):400 InputImageSensitiveContentDetected.PrivacyInformation,任务没有开始,不扣费;
  • 成品(生成完再拒):OutputVideoSensitiveContentDetected.PolicyViolation,状态 failed,同样不扣费。

2026-10-14 实测:同一张含人像的图(字节完全相同),公网直链两种形态都被拒且账单零行;登记后用 asset:// 引用则 succeeded 出片。

⚖️ 素材须为您自有或已获授权的内容。真人本人出镜的授权认证(活体识别)暂未开放接入;每租户每日登记上限 200 条,超出返回 429(一条素材登记一次可反复引用,无需重复登记)。

接口 ​

方法路径说明
POST/api/v1/seedance/assets登记一条素材,返回 assetId,初始状态 Processing
GET/api/v1/seedance/assets/{assetId}查单条素材状态,等到 Active 才能用
GET/api/v1/seedance/assets分页列本租户素材(pageSize ≤100、pageNumber 从 1 起)
DELETE/api/v1/seedance/assets/{assetId}删除素材
GET/api/v1/seedance/asset-group查本租户的素材组 ID(登记时自动创建,一般用不上)

登记请求体:

字段类型必填说明
urlstring是素材的公网 https 地址(登记时由上游拉取,需要当时可访问)
typestring是image / video / audio
namestring可选自定义名称,便于后续检索
json
{
  "assetId": "asset-20261014185412-99q4w",
  "groupId": "group-20261014184513-cfx84",
  "status": "Processing",
  "assetType": "Image"
}

⏱️ 登记是异步入库:拿到 assetId 时状态还是 Processing,实测约 4 秒变 Active(失败为 Failed)。请按 2~3 秒轮询 /api/v1/seedance/assets/{assetId},见到 Active 再去发起视频任务,否则会报素材不可用。

python
import requests, time

H = {"Authorization": "Bearer sk-xxx", "Content-Type": "application/json"}

# 1. 登记
aid = requests.post("https://limapi.com/api/v1/seedance/assets", headers=H,
                    json={"url": "https://example.com/person.jpg",
                          "type": "image", "name": "主角形象"}).json()["assetId"]

# 2. 等到 Active
for _ in range(30):
    st = requests.get(f"https://limapi.com/api/v1/seedance/assets/{aid}", headers=H).json()["status"]
    if st == "Active":
        break
    time.sleep(2)

# 3. 用 asset:// 发起图生视频
requests.post("https://limapi.com/api/v1/seedance/videos", headers=H, json={
    "model": "doubao-seedance-2-0", "resolution": "720p", "duration": 4,
    "content": [{"type": "text", "text": "让图片1中的人物转身走向镜头"},
                {"type": "image", "image_url": {"url": f"asset://{aid}"},
                 "role": "reference_image"}]})

素材删除后 asset:// 引用即失效;已生成的视频不受影响。

创建视频任务 ​

Request ​

字段类型必填说明
modelstring*模型 ID,见上方支持模型列表
contentarray二选一输入内容数组,可含 text 提示词项与参考图 / 视频 / 音频项(后者仅 2.5 / 2.0 标准档支持)
promptstring二选一提示词简写,与 content 里的 text 项等价(二者都在时以 prompt 为准)
resolutionstring可选输出分辨率:480p / 720p / 1080p / 4k(按模型可选档,默认 720p)。只读顶层字段,塞在 metadata 里不生效
durationinteger可选视频时长(秒)。Seedance 2.0 系列 4~15,Seedance 2.5 系列 4~30,默认 5;超限会被拒
ratiostring可选画面比例:16:9(横屏) / 9:16(竖屏) / 1:1(方形) / 4:3 / 3:4,不传则由上游按默认处理

不要用 size 或像素值传分辨率。 输出分辨率用 resolution,画面比例用 ratio;例如要 1280×720 就是 resolution:"720p" + ratio:"16:9"。传 size 会被网关忽略。

content 数组元素:

type字段说明
texttext文字描述(提示词)
imageimage_url.url参考图,公网 https 或 asset://<assetId>;role 可选 reference_image(默认)/ first_frame / last_frame
videovideo_url.url参考视频,公网 https 或 asset://<assetId>;role=reference_video
audioaudio_url.url参考音频,公网 https 或 asset://<assetId>;role=reference_audio

提示词里用「图片1 / 图片2 / 视频1 / 音频1」按 content 中素材出现的顺序引用。

请求示例 ​

文字生成视频:

json
{
  "model": "doubao-seedance-2-5",
  "resolution": "1080p",
  "content": [
    {"type": "text", "text": "一只猫在花园里追蝴蝶,阳光明媚,电影级画质"}
  ],
  "duration": 4,
  "ratio": "16:9"
}

参考图生视频(2.5 / 2.0 标准档):

json
{
  "model": "doubao-seedance-2-0",
  "resolution": "720p",
  "content": [
    {"type": "text", "text": "让图片1中的人物转身走向镜头,夕阳逆光,电影感"},
    {"type": "image", "image_url": {"url": "https://example.com/person.jpg"}, "role": "reference_image"}
  ],
  "duration": 5,
  "ratio": "16:9"
}

用 prompt 简写:

json
{
  "model": "doubao-seedance-2-0-mini",
  "prompt": "海浪拍打沙滩,夕阳西下",
  "duration": 4
}

响应 ​

json
{
  "id": "task_xxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxx",
  "object": "video",
  "model": "doubao-seedance-2-5",
  "status": "queued",
  "progress": 0,
  "created_at": 1789977781
}

记下返回的 id,用于后续查询与下载。

查询任务详情 ​

GET /api/v1/seedance/videos/{taskId}
Authorization: Bearer sk-xxx

响应示例(生成成功):

json
{
  "id": "task_xxxxxxxxxxxxxxxx",
  "model": "doubao-seedance-2-5",
  "status": "succeeded",
  "created_at": 1789977781,
  "content": {
    "video_url": "https://limapi.com/api/v1/seedance/videos/task_xxxxxxxxxxxxxxxx/content"
  },
  "usage": {
    "total_tokens": 213840,
    "completion_tokens": 213840
  }
}

响应字段说明:

字段类型说明
idstring任务 ID
statusstring任务状态:queued / running / succeeded / failed
content.video_urlstring生成成功后的下载地址(网关代理,需带同一个 API Key 访问)
usage.total_tokensinteger总 token 用量(用于计费,按 时长 × 每秒 token 数 折算)

状态说明:

status含义说明
queued排队中任务已创建,等待上游处理
running生成中视频正在生成
succeeded已完成生成成功,返回 content.video_url,此时按 token 用量扣费
failed失败生成失败,不扣费

💡 建议轮询间隔 5~15 秒。视频生成通常需要 1~6 分钟(排队 + 出流),超时预算请留足 6 分钟再判定失败。

下载视频 ​

GET /api/v1/seedance/videos/{taskId}/content
Authorization: Bearer sk-xxx

任务 succeeded 后,用上一步返回的 content.video_url(或直接拼此路径)下载,响应为 video/mp4 字节流。

bash
curl "https://limapi.com/api/v1/seedance/videos/$TASK_ID/content" \
  -H "Authorization: Bearer sk-xxx" \
  --output video.mp4

上游直链为明文 http 且需鉴权,因此统一由网关代理回源,客户端只需带本站 API Key 即可下载。

Seedance 模型定价 ​

计费单位为元 / 百万 tokens,成本 = 时长(秒)× 每秒 token 数 × 单价 ÷ 1,000,000。下表同时给出折算后的每秒参考价:

模型 ID分辨率元 / 百万 tokens约合 元 / 秒
doubao-seedance-2-0-mini720p23.000.4968
doubao-seedance-2-0-fast720p37.000.7992
doubao-seedance-2-0720p46.000.9936
doubao-seedance-2-01080p51.002.748
doubao-seedance-2-04k26.002.8568
doubao-seedance-2-5720p70.001.512
doubao-seedance-2-51080p77.004.1164

每秒 token 数按分辨率档不同:720p 为 21,600,1080p 约 5.3 万,4k 约 11 万 —— 所以「4k 单价更低但每秒更贵」。任务成功后按 usage.total_tokens 扣费,失败不扣。

Python 完整示例 ​

python
import requests, time

API_KEY = "sk-xxx"
BASE_URL = "https://limapi.com/api/v1/seedance"
HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

# 1. 创建视频任务
resp = requests.post(f"{BASE_URL}/videos", headers=HEADERS, json={
    "model": "doubao-seedance-2-5",
    "resolution": "1080p",
    "content": [{"type": "text", "text": "一只猫在花园里追蝴蝶,阳光明媚"}],
    "duration": 4,
    "ratio": "16:9"
})
task_id = resp.json()["id"]
print(f"任务已创建: {task_id}")

# 2. 轮询任务状态
while True:
    result = requests.get(f"{BASE_URL}/videos/{task_id}", headers=HEADERS).json()
    status = result.get("status")
    if status == "succeeded":
        video_url = result["content"]["video_url"]
        print(f"视频已生成: {video_url}")
        # 3. 下载(带同一个 API Key)
        with requests.get(video_url, headers={"Authorization": f"Bearer {API_KEY}"}, stream=True) as r:
            with open("video.mp4", "wb") as f:
                for chunk in r.iter_content(chunk_size=8192):
                    f.write(chunk)
        break
    elif status == "failed":
        print("任务失败,未扣费")
        break
    print(f"状态: {status},等待中...")
    time.sleep(10)

LimAPI — 大模型聚合网关