智能体Code
公开接入文档

智能体Code 图片生成 API 接入文档

最后更新:2026-07-31

本文档用于把应用、脚本或自动化工具接入智能体Code 图片生成 API。接口按 OpenAI Images API 兼容格式提供文生图、参考图编辑和异步任务查询能力。生产接入建议采用与本站在线生图一致的稳态策略:默认 async=truen=1、服务端队列和任务轮询。所有示例均使用占位密钥,请不要在前端页面、公开代码仓库、聊天记录或客户端安装包中暴露真实 API Key。

HTTPS 接入

统一使用 https://www.chaomoapi.com/v1,按 OpenAI Images API 兼容格式调用。

图片生成与图生图

支持文生图与 1 到 9 张参考图编辑。调用时只填写模型 ID,不填写后台分组名称。

图片专用

当前平台仅开放图片能力,请使用 /v1/images/generations/v1/images/edits

用量与安全

支持 API Key、额度、日志和余额管理,便于排查请求和控制成本。

1. 接入信息

项目配置
站点地址https://www.chaomoapi.com
API Base URLhttps://www.chaomoapi.com/v1
健康检查https://www.chaomoapi.com/health
鉴权方式Authorization: Bearer sk-xxxx
接口格式OpenAI Images API 兼容格式

基础调用流程

  1. 登录控制台并创建 API 密钥。
  2. 确认密钥有可用额度。
  3. 将 SDK 或 HTTP 客户端的 base_url 配置为 https://www.chaomoapi.com/v1
  4. 使用 /v1/models 验证密钥能访问的模型列表。
  5. 首次接入请使用 async=truen=1 和并发 13 验证稳定性。
  6. 批量生成时在服务端控制并发,不要在浏览器或客户端直接暴露 API Key,也不要无限制地同时提交大量请求。
  7. 图生图和高质量模型可能超过 60 秒,生产接入请始终使用 async=true 并通过任务查询接口获取结果。
curl https://www.chaomoapi.com/v1/models \
  -H "Authorization: Bearer sk-xxxx"

2. 模型列表查询

接入前建议先调用 /v1/models,确认当前 API Key 可用的图片模型。

curl https://www.chaomoapi.com/v1/models \
  -H "Authorization: Bearer sk-xxxx"

当前公开模型如下。用户接入时只需将表格中的模型 ID 直接传给请求参数 model,无需了解或填写后台分组名称。

模型选择:在线生图页面会按当前 API Key 固定一个可选模型;服务端接入请始终以 /v1/models 返回的 data[].id 为准。后台分组名称不是接口参数,也不需要在代码中配置。
模型 ID说明默认比例单张价格
gpt-image2-1K标准图片生成与参考图编辑,适合常规配图、头像、商品图和竖版素材1:1RMB 0.03
gpt-image2-2K-Direct2K 图片生成与参考图编辑,适合商品主图、设计素材和清晰编辑16:9RMB 0.05
gpt-image2-4K-Stable4K Stable,适合需要稳定高分辨率输出的海报、商品主图和商业视觉16:9RMB 0.05
gpt-image2-4K-Direct4K 图片生成与参考图编辑,支持更多已验证比例16:9RMB 0.05
nano-banana-2Banana 2,适合高质量图片生成和参考图编辑1:1RMB 0.10
nano-banana-proBanana Pro,适合更高质量的商业视觉和参考图编辑1:1RMB 0.20

3. 服务端接入建议

真实 API Key 只应放在服务端。前端页面、移动端包和公开仓库不要写入真实密钥。

IMAGE_API_BASE_URL=https://www.chaomoapi.com/v1
IMAGE_API_KEY=sk-xxxx
IMAGE_DEFAULT_MODEL="gpt-image2-1K"
  • 在自己的后端封装图片生成接口,再由前端调用自己的业务接口。
  • 根据业务用户设置额度、频率、并发上限、日志审计和异常提示。普通密钥的可用并发以控制台配置为准,未额外提升时请按较小并发设计。
  • 服务端建议保存 task_id,按 1 到 3 秒间隔轮询任务结果;不要因为长任务未立即完成而重复提交同一个生成请求。
  • 图片链接通常有时效性,生成后请及时转存到自己的对象存储或文件系统。

4. 图片接口

