Skip to main content
AIHubMix 提供三组任务接口:图片使用 /ai/v1/images,视频使用 /ai/v1/videos,统一任务记录使用 /ai/v1/tasks。
  • 图片生成默认同步,传入 async: true 后异步执行。
  • 视频生成固定异步。
  • 图片和视频详情接口用于获取媒体任务的最新状态。
  • /ai/v1/tasks 提供图片、视频和 LLM 任务的统一只读视图。
豆包 Seedance 视频需要引用真人素材时,先按豆包真人素材使用指南完成本人确认和素材准备,再创建视频任务。

视频教程:异步任务

讲解异步任务的整体机制,并以异步生图为例演示完整调用流程。

前往控制台开启异步任务

使用 /ai/v1 媒体任务接口前,请先为当前账户开启异步任务功能。
未开启异步任务功能时,图片和视频任务创建请求返回 403 async_not_enabled。

快速开始

以下示例使用 wan2.6-t2v 创建视频。该模型接受 duration 和 size;不同模型的有效字段可能不同。

三组接口如何选择

Base URL 为 https://aihubmix.com,认证方式为 Bearer Token:
模型列表和模型 Schema 都是公开发现接口,无需 Bearer Token。其余接口均需认证。
/ai/v1/tasks 不提供创建接口。图片和视频必须通过对应的媒体生成接口创建;LLM 恢复任务由平台在客户端中断后自动保存。

媒体接口和统一任务接口的区别

媒体详情接口与统一任务接口返回相同的任务顶层字段,但 output 项和查询行为不同: 因此,轮询媒体生成状态时应使用图片或视频详情接口;需要统一筛选任务、读取结果元数据或恢复 LLM 响应时使用 /ai/v1/tasks。

如何发现异步媒体模型并获取 Schema

调用流程分为两步。先从公共模型目录取得支持异步接口的文生图或文生视频模型,再用模型的 model_id 获取对应端点的请求 Schema。

获取支持异步接口的模型列表

模型目录与 Playground 使用同一数据源。type=image_generation 返回文生图模型,type=video 返回文生视频模型。增加 schema_checked=true 后,列表只包含已经提供并核对请求 Schema 的模型。
两个请求使用同一个接口。type 当前为单值筛选,获取两类模型时需要分别请求。 响应为 {success, message, data}。data 中与异步媒体接入相关的字段如下。

获取单个模型的请求 Schema

不同模型支持的字段、枚举和数值范围可能不同。提交图片或视频请求前,可以通过同一个公开接口获取指定模型当前可用的端点和请求 JSON Schema。
响应中的 modality 为 image 或 video。endpoints 数组中的每一项描述一个可用调用协议。 同一个模型可能同时返回 /ai/v1 与 OpenAI 兼容 /v1 端点。OpenAI 兼容接口可能暂不支持最新模型,请优先使用 /ai/v1 端点。异步任务接口应按 path 选择 /ai/v1/images/generations 或 /ai/v1/videos,再读取该项的 request.schema。不要依赖 endpoints 数组位置。 下面的命令可直接提取两个异步任务端点的请求 Schema。
模型不存在或尚未提供可发现端点时,接口返回 404 model_not_found。端点数据暂时不可用时返回 500 endpoints_unavailable。

支持的模型和字段

图片和视频协议都定义了跨模型标准字段,但每个模型会基于实际能力收窄字段、枚举和数值范围。调用前应通过模型 Schema 接口获取对应模型的当前参数约束。 例如:
  • wan2.6-t2v 支持 duration、size 和 seed,不接受 resolution、aspect_ratio、frame_images、input_references 或 generate_audio。
  • qwen-image-2.0 支持 n、size、seed、negative_prompt、image 和 images,不接受 aspect_ratio 或 mask。
标准字段集合不代表所有模型支持全部字段。传入当前模型不支持的字段会返回参数错误。

LLM 中断恢复模型

当前支持以下模型:
  • gpt-5.6-sol
  • gpt-5.5-pro
  • gpt-5.4-pro
  • gpt-5.2-pro
  • claude-fable-5
  • claude-opus-5
支持范围可能调整,请以本页清单为准。使用中断恢复还需要当前账户已开启异步任务功能。任一条件不满足时,原 LLM 请求仍会正常执行,但客户端断开后不会保存恢复任务。

如何创建图片任务

同步图片

省略 async 或设置为 false 时,接口会等待生成完成并返回任务对象:
同步图片任务也会保存任务记录。客户端连接中断或创建响应丢失时,可以通过 GET /ai/v1/images 查找对应任务。

