视频生成
使用 TENSORAXIS 提交视频生成任务、轮询任务状态,并正确传递 Seedance/Doubao 高级参数。
视频生成是异步任务:先提交任务取得 task_id,再轮询任务状态,完成后读取视频地址。
对接 Seedance/Doubao 视频模型时,请使用本站入口字段 prompt、images 和 metadata。不要把火山官方示例中的顶层 content[] 请求体直接发给本站的 /v1/video/generations,否则会因为缺少 prompt 返回 400 prompt is required。
按模型查看专页
本页讲通用的提交、查询与轮询流程。各视频系列的能力矩阵、入口字段、按能力的示例与参数表,请看对应专页:
- SeeDance 视频生成 — 火山方舟 Doubao Seedance(文生 / 图生 / 首尾帧 / 视频参考续写)
- HappyHorse 视频生成 — 阿里云百炼 DashScope(文生 / 图生 / 参考生 / 视频编辑)
端点
| 方法 | 路径 | 用途 | 推荐场景 |
|---|---|---|---|
POST | /v1/video/generations | 提交视频生成任务 | Seedance/Doubao 通用入口 |
GET | /v1/video/generations/{task_id} | 查询视频生成任务 | 查询同一路径任务 |
POST | /v1/videos | OpenAI/Sora 风格提交入口 | Sora/OpenAI 客户端 |
GET | /v1/videos/{task_id} | OpenAI/Sora 风格任务查询 | Sora/OpenAI 客户端 |
GET | /v1/videos/{task_id}/content | 代理下载视频内容 | 读取已完成视频 |
新接入 Seedance/Doubao 时,优先使用 /v1/video/generations。
请求体
POST /v1/video/generations
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 要调用的模型名 |
prompt | string | 是 | 视频提示词;为空会返回 400 prompt is required |
image | string | 否 | 单张参考图 URL;服务端会兼容转换为 images |
images | string[] | 否 | 多张参考图 URL,用于图生视频 |
metadata | object | 否 | 模型或上游特有参数;Seedance/Doubao 高级参数放这里 |
seconds | string | 否 | 兼容字段;Doubao/Seedance 会把正整数值转成上游 duration |
duration | integer | 否 | 通用任务字段;Seedance/Doubao 推荐使用 metadata.duration |
size | string | 否 | 部分视频模型使用的尺寸字段 |
mode | string | 否 | 部分视频模型使用的模式字段 |
input_reference | string | 否 | OpenAI/Sora 兼容路径可能使用的输入引用;Seedance/Doubao 示例不使用 |
正确与错误示例
错误:把火山官方顶层 content[] 格式直接发给本站入口。
{
"model": "doubao-seedance-2-0-260128",
"content": [
{
"type": "text",
"text": "戴帽子的老爷爷微笑往前走"
}
]
}正确:使用本站入口字段,由 TENSORAXIS 转换为上游格式。
{
"model": "doubao-seedance-2-0-260128",
"prompt": "戴帽子的老爷爷微笑往前走",
"images": ["https://example.com/reference.jpg"],
"metadata": {
"resolution": "1080p",
"ratio": "16:9",
"duration": 5,
"camera_fixed": true,
"watermark": false
}
}提交任务
curl https://api.tensoraxis.com/v1/video/generations \
-H "Authorization: Bearer $TENSORAXIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0-260128",
"prompt": "戴帽子的老爷爷微笑往前走",
"images": ["https://example.com/reference.jpg"],
"metadata": {
"resolution": "1080p",
"ratio": "16:9",
"duration": 5,
"camera_fixed": true,
"watermark": false
}
}'提交成功后会返回公开任务 ID。字段可能随视频渠道略有差异,但通常包含:
{
"id": "task_xxxxx",
"task_id": "task_xxxxx",
"object": "video",
"model": "doubao-seedance-2-0-260128",
"status": "queued",
"progress": 0,
"created_at": 1760000000
}请保存 id 或 task_id 用于轮询。
查询任务
使用通用视频任务入口提交时,配套查询:
curl https://api.tensoraxis.com/v1/video/generations/task_xxxxx \
-H "Authorization: Bearer $TENSORAXIS_API_KEY"通用查询响应为 task 包装结构:
{
"code": "success",
"message": "",
"data": {
"task_id": "task_xxxxx",
"status": "SUCCESS",
"progress": "100%",
"result_url": "https://example.com/video.mp4",
"fail_reason": ""
}
}常见状态含义:
| 状态 | 说明 |
|---|---|
SUBMITTED / QUEUED | 已提交或排队中 |
IN_PROGRESS | 生成中 |
SUCCESS | 已完成,读取 result_url |
FAILURE | 失败,读取 fail_reason |
OpenAI/Sora 风格查询路径为:
curl https://api.tensoraxis.com/v1/videos/task_xxxxx \
-H "Authorization: Bearer $TENSORAXIS_API_KEY"该路径返回 object: "video" 的响应,并在成功时把视频 URL 同时放在 url、video_url 和 metadata.url 中。
Seedance/Doubao metadata
对 Doubao/Seedance 渠道,TENSORAXIS 会把 prompt、images 和 metadata 转换为火山方舟内容生成任务格式:
| 本站请求字段 | 转发到上游 |
|---|---|
prompt | content[].text |
images[] | content[].image_url.url |
seconds | duration |
metadata.resolution | resolution |
metadata.ratio | ratio |
metadata.duration | duration |
metadata.frames | frames |
metadata.seed | seed |
metadata.camera_fixed | camera_fixed |
metadata.watermark | watermark |
metadata.generate_audio | generate_audio |
metadata.draft | draft |
metadata.service_tier | service_tier |
metadata.return_last_frame | return_last_frame |
metadata.execution_expires_after | execution_expires_after |
metadata.callback_url | callback_url |
metadata.tools | tools |
注意事项:
metadata.model会被移除,不能用它覆盖计费模型。- 未映射到当前 adaptor 结构的
metadata字段通常不会转发给上游。 metadata.content属于高级内部兼容字段,可能覆盖由images生成的内容列表;公开接入不建议使用。- 上游字段的取值范围、枚举和实际生效语义,以火山方舟对应模型的官方说明为准。本文只说明 TENSORAXIS 当前代码会如何接收和转发字段。
轮询建议
- 首次提交后等待 2-5 秒再查询。
- 生成中可每 5-10 秒查询一次。
- 不要用高频轮询代替回调;大批量任务建议在业务侧做队列。
- 遇到
429时降低并发并使用指数退避。