Skip to content

任务事件

异步生图支持 Server-Sent Events。一个 SSE 连接会监听当前 API Key 下的所有异步生图任务,包括连接建立后新提交的任务。

该接口需要使用绑定批量生图分组的生图 API Key。普通 API Key 不会产生异步生图任务事件。

该接口适合长时间运行的生产任务面板或服务端任务调度器。客户端仍应保留任务列表和任务详情接口作为断线后的兜底查询。

监听任务事件

接口说明:

项目
MethodGET
Path/v1/images/tasks/events
Content-Typetext/event-stream
认证Authorization: Bearer YOUR_API_KEY
权限只推送当前 API Key 创建的任务

请求示例:

bash
curl -N https://llmapi.site/v1/images/tasks/events \
  -H 'Authorization: Bearer YOUR_API_KEY'

连接建立后,服务端会先推送当前 API Key 下仍处于 queuedrunning 的任务快照;已经 succeededfailedtimeoutcanceled 的历史任务不会作为首包推送,需要通过列表或详情接口查询。

failedtimeout 都是终态事件,服务端不会基于该事件自动重试;调用方如需重试,应重新提交任务。

事件格式

服务端发送标准 SSE 帧:

text
event: image_task.updated
data: {"id":"8b17fd33b0e947a08cb417e81e9ea9da","task_id":"8b17fd33b0e947a08cb417e81e9ea9da","object":"image.task","status":"running","model":"gpt-image-2","n":1}

事件类型:

Event说明
image_task.updated任务创建、开始运行、成功、失败、超时或取消时推送。
heartbeat comment服务端约每 15 秒发送一次 SSE 注释帧,保持连接活跃。

data 字段是任务响应对象,结构与 GET /v1/images/tasks/{task_id} 一致。客户端应按 task_id 合并更新本地任务状态。

心跳帧示例:

text
: heartbeat

成功事件示例

text
event: image_task.updated
data: {"id":"8b17fd33b0e947a08cb417e81e9ea9da","task_id":"8b17fd33b0e947a08cb417e81e9ea9da","object":"image.task","status":"succeeded","model":"gpt-image-2","n":1,"result":{"data":[{"index":0,"url":"https://oss.example.com/image.png","content_type":"image/png","size_bytes":1048576}]}}

客户端处理建议

场景建议
需要监听多个任务建立一个 /v1/images/tasks/events 连接即可。
提交新任务无需为新任务再建立 SSE;同一连接会收到后续事件。
连接断开重新连接 SSE,并调用任务列表或详情接口补齐当前状态。
收到终态将该 task_id 标记为完成,但不要关闭整个 SSE 连接,除非不再监听其他任务。
收到失败或超时不等待服务端自动重试;按业务需要重新提交新任务。
服务端到服务端集成推荐使用 SSE 接收增量事件,同时保留轮询作为兜底。

轮询兜底建议:

text
0-60 秒:每 3-5 秒轮询一次
60 秒后:每 10-15 秒轮询一次
终态状态:停止轮询该任务