/ai/v1/videos 系列端点。视频生成固定异步,请求提交后返回
任务 ID,客户端轮询详情或接收 Webhook,完成后下载视频。
使用豆包 Seedance 引用本人已确认的素材时,请先阅读豆包真人素材使用指南。
快速开始
下面使用wan2.6-t2v 创建一个 5 秒视频。
接口概览
Base URL:
https://aihubmix.com
认证方式:
查询模型 Schema
模型目录可以筛选已经提供请求 Schema 的文生视频模型:model_id 后,查询该模型实际支持的端点:
path 选择原生视频接口,
再读取对应的 request.schema:
endpoints 数组位置。完整响应字段和失败情况参阅
模型 Schema 接口。
创建视频
视频请求始终异步,不支持通过Prefer: wait 改为同步等待。原生协议使用整数
duration 表示秒数;不要沿用 /v1/videos 兼容协议中的字符串 seconds。
标准字段
参考媒体项示例:
input_references[].type 可以是 image_url、video_url 或 audio_url。首尾帧使用
frame_images:
视频任务对象
创建接口先返回任务对象。任务完成后,详情接口返回以下结构:
视频媒体接口的
output 项包含 index、固定值 type: "file"、content_url,以及通常
为空的 b64_json。视频结果一般通过二进制内容端点下载。
状态说明
客户端可以每 15 秒查询一次,直到状态变为
completed、failed 或 cancelled。
15 秒是客户端轮询建议,不是服务端协议限制。
查询视频任务
查询详情
查询列表
创建响应丢失时,可以通过视频列表找回任务 ID:统一任务接口
/ai/v1/tasks 提供图片、视频和 LLM 任务的统一只读视图。可以只查询视频任务:
object、status、model、after、limit 和 order。统一任务详情:
result_id 和 content_type:
/ai/v1/tasks/{id}/content。若统一任务包含多个结果,则请求
/ai/v1/tasks/{id}/content/{result_id};未指定结果 ID 时返回 400 result_id_required。
媒体详情接口可能在查询时更新活动任务状态,统一任务接口只返回当前快照。因此轮询使用
/ai/v1/videos/{id};统一筛选和读取结果元数据时使用 /ai/v1/tasks。
任务及内容按创建任务时的 Bearer Token 隔离。下载视频结果
任务进入completed 后,请求视频内容端点:
output[].content_url;
两种方式都需要携带创建任务时的 Bearer Token。
Webhook
创建视频任务时可以同时设置任务级 Webhook:webhook_url 最长 512 字符,不能指向本机、私网或其他受限地址。wan2.6-t2v
当前 Schema 未列出 webhook_events_filter,因此本例不传事件过滤器,平台默认推送
completed、failed 和 cancelled。只有模型 Schema 明确包含该字段时才可以设置;
显式传入时,数组不能为空、不能重复,并且必须与 webhook_url 一起使用。
回调请求
event_id 用于去重;data.error 在失败时可能出现;data.results 只在结果已存档时出现,
下载仍需 Bearer Token。
重试与去重
平台采用至少一次投递,同一个事件可能重复送达:- HTTP
2xx表示接收成功。 - HTTP
5xx、网络错误或超时会触发重试。 - HTTP
3xx和4xx不会重试。 - 最多投递 6 次,重试间隔依次为 1、4、16、64、256 秒。
event_id,重复收到相同事件时直接返回 2xx。任务级 Webhook 本身不
携带独立签名密钥;需要签名验证时,请配置账户级 Webhook,并保留详情查询作为结果确认方式。
错误响应与错误码
本节适用于/ai/v1/videos/* 和视频任务。图片错误见 图片接口。
- 当前请求失败:HTTP 非 2xx,表示本次创建、查询或下载请求失败,见 HTTP 请求失败。
- 任务执行失败:查询返回 HTTP 200,但任务的
status=failed,原因记录在任务内的error,见 任务执行失败。 - 列表单条结果读取失败:列表返回 HTTP 200,但某条任务带有
output_error,见 列表单条结果读取失败。
message 列列出英文返回文案,说明列解释含义及处理方式。参数校验错误列出通用文案,实际响应可能进一步指出具体字段和约束。客户端应使用 code 判断错误类型,不应依赖完整 message 匹配。
提交 HTTP 5xx 错误反馈
请求返回 HTTP
5xx 时,请提交反馈并附上 error.tid。HTTP 请求失败
视频创建后通过任务状态返回生成结果。下表中的 HTTP 状态用于当前请求直接失败的情况。请求参数与媒体输入
- 媒体大小:视频任务超限返回
media_too_large,上传参考图片时也使用此码。具体上限见错误信息或error.details.max_bytes。 - 整个请求大小:
request_too_large表示 HTTP 请求体超过 32 MiB,包括文本、参数和内联媒体编码。只传 URL 时,链接本身计入请求体,链接指向的文件仍需满足模型的媒体限制。 - 实际大小:
error.details.actual_bytes仅在完整大小已确认时提供。通过 URL 读取媒体时,若达到读取上限后停止,可能不返回该字段。
error.details.allowed_mime_types 或错误信息中的格式列表;未提供列表时,查阅该模型的 Schema。
文案中的占位符
{media_kind}:实际媒体类型。类型已确认时,invalid_media_data和media_url_unreachable的文案也会使用image或video。{max_bytes}:字节上限。{allowed_formats}:允许的格式列表。格式错误文案可能追加Use one of: {allowed_formats}.
生成请求与返回结果
账户与权限
服务可用性与限流
provider_unavailable 表示已明确识别的模型推理厂商故障。仅凭普通 429 或 4xx 无法确认账户额度、内容审核或参数问题。
任务查询与结果下载
任务执行失败
任务创建成功后,生成失败通过status=failed 和任务内的 error 表达。查询成功仍返回 HTTP 200。
message 结尾使用 submit a new task.,提示缩小媒体后提交新任务。
provider_empty_output 表示已确认没有可用视频结果;result_delivery_failed 表示已有生成结果、保存或交付失败,遇到后者请先联系支持排查已有结果。
列表单条结果读取失败
图片、视频任务列表中的个别行可能附带output_error:
output=[],原 id、status、error 和分页保持不变,其他可正常读取的任务不受影响。即使 status=completed,也应检查 output_error,再判断结果是否可读取。
请提供 output_error.tid 联系支持;该字段未带 tid 时,可提供本次响应头中的请求 ID。此错误不改变任务状态或费用,也不触发 Webhook。
图片、视频列表保留已取得的 expires_at。统一 /ai/v1/tasks 列表的读取失败行可能返回 expires_at=null,结果仍受原保留期限制。
上述处理仅适用于单行结果无法读取且没有可用回退的情况。统一 tasks 接口整批查询失败仍返回 HTTP 错误,详情读取同类故障仍返回 HTTP 500。
相关文档:图片接口 · 视频接口 · 异步任务
完整示例
以下示例完成创建、轮询和 MP4 下载。常见问题
视频任务应该查询/ai/v1/tasks/{id} 还是视频详情接口?
轮询使用 /ai/v1/videos/{id};统一筛选任务或读取 result_id、content_type 时使用
/ai/v1/tasks。
为什么 seconds 报参数错误?
/ai/v1/videos 标准协议使用整数 duration,单位为秒,具体允许值由模型 Schema 决定。
为什么 resolution 在部分模型中报参数错误?
标准协议包含 resolution 和 size,具体模型会收窄字段。例如 wan2.6-t2v 使用
size,不接受 resolution。
创建响应丢失后如何找回任务?
请求 GET /ai/v1/videos?limit=20&order=desc,再用返回的任务 ID 查询视频详情。
Webhook 没收到怎么办?
确认回调地址可以公开访问并及时返回 2xx,然后使用视频详情接口确认最终状态。
更多跨媒体背景参阅 异步任务、
Webhook 说明 和
完整错误码。