首页›文档/手册›模型接入›视频生成

视频生成

模型接入 阅读 3

Videos:提交任务 → 查任务号 → 出片。按生成秒数计费,成功才扣费。

视频生成(Videos)

一句话:提交任务 → 拿任务号 → 过一会儿查一次 → 出片。

视频生成跟别的接口不一样,它要跑 1~5 分钟,没法在一个请求里干等。所以拆成两步:

步骤 接口 作用
① 提交 POST /videos/generations 立刻返回一个任务号(这时还没出片)
② 查询 GET /videos/generations/{任务号} 返回 processing(还在生成)/ succeeded(出片了)/ failed(失败)

轮询不用你操心。 你只要偶尔查一下任务号就行;就算你提交完就不管了,我们这边也有定时任务替你盯着上游,出了片照样给你算好账。

支持的模型见「模型清单」里标有「视频」的模型,例如 doubao-seedance-2-0-mini-260615(最便宜)、doubao-seedance-2-0-fast-260128、doubao-seedance-2-5-260628、wanx2.1-t2v-turbo。

图生视频(i2v)

在「提交」里多带一个 image_url(首帧图),就是图生视频:

curl https://api.chenra.com/api/relay/v1/videos/generations \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-mini-260615",
    "prompt": "镜头缓慢推进,画面自然流动",
    "image_url": "https://你的图片地址/cover.png",
    "duration": 5,
    "resolution": "480p"
  }'
  • image_url 支持公网图片地址,也支持本地图片的 base64(data:image/png;base64,xxxx)。
  • 豆包 Seedance:不用换模型,同一个模型带上图就按图生视频走。
  • 通义万相:改用图生视频模型(如 wanx2.1-i2v-turbo),同样多带一个 image_url。
  • 剩下的流程完全一样:拿任务号 → 查任务 → 出片。

计费怎么算

  • 按生成出来的视频秒数计费:费用 = 视频秒数 × 模型单价(元/秒)。
  • 只有成功出片才扣费,失败不扣费。
  • 时长由你请求里的 duration 决定(默认 5 秒);分辨率越高单价越贵(480p 最便宜)。

怎么调用

① 提交任务

curl https://api.chenra.com/api/relay/v1/videos/generations \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-mini-260615",
    "prompt": "一只橘猫在草地上打滚,阳光洒在草地上,镜头缓慢推进",
    "duration": 5,
    "resolution": "480p",
    "ratio": "16:9"
  }'

返回里拿 id,那就是任务号:

{ "id": "vt3deac03947bd7320f484ab0bedf9d985", "object": "video.generation", "status": "processing", "model": "doubao-seedance-2-0-mini-260615" }

② 查任务(过几秒查一次)

curl https://api.chenra.com/api/relay/v1/videos/generations/vt3deac03947bd7320f484ab0bedf9d985 \
  -H "Authorization: Bearer sk-你的密钥"

出片后 data[0].url 就是视频地址,usage.seconds 是这次的计费秒数:

{
  "id": "vt3deac03947bd7320f484ab0bedf9d985",
  "status": "succeeded",
  "completed": 1791854144,
  "data": [{ "url": "https://.../xxxx.mp4" }],
  "usage": { "seconds": 5 }
}

③ Python 轮询示例

import time, requests

BASE = "https://api.chenra.com/api/relay/v1"
HEAD = {"Authorization": "Bearer sk-你的密钥"}

task = requests.post(f"{BASE}/videos/generations", headers=HEAD, json={
    "model": "doubao-seedance-2-0-mini-260615",
    "prompt": "一只橘猫在草地上打滚",
    "duration": 5,
    "resolution": "480p",
}).json()

while True:
    r = requests.get(f"{BASE}/videos/generations/{task['id']}", headers=HEAD).json()
    if r["status"] == "succeeded":
        print("视频地址:", r["data"][0]["url"])
        break
    if r["status"] == "failed":
        raise RuntimeError(r["error"]["message"])
    time.sleep(5)   # 5~10 秒查一次都行

轮询建议:5~10 秒查一次。查询很轻,也不会重复扣费(同一个任务只扣一次)。

常见问题

  • 出片了但链接打不开? 视频地址是上游的临时链接(大约 24 小时有效),请及时下载转存到自己的存储。
  • 一直 processing? 上游在排队,正常几分钟内出片。等太久可以到控制台「API Key 管理 → 调用日志」看这一笔的任务状态。
  • failed 怎么办? 看 error.message,多数是提示词没过审核。失败不扣费,改一下提示词重提即可。
  • 提示词怎么写? 直接描述画面(主体 + 动作 + 环境 + 镜头);分辨率/时长用请求参数传,不用写进提示词。
POST/videos/generations提交视频生成任务

提交一次视频生成,立刻返回任务号(此时还没出片)。用返回的 id 去查询接口取结果。

请求参数
参数类型必填说明默认值
modelstring是视频模型标识(见「模型清单」里标有「视频」的模型)—
promptstring是画面描述(主体 + 动作 + 环境 + 镜头)—
durationinteger否生成视频时长(秒),越长越贵5
resolutionstring否分辨率:480p / 720p(越高越贵)480p
ratiostring否宽高比:16:9 / 9:16 / 1:1 等16:9
image_urlstring否图生视频时传首帧图:公网图片地址,或 data:image/png;base64,...(不传就是文生视频)—
请求示例
curl https://api.chenra.com/api/relay/v1/videos/generations \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-mini-260615",
    "prompt": "一只橘猫在草地上打滚,阳光洒在草地上,镜头缓慢推进",
    "duration": 5,
    "resolution": "480p",
    "ratio": "16:9"
  }'
响应示例
{
  "id": "vt3deac03947bd7320f484ab0bedf9d985",
  "object": "video.generation",
  "created": 1791854000,
  "model": "doubao-seedance-2-0-mini-260615",
  "status": "processing"
}
错误码
错误码说明
400缺少 prompt 参数 / 该模型不支持视频生成
402余额不足,请先充值
502上游提交失败
GET/videos/generations/{id}查询视频生成任务

按任务号查结果。status 为 processing 时继续过几秒再查;succeeded 时 data[0].url 就是视频地址。失败不扣费。

请求参数
参数类型必填说明默认值
idstring是提交时返回的任务号(放在路径里)—
请求示例
curl https://api.chenra.com/api/relay/v1/videos/generations/vt3deac03947bd7320f484ab0bedf9d985 \
  -H "Authorization: Bearer sk-你的密钥"
响应示例
{
  "id": "vt3deac03947bd7320f484ab0bedf9d985",
  "object": "video.generation",
  "status": "succeeded",
  "completed": 1791854144,
  "model": "doubao-seedance-2-0-mini-260615",
  "data": [{ "url": "https://.../xxxx.mp4" }],
  "usage": { "seconds": 5 }
}

// 处理中:
// { "status": "processing" }
// 失败:
// { "status": "failed", "error": { "message": "内容审核未通过" } }
错误码
错误码说明
404任务不存在(或不是你这把密钥提交的)
分享这篇文档