Skip to main content
更新日期:2026-09-18

异步生图

图片模型一次生成通常要 20~120 秒。同步接口需要客户端一直挂着 HTTP 连接等结果,容易撞上网关/代理的读超时,返回的 base64 也很大。异步模式把这一步拆成两次调用:
  1. 提交:请求立即返回 202 和一个任务 ID(不到 1 秒)。
  2. 轮询:用任务 ID 查 GET /v1/tasks/{id},完成后 result 里是图片的 https URL(永久归档在 media.crazyrouter.com),不返回 base64。
模型名、请求体、计费都和同步完全一样。 异步只是改变”什么时候拿到结果”,同一个 API Key 可以一部分请求同步、一部分请求异步。任务失败不计费。

支持的模型

方式一:Gemini 路径别名(推荐给 Gemini 客户端)

不需要改动请求体、请求头或查询参数中的任何一个字节,只把动作后缀从 :generateContent 换成 :asyncGenerateContent
cURL
返回 202
返回的 model 是解析后的底层模型名(如 gemini-3.1-flash-image-preview),与消费日志一致;这不影响你按 nano-banana-2 提交。参考图编辑与同步写法相同:在 parts 里放 inlineData(base64)或 fileData(URL)即可。
:asyncGenerateContent 只接受图片输出模型;用文本模型调用会返回 400 async mode is only available for image models。流式动作 :streamGenerateContent 不支持异步。

方式二:OpenAI 图片端点加 Prefer

在原有 /v1/images/generations/v1/images/edits 请求上加一个 HTTP 头 Prefer: respond-async,其余不变。也可以改用请求体字段 "async": true(JSON)或表单字段 async=true(multipart),效果相同。
响应头会带 Preference-Applied: respond-async,正文与方式一相同(202 + 任务 ID)。

查询任务

只能查询本账号提交的任务,其他账号的 ID 一律 404。建议 2~3 秒轮询一次,10 分钟仍未完成可视为失败。

状态

完成时的响应(Gemini 系)

result 就是原生 Gemini GenerateContentResponse,只把 inlineData 换成了指向图片 URL 的 fileData

完成时的响应(OpenAI 系)

result 与同步 /v1/images/* 的返回体同形,图片在 data[].url
如果你确实需要 base64,查询时加 ?inline=true,服务端会把归档图片读回并还原为 inlineData / b64_json(不推荐,大图很慢)。

失败时的响应

retryable: true 表示可以重新提交一个新任务;系统不会自动重试。

幂等提交

网络重试可能重复提交同一个任务。在提交请求上带 Idempotency-Key: <任意字符串> 头,同一账号同一 Key 会返回同一个任务 ID(第二次返回 200 而不是 202),不会重复生成也不会重复计费。

与同步的差异一览