比例参数重点说明:
  • 所有模型的 ratio 都必须传下表中该模型支持的宽高比字符串,例如 "1:1""16:9""21:9"
  • 不要把像素尺寸传给 ratio。错误示例:"ratio": "3840x1648""ratio": "3840:1648";正确写法:"ratio": "21:9"
  • 所有公开模型均推荐只传 ratio,不要同时传 ratiosize。像素尺寸由平台根据模型和比例自动映射。
  • 无限画布、工作流或第三方 SDK 如果只提供画布宽高,应先映射到下表最接近的受支持比例。例如画布 3840x1648 应映射为 21:9,请求中传 "ratio": "21:9"
  • 模型只输出固定比例对应的目标尺寸。如果业务必须得到任意精确像素,请在图片生成成功后自行缩放、裁剪或填充,不能把任意画布像素直接作为生成比例。

1K 支持比例与目标尺寸

比例参数gpt-image2-1K
1:11024x1024
5:41280x1024
9:16864x1536
21:91344x576
16:91536x864
3:21536x1024
4:31344x1008
4:51024x1280
3:41008x1344
2:31024x1536
// 正确:传受支持的宽高比
{
  "model": "gpt-image2-1K",
  "ratio": "21:9"
}

// 错误:不要把画布像素写入 ratio
{
  "model": "gpt-image2-1K",
  "ratio": "3840x1648"
}

2K / 4K 模型、比例与目标尺寸

模型已验证比例目标尺寸映射
gpt-image2-2K-Direct1:116:92048x20482048x1152
gpt-image2-4K-Stable1:15:49:1621:916:94:32:32880x28803200x25602160x38403808x16323840x21603264x24482336x3504
gpt-image2-4K-Direct1:15:49:1621:916:94:32:33:24:53:4前 7 个比例与 gpt-image2-4K-Stable 相同;另支持 3504x23362560x32002448x3264
调用原则:模型名固定使用表格中的模型 ID。所有模型都应传 ratio,不要把像素尺寸传入 ratio;平台会按上表转换为目标尺寸。

每个模型的完整文生图调用示例

文生图使用 JSON 请求体。按业务选择模型和宽高比,ratio 必须在下方已验证比例表内。

gpt-image2-1K

POST https://www.chaomoapi.com/v1/images/generations
curl https://www.chaomoapi.com/v1/images/generations \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image2-1K",
    "prompt": "一张高端不锈钢智能保温杯的电商主图,棚拍灯光,干净背景",
    "ratio": "16:9",
    "n": 1,
    "response_format": "url",
    "async": true
  }'
稳定接入推荐:请使用 ratio 控制比例,不要把像素尺寸写入 ratio,也不要同时传 size;建议使用 async=truen=1response_format=url,最终图片从任务查询结果的 data[0].url 获取。

gpt-image2-4K-Stable

curl https://www.chaomoapi.com/v1/images/generations \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image2-4K-Stable",
    "prompt": "高端腕表品牌广告主视觉,黑色金属质感背景,产品居中,棚拍光影,细节清晰",
    "ratio": "16:9",
    "n": 1,
    "response_format": "url",
    "async": true
  }'

gpt-image2-2K-Direct(2K Direct)

curl https://www.chaomoapi.com/v1/images/generations \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image2-2K-Direct",
    "prompt": "简洁的高端台灯电商主图,柔和工作室灯光,深灰色背景,产品细节清晰",
    "ratio": "16:9",
    "n": 1,
    "response_format": "url",
    "async": true
  }'

gpt-image2-4K-Direct(4K Direct)

curl https://www.chaomoapi.com/v1/images/generations \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image2-4K-Direct",
    "prompt": "高端家居空间杂志内页,现代客厅,自然天光,材质细节清晰,商业摄影风格",
    "ratio": "3:2",
    "n": 1,
    "response_format": "url",
    "async": true
  }'

nano-banana-2

curl https://www.chaomoapi.com/v1/images/generations \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "prompt": "一只橘猫坐在窗边,午后阳光,真实摄影风格,毛发细节清晰",
    "ratio": "1:1",
    "n": 1,
    "response_format": "url",
    "async": true
  }'

nano-banana-pro

curl https://www.chaomoapi.com/v1/images/generations \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "prompt": "高级护肤品广告海报,白色背景,玻璃质感,柔和自然光,画面干净",
    "ratio": "4:5",
    "n": 1,
    "response_format": "url",
    "async": true
  }'

每个模型完整图生图调用示例

上传参考图后使用 /v1/images/edits,请求格式为 multipart/form-data。全部公开模型,包括 gpt-image2-1Kgpt-image2-2K-Directgpt-image2-4K-Stablegpt-image2-4K-Directnano-banana-2nano-banana-pro,均支持 1 到 9 张参考图。多张参考图请按顺序重复传 image[],第一张作为主参考图,后续图片按上传顺序依次作为参考。

POST https://www.chaomoapi.com/v1/images/edits

