任务事件
异步生图支持 Server-Sent Events。一个 SSE 连接会监听当前 API Key 下的所有异步生图任务,包括连接建立后新提交的任务。
该接口需要使用绑定批量生图分组的生图 API Key。普通 API Key 不会产生异步生图任务事件。
该接口适合长时间运行的生产任务面板或服务端任务调度器。客户端仍应保留任务列表和任务详情接口作为断线后的兜底查询。
监听任务事件
接口说明:
| 项目 | 值 |
|---|---|
| Method | GET |
| Path | /v1/images/tasks/events |
| Content-Type | text/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 下仍处于 queued 或 running 的任务快照;已经 succeeded、failed、timeout、canceled 的历史任务不会作为首包推送,需要通过列表或详情接口查询。
failed 和 timeout 都是终态事件,服务端不会基于该事件自动重试;调用方如需重试,应重新提交任务。
事件格式
服务端发送标准 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 秒轮询一次
终态状态:停止轮询该任务