异步图片

将 async 设置为布尔值 true 后,接口会立即返回任务对象,生成在后台继续:
使用 GET /ai/v1/images/{id} 查询异步图片任务。完成后,直接请求每个 output 项中的 content_url;该 URL 已包含对应图片的 result_id。
图片请求中的 async 必须是布尔值。webhook_url 和 webhook_events_filter 仅能与 async: true 一起使用。

图片标准字段


如何创建视频任务

视频请求始终异步,不支持通过 Prefer: wait 改为同步等待。标准协议使用整数 duration 表示秒数:

视频标准字段

input_references 项的结构:
type 可为 image_url、video_url 或 audio_url。 frame_images 项的结构:
frame_type 可为 first_frame 或 last_frame。

媒体任务对象

图片和视频专属接口返回以下结构:
媒体 output 项:

状态说明

客户端可以每 15 秒查询一次,直到状态变为 completed、failed 或 cancelled。15 秒是客户端轮询建议,不是服务端协议限制。

如何查询媒体任务

查询媒体详情

媒体详情接口可返回更新后的任务状态,因此媒体轮询应使用对应的图片或视频详情接口。

查询媒体列表

创建响应丢失时,可以通过对应媒体列表找回任务 ID:
媒体列表返回查询时的任务快照,不会主动更新任务状态。

如何使用统一任务接口

统一任务接口支持以下筛选条件:
统一任务详情:
媒体任务的统一 output 项:
单产物直接请求 /ai/v1/tasks/{id}/content。多产物任务需要请求 /ai/v1/tasks/{id}/content/{result_id};未指定结果 ID 时返回 400 result_id_required。
统一任务列表、详情和内容接口按创建任务时的 Bearer Token 隔离。同一账户下的其他 API Key 不能读取该任务。

如何下载媒体结果

下载图片

图片完成后,逐项请求媒体任务对象中的 output[].content_url:
图片的媒体下载路径为 /ai/v1/images/{id}/content/{result_id}。媒体任务对象不单独公开 result_id,客户端直接使用 content_url 即可。 当 b64_json 非空时,可以直接对该字段进行 Base64 解码。

下载视频

结果可能过期,并且可能存在下载次数限制。过期返回 410 artifact_expired,超过下载次数限制返回 429 too_many_downloads。

如何使用 Webhook

异步图片和视频支持任务级 Webhook:
webhook_url 最长 512 字符,并且不能指向本机、私网或其他受限地址。省略 webhook_events_filter 时,平台推送 completed、failed 和 cancelled;显式传入时,数组不能为空、不能重复,并且必须与 webhook_url 一起使用。 未在请求中传入 webhook_url 时,异步图片和视频会尝试使用账户中配置的默认回调地址。无效的账户默认地址会被忽略,不会阻止任务创建。

回调请求

results 仅在结果已存档时出现,下载仍需 Bearer Token。

重试与去重

平台采用至少一次投递,同一个事件可能重复送达:
  • HTTP 2xx 表示接收成功。
  • HTTP 5xx、网络错误或超时会触发重试。
  • HTTP 3xx 和 4xx 不会重试。
  • 最多投递 6 次,重试间隔依次为 1、4、16、64、256 秒。
接收端应保存 event_id,重复收到相同事件时直接返回 2xx。
任务级 Webhook 本身不携带独立签名密钥。需要签名验证时,请配置账户级 Webhook 订阅,并保留任务详情查询作为结果确认方式。

LLM 中断恢复如何生效

LLM 中断恢复用于取回客户端断开连接后的最终响应。请求方式、流式行为和响应格式保持不变,也不会在请求开始时预先返回任务 ID。 以下条件需要同时满足: 平台仅在检测到响应未完整交付且客户端已经断开时创建恢复任务,并保存最终 JSON 或 SSE。正常完成并完整交付给客户端的 LLM 请求不会创建恢复任务。 LLM 响应头包含 X-Aihubmix-Request-Id。客户端应尽早保存该值,以便在控制台中定位对应请求。公开任务 API 当前不能按请求 ID 过滤;可以按模型和创建时间查询最近的 LLM 任务:
LLM 任务的统一 output 项包含 type=response、content_type、content_url 和 truncated。GET /ai/v1/tasks/{id}/content 返回保存的原始 JSON 或 SSE。
LLM 中断恢复任务当前不发送任务级 Webhook。客户端中断不会停止平台继续处理请求,该次调用仍按原接口规则计费。

错误响应与错误码