gpt-image2-1K(9 张参考图示例)

curl https://www.chaomoapi.com/v1/images/edits \
  -H "Authorization: Bearer sk-xxxx" \
  -F "model=gpt-image2-1K" \
  -F "prompt=参考上传图片,生成更明亮、更干净的商业摄影风格图片" \
  -F "ratio=16:9" \
  -F "n=1" \
  -F "async=true" \
  -F "response_format=url" \
  -F "image[]=@source-1.png" \
  -F "image[]=@source-2.png" \
  -F "image[]=@source-3.png" \
  -F "image[]=@source-4.png" \
  -F "image[]=@source-5.png" \
  -F "image[]=@source-6.png" \
  -F "image[]=@source-7.png" \
  -F "image[]=@source-8.png" \
  -F "image[]=@source-9.png"

gpt-image2-4K-Stable

curl https://www.chaomoapi.com/v1/images/edits \
  -H "Authorization: Bearer sk-xxxx" \
  -F "model=gpt-image2-4K-Stable" \
  -F "prompt=保留参考图中的产品主体和材质细节,将场景调整为高端品牌展台,真实商业摄影风格" \
  -F "ratio=16:9" \
  -F "n=1" \
  -F "async=true" \
  -F "response_format=url" \
  -F "image[]=@reference-1.jpg" \
  -F "image[]=@reference-2.jpg"

gpt-image2-4K-Direct

curl https://www.chaomoapi.com/v1/images/edits \
  -H "Authorization: Bearer sk-xxxx" \
  -F "model=gpt-image2-4K-Direct" \
  -F "prompt=保留参考图中的主体与服装,将背景调整为现代简约展厅,真实商业摄影风格" \
  -F "ratio=3:2" \
  -F "n=1" \
  -F "async=true" \
  -F "response_format=url" \
  -F "image[]=@reference-1.jpg" \
  -F "image[]=@reference-2.jpg"

gpt-image2-2K-Direct

curl https://www.chaomoapi.com/v1/images/edits \
  -H "Authorization: Bearer sk-xxxx" \
  -F "model=gpt-image2-2K-Direct" \
  -F "prompt=保留参考图的产品外观,将背景替换为简洁的白色摄影棚,清晰商业摄影风格" \
  -F "ratio=16:9" \
  -F "n=1" \
  -F "async=true" \
  -F "response_format=url" \
  -F "image[]=@reference-1.jpg" \
  -F "image[]=@reference-2.jpg"

nano-banana-2

curl https://www.chaomoapi.com/v1/images/edits \
  -H "Authorization: Bearer sk-xxxx" \
  -F "model=nano-banana-2" \
  -F "prompt=严格参考第一张图片中的主体外观,参考第二张图片的场景氛围,生成真实摄影风格图片" \
  -F "ratio=1:1" \
  -F "n=1" \
  -F "async=true" \
  -F "response_format=url" \
  -F "image[]=@reference-1.jpg" \
  -F "image[]=@reference-2.jpg"

nano-banana-pro

curl https://www.chaomoapi.com/v1/images/edits \
  -H "Authorization: Bearer sk-xxxx" \
  -F "model=nano-banana-pro" \
  -F "prompt=保留第一张参考图的主体,参考第二张图的构图和色调,生成高质量商业海报" \
  -F "ratio=4:5" \
  -F "n=1" \
  -F "async=true" \
  -F "response_format=url" \
  -F "image[]=@reference-1.jpg" \
  -F "image[]=@reference-2.jpg"

异步任务查询与终态处理

图片生成可能是长耗时任务。请求体或表单中传入 async=true 后,接口会立即返回任务 ID;客户端应保存 task_id,再轮询 GET /v1/images/{task_id} 获取最终图片。

  1. 提交生成或编辑请求,并保存响应中的 task_id
  2. 每隔 1 到 3 秒请求一次 GET /v1/images/{task_id}
  3. status=runningpending 时继续轮询,不要重复提交同一个生成请求。
  4. status=completed 时读取 data[].url 并及时下载;status=failed 时停止轮询,记录响应中的 error 后再决定是否重试。
{
  "id": "task-19f...",
  "task_id": "task-19f...",
  "object": "image.task",
  "status": "running",
  "generation_status": "running",
  "asset_status": "pending",
  "data": []
}
curl https://www.chaomoapi.com/v1/images/task-19f... \
  -H "Authorization: Bearer sk-xxxx"
{
  "id": "task-19f...",
  "task_id": "task-19f...",
  "object": "image.task",
  "status": "completed",
  "data": [
    { "url": "https://..." }
  ]
}
{
  "id": "task-19f...",
  "task_id": "task-19f...",
  "object": "image.task",
  "status": "failed",
  "data": [],
  "error": { "message": "具体失败原因" }
}

