视频生成

使用 TENSORAXIS 提交视频生成任务、轮询任务状态,并正确传递 Seedance/Doubao 高级参数。

视频生成是异步任务:先提交任务取得 task_id,再轮询任务状态,完成后读取视频地址。

对接 Seedance/Doubao 视频模型时,请使用本站入口字段 promptimagesmetadata。不要把火山官方示例中的顶层 content[] 请求体直接发给本站的 /v1/video/generations,否则会因为缺少 prompt 返回 400 prompt is required

按模型查看专页

本页讲通用的提交、查询与轮询流程。各视频系列的能力矩阵、入口字段、按能力的示例与参数表,请看对应专页:

端点

方法路径用途推荐场景
POST/v1/video/generations提交视频生成任务Seedance/Doubao 通用入口
GET/v1/video/generations/{task_id}查询视频生成任务查询同一路径任务
POST/v1/videosOpenAI/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

字段类型必填说明
modelstring要调用的模型名
promptstring视频提示词;为空会返回 400 prompt is required
imagestring单张参考图 URL;服务端会兼容转换为 images
imagesstring[]多张参考图 URL,用于图生视频
metadataobject模型或上游特有参数;Seedance/Doubao 高级参数放这里
secondsstring兼容字段;Doubao/Seedance 会把正整数值转成上游 duration
durationinteger通用任务字段;Seedance/Doubao 推荐使用 metadata.duration
sizestring部分视频模型使用的尺寸字段
modestring部分视频模型使用的模式字段
input_referencestringOpenAI/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
}

请保存 idtask_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 同时放在 urlvideo_urlmetadata.url 中。

Seedance/Doubao metadata

对 Doubao/Seedance 渠道,TENSORAXIS 会把 promptimagesmetadata 转换为火山方舟内容生成任务格式:

本站请求字段转发到上游
promptcontent[].text
images[]content[].image_url.url
secondsduration
metadata.resolutionresolution
metadata.ratioratio
metadata.durationduration
metadata.framesframes
metadata.seedseed
metadata.camera_fixedcamera_fixed
metadata.watermarkwatermark
metadata.generate_audiogenerate_audio
metadata.draftdraft
metadata.service_tierservice_tier
metadata.return_last_framereturn_last_frame
metadata.execution_expires_afterexecution_expires_after
metadata.callback_urlcallback_url
metadata.toolstools

注意事项:

  • metadata.model 会被移除,不能用它覆盖计费模型。
  • 未映射到当前 adaptor 结构的 metadata 字段通常不会转发给上游。
  • metadata.content 属于高级内部兼容字段,可能覆盖由 images 生成的内容列表;公开接入不建议使用。
  • 上游字段的取值范围、枚举和实际生效语义,以火山方舟对应模型的官方说明为准。本文只说明 TENSORAXIS 当前代码会如何接收和转发字段。

轮询建议

  • 首次提交后等待 2-5 秒再查询。
  • 生成中可每 5-10 秒查询一次。
  • 不要用高频轮询代替回调;大批量任务建议在业务侧做队列。
  • 遇到 429 时降低并发并使用指数退避。