本节适用于 /ai/v1/images/*、/ai/v1/videos/* 及已识别为图片或视频的 /ai/v1/tasks/*。LLM 任务保持原有错误合同;未指定媒体类型且尚未取得 Task 的查询继续使用通用错误合同。
  • 当前请求失败:HTTP 非 2xx,表示本次创建、查询或下载请求失败,见 HTTP 请求失败。
  • 任务执行失败:查询返回 HTTP 200,但任务的 status=failed,原因记录在任务内的 error,见 任务执行失败。
  • 列表单条结果读取失败:列表返回 HTTP 200,但某条任务带有 output_error,见 列表单条结果读取失败。
下表 message 列列出英文返回文案,说明列解释含义及处理方式。参数校验错误列出通用文案,实际响应可能进一步指出具体字段和约束。客户端应使用 code 判断错误类型,不应依赖完整 message 匹配。

提交 HTTP 5xx 错误反馈

请求返回 HTTP 5xx 时,请提交反馈并附上 error.tid。

HTTP 请求失败

下表中的 HTTP 状态用于当前请求直接失败的情况。已创建任务的执行失败见下方“任务执行失败”表。

请求参数与媒体输入

大小限制
  • 媒体大小:图片任务超限返回 image_too_large,其他媒体任务返回 media_too_large。视频任务上传参考图片时也使用 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}:字节上限。图片上限未知时,返回 The image is too large. Reduce the image size and try again.
  • {allowed_formats}:允许的格式列表。格式错误文案可能追加 Use one of: {allowed_formats}.

生成请求与返回结果

账户与权限

服务可用性与限流

provider_unavailable 表示已明确识别的模型推理厂商故障。仅凭普通 429 或 4xx 无法确认账户额度、内容审核或参数问题。

任务查询与结果下载

任务执行失败

任务创建成功后,生成失败通过 status=failed 和任务内的 error 表达。查询成功仍返回 HTTP 200。
媒体输入错误也可能出现在失败 Task 中,错误码含义与上方媒体输入表一致;此时查询成功的 HTTP 状态仍为 200。 媒体大小错误的 message 结尾使用 submit a new task.,提示缩小媒体后提交新任务。 output_blocked 表示明确拦截且未返回可用图片,本次不收取生成费用。output_policy_violation 按现有内容审核收费规则处理。历史费用请以计费记录为准。

列表单条结果读取失败

图片、视频任务列表中的个别行可能附带 output_error:
该字段表示本次无法读取该行的结果。列表仍返回 HTTP 200,该行 output=[],原 id、status、error 和分页保持不变,其他可正常读取的任务不受影响。即使 status=completed,也应检查 output_error,再判断结果是否可读取。 请提供 output_error.tid 联系支持;该字段未带 tid 时,可提供本次响应头中的请求 ID。此错误不改变任务状态或费用,也不触发 Webhook。 统一 /ai/v1/tasks 列表的读取失败行可能返回 expires_at=null,结果仍受原保留期限制。图片、视频专属列表保留已取得的过期时间。 上述处理仅适用于单行结果无法读取且没有可用回退的情况。统一 tasks 接口整批查询失败仍返回 HTTP 错误,详情读取同类故障仍返回 HTTP 500。 相关文档:图片接口 · 视频接口 · 异步任务

完整视频示例


常见问题

媒体任务应该查询 /ai/v1/tasks/{id} 还是媒体详情接口? 轮询生成状态时使用媒体详情接口:图片查询 /ai/v1/images/{id},视频查询 /ai/v1/videos/{id}。/ai/v1/tasks/{id} 返回只读快照。 为什么视频请求中的 seconds 报参数错误? /ai/v1/videos 标准协议使用整数 duration,单位为秒。具体允许值由对应模型支持的参数决定。 为什么 resolution 在部分视频模型中报参数错误? 标准视频协议包含 resolution 和 size,但具体模型会收窄字段。例如 wan2.6-t2v 使用 size,不接受 resolution。 创建响应丢失后如何找回媒体任务? 图片请求 GET /ai/v1/images,视频请求 GET /ai/v1/videos。列表支持 after、limit 和 order 分页参数。 为什么两种详情接口的 output 字段不同? 媒体详情接口提供直接下载所需的简化字段;统一任务接口额外提供 result_id 和 content_type,并为 LLM 存档提供 truncated。 Webhook 没收到怎么办? 确认回调地址可以公开访问并及时返回 2xx,然后使用媒体详情接口查询最终状态。
更新时间:2026-08-12