常用参数

参数必填说明
model模型 ID;必须使用 /v1/models 返回的 id,不填写后台分组名称
prompt图片描述,建议写清主体、风格、场景、构图、颜色和用途
ratio建议输出宽高比。必须使用该模型已验证的比例字符串,例如 1:116:921:9;不能传 3840x1648 等像素尺寸。未填写时按模型默认比例输出
size兼容参数。生产接入推荐只传 ratio;不要同时传 ratiosize
n单次请求生成张数,支持 14。服务端会按 n 提交等量独立生成并合并结果,返回图片数量与计费数量一致;首次接入和图生图场景建议使用 1
image[]图生图必填参考图文件;所有公开图片模型均支持 1 到 9 张。仅用于 /v1/images/editsmultipart/form-data 请求;多张图片按字段出现顺序生效,第一张为主参考图
response_format生产接口固定使用 url。异步任务的最终图片从 data[].url 获取;请不要将 b64_json 作为生产接入依赖。
quality图片质量参数;除 gpt-image2-4K-Direct 外,可按模型能力传 autolowmediumhighgpt-image2-4K-Direct 为保证上游稳定固定以 high 执行,传入其他值不会改变实际质量。
async建议设置为 true 时立即返回任务 ID,再通过 GET /v1/images/{task_id} 查询结果;生产环境、图生图和批量场景建议始终开启

已验证比例

模型已验证可选比例
gpt-image2-1K1:15:49:1621:916:93:24:34:53:42:3
gpt-image2-2K-Direct1:116:9
gpt-image2-4K-Stable1:15:49:1621:916:94:32:3
gpt-image2-4K-Direct1:15:49:1621:916:94:32:33:24:53:4
nano-banana-21:11:41:82:33:23:44:14:34:55:48:19:1616:921:9
nano-banana-pro1:15:49:1621:916:93:24:34:53:42:3
注意:上表比例已按生产可用模型校对;图生图使用同一个 ratio 参数。ratio 只能传比例,不能传像素尺寸。图片链接通常有时效性,建议生成后及时下载并保存到自己的存储中。高质量模型通常比标准 1K 输出耗时更长。Banana Pro 使用多张参考图时可能超过 8 分钟,请优先使用 async=true 并持续轮询任务状态;同步调用时客户端超时不得低于 600s,不要因为任务仍在运行而重复提交。

5. 并发与批量调用

图片生成是长耗时任务,客户端应把并发控制在自己的服务端队列中。并发数表示同时进行中的请求数;每个请求的 n 表示本次返回几张图。为了获得接近本站在线生图的稳定性,默认使用小并发、异步任务和轮询查询。

推荐策略

  • 默认稳态配置:async=truen=1、并发 1,提交后轮询任务结果。
  • 首次接入先用 n=1、并发 13 验证模型、宽高比、提示词、耗时和扣费。
  • 稳定后再逐步提升到并发 48;图生图和 Banana Pro 建议优先保持 n=1
  • n=4、并发 20 或更高只适合已授权的服务端批量任务,并且需要余额保护、失败重试和自动降速。
  • 稳定运行时以实际成功率、平均耗时和余额为准;如果出现 429,立即降低到上一档并等待后重试。

吞吐估算

指标计算方式
单分钟出图量并发数 × n × 60 ÷ 平均耗时秒数
单日出图量单分钟出图量 × 1440
预计费用图片张数 × 当前模型单张价格

服务端队列示例

下面示例使用 p-limit 控制并发,先安装依赖:npm install p-limit

import pLimit from "p-limit";

const limit = pLimit(3); // 从 1 到 3 并发开始,稳定后再逐步提高到 4 或 8

async function generateOne(prompt) {
  const res = await fetch("https://www.chaomoapi.com/v1/images/generations", {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${process.env.IMAGE_API_KEY}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "gpt-image2-1K",
      prompt,
      ratio: "1:1",
      n: 1,
      async: true
    })
  });

  if (res.status === 429) {
    throw new Error("rate_limited: lower concurrency and retry later");
  }
  if (!res.ok) {
    throw new Error(await res.text());
  }
  return res.json();
}

const tasks = prompts.map((prompt) => limit(() => generateOne(prompt)));
const results = await Promise.allSettled(tasks);
并发注意:不要无限制地 Promise.all 大量请求。普通接入建议长期控制在并发 18;更高并发请先确认账号已授权,并在服务端实现队列、余额保护、重试和自动降速。遇到 429 时建议把并发降低 30% 到 50%,等待 30 到 60 秒后再继续;401403404 属于配置问题,不应盲目重试。

