异步任务
任务 API 是 LLMAPI 面向长耗时媒体任务的统一接口。客户端提交 JSON 任务后获得任务 ID,再通过轮询或 Server-Sent Events 获取最终结果。统一协议支持 image、video、3d 三种模态的模型配置与资产返回。
当前可用性
图片与视频 Adapter 已可用。每个渠道只选择一个 Adapter。
3D 公共请求和基于 Channel 的路由结构仍然保留,但目前没有注册 3D Adapter,因此 3D 模型当前不可执行,也不会出现在 GET /v1/tasks/models。
接口列表
| Method | Path | 说明 |
|---|---|---|
POST | /v1/tasks | 提交任务。 |
POST | /v1/tasks/{id}/cancel | 取消仍在排队的任务。 |
GET | /v1/tasks/{id} | 查询任务状态与结果。 |
GET | /v1/tasks/{id}/assets/{index} | 下载结果资产。 |
GET | /v1/tasks/events | 通过 SSE 监听任务更新。 |
GET | /v1/tasks/models | 查看当前 Key 每个模型最终生效的价格和参数约束。 |
任务 API Key 只能访问 /v1/tasks*,以及用于 OpenAI Images 兼容同步调用的 POST /v1/images/generations 和 POST /v1/images/edits。普通模型 API Key 不能提交任务。
生命周期
| 状态 | 说明 |
|---|---|
queued | 已接收,等待处理。 |
running | 处理中。 |
succeeded | 成功完成,结果资产可用。 |
failed | 执行失败。 |
timeout | 执行超时。 |
canceled | 任务在执行前被取消。 |
模态
modality | 公共能力 | 结果 assets[].kind | 当前状态 |
|---|---|---|---|
image | 文生图、参考图、编辑/重绘(取决于模型) | image | 已开放 |
video | 文生视频、首尾帧、多素材参考、原生音频(取决于模型) | video,可附带 audio、image | 配置视频渠道后可用 |
3d | 文本或参考图生成 3D 模型 | model,可附带 image 或纹理文件 | Adapter 尚未开放 |
计费与用量
任务提交时按当前 Key 对该模型生效的档位预扣 estimated_cost,成功后以 actual_cost 结算;实际费用较低时退回差额,较高时补扣差额。失败、超时或取消会释放预扣,不产生任务费用。
当前支持三种用户价格模式:图片规格矩阵(image_matrix)、视频时长(video_duration)和按次(per_request)。视频费用按任务的标准时长字段计算,不读取上游返回的 token usage。异步任务目前也不会写入传统 usage_logs;请以任务查询响应和管理端任务详情中的费用字段为准。
关键规则
- 使用任务 API Key。
- Key 可以按模型选择任务档位;未显式选择的模型使用该模型默认档位。
- 请求中不要传档位参数,也不要修改模型名;使用
GET /v1/tasks/models查询当前 Key 可以使用的内容。 - 某个模型的选择失效时,仅该模型回到自己的默认档位。
- 业务请求字段放在
params中。 - 如果传
params.model,它必须和顶层model一致。 - LLMAPI 会按当前 Key 对请求模型最终生效的档位选择可用路线。
- 以
GET /v1/tasks/models为唯一可用性来源,不要根据模型名称猜测模态或能力。
错误格式
任务 API 业务错误使用以下 JSON 结构;认证失败仍返回 authentication_error:
json
{
"error": {
"type": "TASK_INVALID_REQUEST",
"message": "params is required"
}
}常见任务错误:
| 错误类型 | HTTP 状态 | 说明 |
|---|---|---|
authentication_error | 401 | API Key 缺失或无效。 |
TASK_SCOPE_REQUIRED | 403 | 当前 API Key 未启用任务 API。 |
TASK_INVALID_REQUEST | 400 | 请求体或参数无效。 |
TASK_UNSUPPORTED_MODEL | 400 | 请求模型不可用于任务 API。 |
TASK_UNSUPPORTED_ADAPTER | 400 | 选中的模型不能执行该任务类型。 |
TASK_PRICING_UNAVAILABLE | 503 | 请求参数缺少可用价格配置。 |
TASK_STORAGE_UNAVAILABLE | 503 | 结果资产存储不可用。 |
TASK_INSUFFICIENT_BALANCE | 403 | 余额不足,无法覆盖任务预估费用。 |
TASK_QUEUE_LIMIT_EXCEEDED | 429 | 用户或 API Key 达到排队任务限制。 |
TASK_NOT_FOUND | 404 | 任务或资产不存在,或当前 Key 无权访问。 |