Seedance

豆包 Seedance 系列(doubao-seedance-*)除标准视频协议外,还可以用火山方舟(Ark)原厂路径调用, 请求体与响应体按 Ark 内容生成协议书写:

方法路径用途
POST/ark/api/v3/contents/generations/tasks创建内容生成任务(视频)
GET/ark/api/v3/contents/generations/tasks/{task_id}查询任务状态与结果
DELETE/ark/api/v3/contents/generations/tasks/{task_id}取消未完成的任务并退回预扣(取决于上游是否支持,见下)

这是平台托管通道:路径是 Ark 自己的,但请求走的是网关标准的异步任务流水线,与 通用异步内容生成任务完全同一条链路,只是换了 Ark 的路径拼写。因此它同样享受 维度计费、任务落库、产物持久化与预扣/结算的全部保障。

创建任务

请求体按 Ark 内容生成协议书写,model 填平台逻辑模型名(如 doubao-seedance-2.0-mini):

bash
curl https://api.modelgo.ai/ark/api/v3/contents/generations/tasks \
  -H "Authorization: Bearer $MODELGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<model>",
    "content": [
      { "type": "text", "text": "一只霓虹都市里的猫" },
      { "type": "image_url", "image_url": { "url": "https://example.com/first.jpg" }, "role": "first_frame" }
    ],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5
  }'

content 里除文本外还可以带图片/视频,元素用 role 标明用途;素材组合决定生成模式,生成模式又决定哪些参数合法:

content 元素role生成模式
只有 text—文生视频(t2v)
image_urlfirst_frame首帧图生视频(i2v)
image_urlfirst_frame + last_frame首尾帧(flf2v)
image_url / video_urlreference_image / reference_video多模态参考生视频

参数与生成模式约束

resolution / ratio / duration 的合法取值随模型而异(例如 Seedance 2.0 的 Fast 与 Mini 不支持 1080p,duration 下限是 4 秒);camera_fixed、generate_audio、return_last_frame、watermark 等 Ark 扩展参数还随生成模式而异。携带当前模型/模式不支持的参数,会在创建时被上游拒绝 (400 provider_invalid)。已知一例:

  • camera_fixed 在首尾帧(同时带 first_frame + last_frame)场景不被支持,携带它会被上游拒
  • (camera_fixed ... must be empty)。首尾帧本身已约束镜头;确需固定镜头请改用文生 / 单首帧等 支持该参数的模式。

因为本通道不锁定上游 family(同一逻辑模型由多家供应商承接),某参数是否被接受还取决于实际 承接的供应商与其模型版本。请以「模型能力说明 + 上述模式约束」为准,不要假定某模式可用的参数在 另一种模式同样可用。

查询任务

bash
curl https://api.modelgo.ai/ark/api/v3/contents/generations/tasks/{task_id} \
  -H "Authorization: Bearer $MODELGO_API_KEY"

创建与查询返回的就是通用异步内容生成任务那一种 Ark 任务对象——同一条流水线, 响应报文与字段语义(status 取值、content.video_url、error、usage 缺省规则)与那一页完全一致, 此处不再重复。

取消任务

bash
curl -X DELETE https://api.modelgo.ai/ark/api/v3/contents/generations/tasks/{task_id} \
  -H "Authorization: Bearer $MODELGO_API_KEY"

取消成功后预扣会被退回(void),不产生结算。

但取消不是所有上游都支持。 能否取消取决于承接该任务的供应商是否实现了取消能力,而这条通道 不锁定上游 family,所以同一个逻辑模型的两次调用可能一次能取消、一次不能。两种失败:

情况响应
承接该任务的供应商不支持取消400 / 4003 provider_unsupported,endpoint not supported by provider
任务已到终态(succeeded / failed)409 task_already_terminal,task already finished; nothing to cancel

取消失败时预扣不会提前退回,会等任务到终态或预扣过期后按正常结算/释放流程处理。所以不要把 「先创建、再取消」当成一种可靠的止损手段。

关键约定

  • id 是网关任务 ID,不是上游任务 ID。 查询、取消都只认这个 ID,请以创建响应里的 id 为准。
  • 响应形态是固定的。 无论实际由哪家上游承接,创建与查询都返回同一种 Ark 任务对象,
  • 不会因为路由到不同供应商而变形。

  • 该通道不锁定上游 family。 路径拼写不参与选路:model 对应的逻辑模型路由到谁,就由谁承接。
  • Seedance 在平台上由多家供应商共同承接,同一个逻辑模型的两次调用可能落到不同上游,这是正常的。

  • 产物内容接口只有 OpenAI 兼容那一条(GET /v1/videos/{task_id}/content),Ark 路径下没有对应端点;
  • 直接使用响应里的 content.video_url 即可。

  • 该模型是否开放本通道,取决于它在模型目录里声明的 public_protocols 是否含
  • content_generation;未声明则返回 4005。可用 GET https://api.modelgo.ai/v1/models 核对。

如果你不需要 Ark 的路径与字段风格,OpenAI 兼容视频流是更标准化的选择。