6. Node.js 18+ 异步调用示例

以下示例不依赖第三方包。设置环境变量 IMAGE_API_KEY 后,可直接保存为 generate-image.js 并运行。

const BASE_URL = "https://www.chaomoapi.com/v1";
const API_KEY = process.env.IMAGE_API_KEY;

if (!API_KEY) throw new Error("Missing IMAGE_API_KEY");

const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

async function request(path, options = {}) {
  const response = await fetch(`${BASE_URL}${path}`, {
    ...options,
    headers: {
      Authorization: `Bearer ${API_KEY}`,
      ...options.headers
    }
  });
  const body = await response.json().catch(() => ({}));
  if (!response.ok) throw new Error(JSON.stringify(body));
  return body;
}

async function main() {
  const accepted = await request("/images/generations", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      model: "gpt-image2-1K",
      prompt: "一张科技产品发布会主视觉,黑色背景,蓝绿色边缘光",
      ratio: "16:9",
      response_format: "url",
      n: 1,
      async: true
    })
  });

  const taskId = accepted.task_id;
  console.log("task accepted:", taskId);

  while (true) {
    await sleep(2000);
    const task = await request(`/images/${taskId}`);
    if (task.status === "completed") {
      console.log("image urls:", task.data.map((item) => item.url));
      return;
    }
    if (task.status === "failed") {
      throw new Error(JSON.stringify(task.error || task));
    }
    console.log("task status:", task.status);
  }
}

main().catch((error) => {
  console.error(error.message);
  process.exitCode = 1;
});

7. 计费与额度

  • gpt-image2-1KRMB 0.03 / 张 计费。
  • gpt-image2-2K-Direct(2K Direct)按 RMB 0.05 / 张 计费。
  • gpt-image2-4K-StableRMB 0.05 / 张 计费。
  • gpt-image2-4K-Direct(4K Direct)按 RMB 0.05 / 张 计费。
  • nano-banana-2RMB 0.10 / 张 计费。
  • nano-banana-proRMB 0.20 / 张 计费。
  • 最终扣费以平台实际账单、模型倍率、分组规则和请求记录为准。

8. 常见错误排查

现象常见原因处理方式
400 unsupported_ratio把像素尺寸传进了 ratio,或所选模型不支持该比例从当前模型支持比例表中选择比例;例如将 3840x1648 映射为 ratio=21:9 后重新提交
400 missing_image调用 /v1/images/edits 时未上传参考图使用 multipart/form-data,至少传一个 image[] 文件字段
400 too_many_reference_images一次图生图上传的参考图超过 9 张单个请求最多保留 9 张,按重要程度排序后重新提交
401 UnauthorizedAPI Key 错误、缺少 Bearer、密钥被禁用重新复制密钥,确认请求头格式
403 Forbidden密钥没有模型权限或分组未开放检查密钥分组和模型映射
404 model not found模型 ID 写错或未分配到当前密钥先调用 /v1/models 获取可用模型
400 insufficient_balanceinsufficient_quota账户余额或该 API Key 的可用额度不足充值或调整密钥额度后再提交;进行批量任务前应预留足够余额
429频率、并发或额度限制降低并发,等待 30 到 60 秒后重试,并检查余额和限流配置
5xx 或超时上游通道异常、网络波动或模型拥塞稍后重试,必要时联系管理员
status=running 持续较久图片任务仍在处理,或高质量、多参考图任务耗时较长继续按 1 到 3 秒轮询同一个 task_id;不要重新提交同一请求
status=failed任务已终止读取响应中的 error;修正参数、提示词或参考图后再新建请求
参考图效果不符合预期参考图顺序或提示词描述不明确第一张传主体主参考图;在提示词中明确“参考图 1 保留主体,参考图 2 调整背景”等要求
图片返回为空宽高比不支持、提示词违规、上游生成失败更换已验证宽高比,简化提示词,查看接口错误信息

9. 安全要求

  • API Key 只能放在服务端、环境变量或安全密钥管理系统中。
  • 不要把真实密钥写入前端代码、移动端包、浏览器扩展或公开仓库。
  • 如果密钥已经泄露,应立即在控制台停用并重新创建。
  • 对外提供服务时,应在自己的后端增加用户鉴权、额度限制、日志审计和异常告警。

10. 联系方式

如遇到账户、额度、模型权限或接口异常问题,请联系管理员。

联系方式:微信 zntcode