1. 接入信息
| 项目 | 配置 |
|---|---|
| 站点地址 | https://www.chaomoapi.com |
| API Base URL | https://www.chaomoapi.com/v1 |
| 健康检查 | https://www.chaomoapi.com/health |
| 鉴权方式 | Authorization: Bearer sk-xxxx |
| 接口格式 | OpenAI Images API 兼容格式 |
基础调用流程
- 登录控制台并创建 API 密钥。
- 确认密钥有可用额度。
- 将 SDK 或 HTTP 客户端的
base_url配置为https://www.chaomoapi.com/v1。 - 使用
/v1/models验证密钥能访问的模型列表。 - 首次接入请使用
async=true、n=1和并发1到3验证稳定性。 - 批量生成时在服务端控制并发,不要在浏览器或客户端直接暴露 API Key,也不要无限制地同时提交大量请求。
- 图生图和高质量模型可能超过 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,无需了解或填写后台分组名称。
/v1/models 返回的 data[].id 为准。后台分组名称不是接口参数,也不需要在代码中配置。| 模型 ID | 说明 | 默认比例 | 单张价格 |
|---|---|---|---|
gpt-image2-1K | 标准图片生成与参考图编辑,适合常规配图、头像、商品图和竖版素材 | 1:1 | RMB 0.03 |
gpt-image2-2K-Direct | 2K 图片生成与参考图编辑,适合商品主图、设计素材和清晰编辑 | 16:9 | RMB 0.05 |
gpt-image2-4K-Stable | 4K Stable,适合需要稳定高分辨率输出的海报、商品主图和商业视觉 | 16:9 | RMB 0.05 |
gpt-image2-4K-Direct | 4K 图片生成与参考图编辑,支持更多已验证比例 | 16:9 | RMB 0.05 |
nano-banana-2 | Banana 2,适合高质量图片生成和参考图编辑 | 1:1 | RMB 0.10 |
nano-banana-pro | Banana Pro,适合更高质量的商业视觉和参考图编辑 | 1:1 | RMB 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,不要同时传ratio和size。像素尺寸由平台根据模型和比例自动映射。 - 无限画布、工作流或第三方 SDK 如果只提供画布宽高,应先映射到下表最接近的受支持比例。例如画布
3840x1648应映射为21:9,请求中传"ratio": "21:9"。 - 模型只输出固定比例对应的目标尺寸。如果业务必须得到任意精确像素,请在图片生成成功后自行缩放、裁剪或填充,不能把任意画布像素直接作为生成比例。
1K 支持比例与目标尺寸
| 比例参数 | gpt-image2-1K |
|---|---|
1:1 | 1024x1024 |
5:4 | 1280x1024 |
9:16 | 864x1536 |
21:9 | 1344x576 |
16:9 | 1536x864 |
3:2 | 1536x1024 |
4:3 | 1344x1008 |
4:5 | 1024x1280 |
3:4 | 1008x1344 |
2:3 | 1024x1536 |
// 正确:传受支持的宽高比
{
"model": "gpt-image2-1K",
"ratio": "21:9"
}
// 错误:不要把画布像素写入 ratio
{
"model": "gpt-image2-1K",
"ratio": "3840x1648"
}
2K / 4K 模型、比例与目标尺寸
| 模型 | 已验证比例 | 目标尺寸映射 |
|---|---|---|
gpt-image2-2K-Direct | 1:1、16:9 | 2048x2048、2048x1152 |
gpt-image2-4K-Stable | 1:1、5:4、9:16、21:9、16:9、4:3、2:3 | 2880x2880、3200x2560、2160x3840、3808x1632、3840x2160、3264x2448、2336x3504 |
gpt-image2-4K-Direct | 1:1、5:4、9:16、21:9、16:9、4:3、2:3、3:2、4:5、3:4 | 前 7 个比例与 gpt-image2-4K-Stable 相同;另支持 3504x2336、2560x3200、2448x3264 |
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=true、n=1 和 response_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-1K、gpt-image2-2K-Direct、gpt-image2-4K-Stable、gpt-image2-4K-Direct、nano-banana-2 和 nano-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} 获取最终图片。
- 提交生成或编辑请求,并保存响应中的
task_id。 - 每隔 1 到 3 秒请求一次
GET /v1/images/{task_id}。 status=running或pending时继续轮询,不要重复提交同一个生成请求。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:1、16:9、21:9;不能传 3840x1648 等像素尺寸。未填写时按模型默认比例输出 |
size | 否 | 兼容参数。生产接入推荐只传 ratio;不要同时传 ratio 和 size |
n | 否 | 单次请求生成张数,支持 1 到 4。服务端会按 n 提交等量独立生成并合并结果,返回图片数量与计费数量一致;首次接入和图生图场景建议使用 1 |
image[] | 图生图必填 | 参考图文件;所有公开图片模型均支持 1 到 9 张。仅用于 /v1/images/edits 的 multipart/form-data 请求;多张图片按字段出现顺序生效,第一张为主参考图 |
response_format | 否 | 生产接口固定使用 url。异步任务的最终图片从 data[].url 获取;请不要将 b64_json 作为生产接入依赖。 |
quality | 否 | 图片质量参数;除 gpt-image2-4K-Direct 外,可按模型能力传 auto、low、medium 或 high。gpt-image2-4K-Direct 为保证上游稳定固定以 high 执行,传入其他值不会改变实际质量。 |
async | 建议 | 设置为 true 时立即返回任务 ID,再通过 GET /v1/images/{task_id} 查询结果;生产环境、图生图和批量场景建议始终开启 |
已验证比例
| 模型 | 已验证可选比例 |
|---|---|
gpt-image2-1K | 1:1、5:4、9:16、21:9、16:9、3:2、4:3、4:5、3:4、2:3 |
gpt-image2-2K-Direct | 1:1、16:9 |
gpt-image2-4K-Stable | 1:1、5:4、9:16、21:9、16:9、4:3、2:3 |
gpt-image2-4K-Direct | 1:1、5:4、9:16、21:9、16:9、4:3、2:3、3:2、4:5、3:4 |
nano-banana-2 | 1:1、1:4、1:8、2:3、3:2、3:4、4:1、4:3、4:5、5:4、8:1、9:16、16:9、21:9 |
nano-banana-pro | 1:1、5:4、9:16、21:9、16:9、3:2、4:3、4:5、3:4、2:3 |
ratio 参数。ratio 只能传比例,不能传像素尺寸。图片链接通常有时效性,建议生成后及时下载并保存到自己的存储中。高质量模型通常比标准 1K 输出耗时更长。Banana Pro 使用多张参考图时可能超过 8 分钟,请优先使用 async=true 并持续轮询任务状态;同步调用时客户端超时不得低于 600s,不要因为任务仍在运行而重复提交。5. 并发与批量调用
图片生成是长耗时任务,客户端应把并发控制在自己的服务端队列中。并发数表示同时进行中的请求数;每个请求的 n 表示本次返回几张图。为了获得接近本站在线生图的稳定性,默认使用小并发、异步任务和轮询查询。
推荐策略
- 默认稳态配置:
async=true、n=1、并发1,提交后轮询任务结果。 - 首次接入先用
n=1、并发1到3验证模型、宽高比、提示词、耗时和扣费。 - 稳定后再逐步提升到并发
4或8;图生图和 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 大量请求。普通接入建议长期控制在并发 1 到 8;更高并发请先确认账号已授权,并在服务端实现队列、余额保护、重试和自动降速。遇到 429 时建议把并发降低 30% 到 50%,等待 30 到 60 秒后再继续;401、403 和 404 属于配置问题,不应盲目重试。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-1K按RMB 0.03 / 张计费。gpt-image2-2K-Direct(2K Direct)按RMB 0.05 / 张计费。gpt-image2-4K-Stable按RMB 0.05 / 张计费。gpt-image2-4K-Direct(4K Direct)按RMB 0.05 / 张计费。nano-banana-2按RMB 0.10 / 张计费。nano-banana-pro按RMB 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 Unauthorized | API Key 错误、缺少 Bearer、密钥被禁用 | 重新复制密钥,确认请求头格式 |
403 Forbidden | 密钥没有模型权限或分组未开放 | 检查密钥分组和模型映射 |
404 model not found | 模型 ID 写错或未分配到当前密钥 | 先调用 /v1/models 获取可用模型 |
400 insufficient_balance 或 insufficient_quota | 账户余额或该 API Key 的可用额度不足 | 充值或调整密钥额度后再提交;进行批量任务前应预留足够余额 |
429 | 频率、并发或额度限制 | 降低并发,等待 30 到 60 秒后重试,并检查余额和限流配置 |
5xx 或超时 | 上游通道异常、网络波动或模型拥塞 | 稍后重试,必要时联系管理员 |
status=running 持续较久 | 图片任务仍在处理,或高质量、多参考图任务耗时较长 | 继续按 1 到 3 秒轮询同一个 task_id;不要重新提交同一请求 |
status=failed | 任务已终止 | 读取响应中的 error;修正参数、提示词或参考图后再新建请求 |
| 参考图效果不符合预期 | 参考图顺序或提示词描述不明确 | 第一张传主体主参考图;在提示词中明确“参考图 1 保留主体,参考图 2 调整背景”等要求 |
| 图片返回为空 | 宽高比不支持、提示词违规、上游生成失败 | 更换已验证宽高比,简化提示词,查看接口错误信息 |
9. 安全要求
- API Key 只能放在服务端、环境变量或安全密钥管理系统中。
- 不要把真实密钥写入前端代码、移动端包、浏览器扩展或公开仓库。
- 如果密钥已经泄露,应立即在控制台停用并重新创建。
- 对外提供服务时,应在自己的后端增加用户鉴权、额度限制、日志审计和异常告警。
10. 联系方式
如遇到账户、额度、模型权限或接口异常问题,请联系管理员。
联系方式:微信 zntcode