
GPT Image 2 API 接入完整教程:Python / Node.js / Curl 全流程
GPT Image 2 API 接入开发者教程。涵盖鉴权、所有参数详解、Python 和 Node.js 代码示例、图片编辑、批量生成、错误处理和成本优化——一篇文章学完上线。
如果你想把 GPT Image 2 集成到自己的产品、自动化流水线或批量生成工作流,API 是唯一的路径。这篇文章覆盖了你需要的全部内容——鉴权、参数详解、Python 和 Node.js 代码示例、图片编辑、错误处理、成本优化。
读完这篇你能直接拿去对接生产环境的真实流量。
准备工作
开始前你需要:
- 一个 OpenAI 开发者账号(platform.openai.com)
- 已充值的账单账号(图像生成是付费的,新账号可能有试用额度)
- API Key——在 platform.openai.com/api-keys 生成
- Python 3.8+ 或 Node.js 18+
国内开发者:稳定 API 接入路径
如果你在国内开发、对 OpenAI 直连不稳定有顾虑,或者希望由一个稳定中转服务统一处理失败重试、汇总计费、SLA 保证,可以发邮件到 support@gpt-image2.art 申请获取一个可商用的 GPT Image 2 中转 API Key。中转服务保留了同样的 gpt-image-2 模型名、同样的参数规范、同样的响应格式——你的代码不需要任何修改,只换 base URL 即可。
第一步:安装 SDK
Python
pip install openai pillowpillow 是可选的,只有在需要对返回的图片做后处理时才装。
Node.js
npm install openai
# 或
pnpm add openai第二步:配置 API Key
永远不要硬编码 API Key。用环境变量。
新建 .env 文件:
OPENAI_API_KEY=sk-proj-your-key-here代码里加载(Python 用 python-dotenv,Node.js 原生支持或用 dotenv)。
第三步:生成第一张图
Python — 最简可运行示例
import os
from openai import OpenAI
import base64
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
result = client.images.generate(
model="gpt-image-2",
prompt="一支白色不锈钢保温杯立在浅米色亚麻桌布上,高级产品摄影,1:1 方图。",
size="1024x1024",
quality="medium",
n=1,
)
# 图片以 base64 返回
image_b64 = result.data[0].b64_json
with open("output.png", "wb") as f:
f.write(base64.b64decode(image_b64))
print("已保存到 output.png")Node.js — 最简可运行示例
import OpenAI from 'openai';
import fs from 'fs';
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const result = await client.images.generate({
model: 'gpt-image-2',
prompt:
'一支白色不锈钢保温杯立在浅米色亚麻桌布上,高级产品摄影,1:1 方图。',
size: '1024x1024',
quality: 'medium',
n: 1,
});
const imageB64 = result.data[0].b64_json;
fs.writeFileSync('output.png', Buffer.from(imageB64, 'base64'));
console.log('已保存到 output.png');Curl — 用于 shell 脚本和快速测试
curl https://api.openai.com/v1/images/generations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "一支白色不锈钢保温杯立在浅米色亚麻桌布上。",
"size": "1024x1024",
"quality": "medium",
"n": 1
}'所有参数详解
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 必须是 gpt-image-2 |
prompt | string | 是 | 图像描述,最长 32,000 字符 |
size | string | 否 | 纵横比(1:1、16:9、9:16)或显式像素(1024x1024、1536x1024、1024x1536) |
resolution | string | 否 | 1K(约 1MP)/ 2K(约 4MP)/ 4K(约 8MP)——部分中转支持显式分辨率档位 |
quality | string | 否 | low / medium / high,影响输出 token 数和价格 |
n | integer | 否 | 一次生成几张,1-10 |
image_urls | array | 否 | 1-16 张参考图(图像编辑 / 图生图用,每张 ≤50MB,支持 JPEG / PNG / WEBP) |
output_format | string | 否 | png(默认)、jpeg、webp |
output_compression | integer | 否 | 0-100,仅 jpeg/webp 有效 |
background | string | 否 | transparent 生成带 alpha 通道的 PNG |
moderation | string | 否 | auto(默认)或 low,影响内容过滤严格度 |
callback_url | string | 否 | HTTPS 回调地址,任务完成后回调(异步中转支持) |
user | string | 否 | 稳定的用户 ID,用于 OpenAI 滥用监控 |
图片编辑——杀手锏
GPT Image 2 的指令编辑能力是它相比 diffusion 模型最大的 API 优势。你上传一张已有图片 + 一段描述要改什么的 prompt。
Python
result = client.images.edit(
model="gpt-image-2",
image=open("original.png", "rb"),
prompt="把杯子的颜色从白色改成藏青色,其他全部保持不变。",
size="1024x1024",
quality="medium",
)
with open("edited.png", "wb") as f:
f.write(base64.b64decode(result.data[0].b64_json))Node.js
import { toFile } from 'openai';
const result = await client.images.edit({
model: 'gpt-image-2',
image: await toFile(fs.createReadStream('original.png'), 'original.png'),
prompt: '把杯子的颜色从白色改成藏青色,其他全部保持不变。',
size: '1024x1024',
quality: 'medium',
});prompt 里**「其他全部保持不变」**这句话非常关键——不写的话模型可能会重画无关区域。
批量生成:避免触发限流的并发控制
不要傻乎乎地 Promise.all() 100 个请求——会被限流。用受限并发。
Python — 用 asyncio + semaphore
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(api_key=os.environ["OPENAI_API_KEY"])
async def generate_one(prompt: str, semaphore: asyncio.Semaphore):
async with semaphore:
result = await client.images.generate(
model="gpt-image-2",
prompt=prompt,
size="1024x1024",
quality="medium",
)
return result.data[0].b64_json
async def batch_generate(prompts: list[str], concurrency: int = 5):
semaphore = asyncio.Semaphore(concurrency)
tasks = [generate_one(p, semaphore) for p in prompts]
return await asyncio.gather(*tasks)
results = asyncio.run(batch_generate(["prompt 1", "prompt 2", ...]))Node.js — 用 p-limit
import pLimit from 'p-limit';
const limit = pLimit(5); // 同时最多 5 个请求
const tasks = prompts.map((prompt) =>
limit(async () => {
const result = await client.images.generate({
model: 'gpt-image-2',
prompt,
size: '1024x1024',
quality: 'medium',
});
return result.data[0].b64_json;
})
);
const results = await Promise.all(tasks);生产环境的错误处理
API 失败有几种不同情形,每种都要分别处理:
from openai import OpenAI, APIError, RateLimitError, APIConnectionError, BadRequestError
import time
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
def safe_generate(prompt: str, max_retries: int = 3):
for attempt in range(max_retries):
try:
result = client.images.generate(
model="gpt-image-2",
prompt=prompt,
size="1024x1024",
quality="medium",
)
return result.data[0].b64_json
except RateLimitError:
# 429——退避后重试
wait = (2 ** attempt) * 5
print(f"被限流;等待 {wait} 秒")
time.sleep(wait)
except BadRequestError as e:
# 400——通常是内容策略违规,不要重试
print(f"请求错误:{e}")
return None
except APIConnectionError:
# 网络抖动——重试
time.sleep(2 ** attempt)
except APIError as e:
# 5xx 服务端错误——退避重试
time.sleep(2 ** attempt)
return None成本优化:具体可执行的几招
1. 选对 quality 档
| 档位 | 单张成本(1024×1024) | 适用场景 |
|---|---|---|
low | ~$0.011 / ¥0.08 | 草稿、A/B 测、prompt 迭代 |
medium | ~$0.042 / ¥0.30 | 大多数生产用途 |
high | ~$0.167 / ¥1.20 | 最终主图、印刷级素材 |
很多团队默认用 high,结果多付了 4 倍价钱。95% 的活儿用 medium 就够了。
2. 用 images.edit 迭代,不要重新 generate
指令编辑和生成同价,但一次就出对,省下 4 次重抽。多轮细节调整下,这是 5 倍成本节省。
3. 重复 prompt 做缓存
如果你的产品场景里同一个 prompt 会反复触发(比如用户预览同样的产品图),用 hash(prompt + size + quality) 做 key 缓存到 CDN。
4. 用 low 探索 + high 定稿
常用的工作流:
# 第一步:5 个 prompt 变体跑 low 档(总共 ¥0.40)
candidates = [generate(p, quality="low") for p in variants]
# 第二步:选最好的,high 档重出
best_prompt = pick_winner(candidates)
final = generate(best_prompt, quality="high") # ¥1.20总成本约 ¥1.60,而不是 5 个变体全跑 high 的 ¥6。
5. 在 OpenAI 后台设置硬性消费上限
不要相信代码不出 bug——在 platform.openai.com/account/billing/limits 设置消费上限。
进度反馈(可选)
长批量任务可能想给前端显示进度。图像生成接口本身不是流式的,但你可以包装异步进度上报:
let completed = 0;
const tasks = prompts.map((prompt) =>
limit(async () => {
const result = await client.images.generate({ /* ... */ });
completed++;
onProgress({ completed, total: prompts.length });
return result.data[0].b64_json;
})
);接入常见错误
| 错误 | 后果 | 修复 |
|---|---|---|
| 硬编码 API Key | 被 Git 泄露 | 永远用环境变量 |
取 result.data[0].url | 字段不一定存在(取决于 response_format) | 用 b64_json 本地解码 |
| 编辑接口上传巨大原图 | 慢 + 贵 | 上传前缩到 1024×1024 |
| 忽略 400 错误 | 在不可恢复的失败上耗光重试次数 | 区分 4xx(不重试)和 5xx(重试) |
| 不做并发控制 | 触发 429 雪崩 | 用 semaphore 受限并发 |
| 日志直接打印完整 prompt | 用户输入泄露隐私 | 写日志前 hash 或脱敏 |
上线前 checklist
| 项 | 完成 |
|---|---|
| API Key 在环境变量里,代码和日志都没有 | □ |
| quality 档位匹配场景(默认 medium) | □ |
| 批量任务有受限并发(p-limit / Semaphore) | □ |
| 错误处理区分 4xx vs 5xx | □ |
| OpenAI 后台设置硬性消费上限 | □ |
| 用户输入做了内容策略合规检查 | □ |
| 输出存在自己的存储(不依赖 OpenAI 临时 URL) | □ |
| 重复 prompt 有缓存层 | □ |
| 监控了单图成本和错误率 | □ |
异步任务模式(高并发场景)
高并发批量生成时,部分 GPT Image 2 中转服务支持异步任务模式:你提交请求立刻拿到 task ID,然后轮询任务结果或接收回调。这样可以避免大批量请求时 HTTP 超时。
典型异步流程:
# 1. 提交请求 → 拿到 task_id
response = client.images.generate(
model="gpt-image-2",
prompt="...",
size="1024x1024",
quality="high",
callback_url="https://your-app.com/api/image-callback", # 可选
)
task_id = response.id
# 2. 每隔几秒轮询任务状态
while True:
status = client.images.retrieve(task_id)
if status.status == "completed":
image_url = status.data[0].url
break
elif status.status == "failed":
raise Exception(status.error)
time.sleep(3)异步模式适用于:
- 电商隔夜批量生成几百张产品变体
- 营销团队跑 A/B prompt 测试
- 用户提交请求后稍后通知的场景
GPT Image 2 API 常见问题(FAQ)
问:GPT Image 2 API 的模型名是什么?
gpt-image-2。所有请求都用这个字符串。
问:GPT Image 2 API 支持图生图 / 图像编辑吗?
支持。用 images.edit + image 参数,或者向支持 image_urls(1-16 张参考图)的中转服务传参。参考图对角色一致性、IP 设计、产品图保持高度一致非常关键。
问:GPT Image 2 API 免费吗? 不免费,按 token 计费。新 OpenAI 账号可能有试用额度,部分第三方中转提供免费试用。
问:GPT Image 2 API 单张图多少钱? 按 1024×1024 算,low / medium / high 大约 $0.011 / $0.042 / $0.167(约 ¥0.08 / ¥0.30 / ¥1.20)。更大尺寸和带参考图的请求成本更高。
问:prompt 最长多少字符? 最多 32,000 字符。但实际超过 1500 字符后边际收益迅速递减。
问:怎么用 API 生成透明背景 PNG?
设置 background: "transparent" + output_format: "png"。
问:GPT Image 2 支持哪些分辨率?
常用预设:1024x1024、1536x1024、1024x1536。部分中转服务额外支持 1K / 2K / 4K 档位以做显式分辨率控制。
问:API 限流怎么办?
取决于你的 OpenAI 账户档位。免费档限流最严,使用量越大档位越高。用受限并发(p-limit / Semaphore)保持在限流之内。
问:GPT Image 2 API 报错怎么处理? 区分 4xx(不要重试,通常是内容策略违规)和 5xx(可重试,用退避算法)。具体见上面的错误处理章节。
问:能取消正在执行的 GPT Image 2 API 请求吗?
同步请求只能关闭连接。支持异步的中转服务通常有 cancel 接口,但只能在任务还在排队时取消。
问:API 支持流式返回吗? 图像生成本身不是流式(结束时返回完整图)。前端进度条可以包装一层自定义进度上报(见上面"进度反馈"章节)。
想看完整可运行的参考实现?
完整 Next.js + GPT Image 2 + Stripe + 图像存储的参考工程:gpt-image2.art,真实出图案例(带完整 prompt):gpt-image2.art/zh/explore。
想要带 SLA 的可商用 API Key?
如果你不想自己折腾 OpenAI 账号、绑卡、解决国内访问稳定性、限流配额——可以发邮件到 support@gpt-image2.art 购买中转 GPT Image 2 API。我们提供:
- 一个稳定的 API endpoint,内置 failover
- 人民币计费,不需要 USD 跨境汇款
- 异步任务模式 + callback 回调原生支持
- 月用量 > 10K 张的团队享受批量价
- 同
gpt-image-2模型名、同参数规范——你的代码不需要改,只换 base URL
延伸阅读
images.edit 迭代,不要重新 generate3. 重复 prompt 做缓存4. 用 low 探索 + high 定稿5. 在 OpenAI 后台设置硬性消费上限进度反馈(可选)接入常见错误上线前 checklist异步任务模式(高并发场景)GPT Image 2 API 常见问题(FAQ)想看完整可运行的参考实现?想要带 SLA 的可商用 API Key?延伸阅读更多文章

用 GPT Image 2 一句话生成知识图谱:公考、小红书、讲义、PPT、SOP 五大场景提示词模板
一套可复制的 5 段式提示词框架,把任何主题一键变成知识图谱信息图。覆盖公考备考讲义、小红书知识卡片、教学课件、商务幻灯、企业 SOP 五大高频场景,附完整模板与避坑清单。

什么是 GPT Image 2?一篇看懂的完整介绍
GPT Image 2 是 OpenAI 的下一代图像模型——原生多模态、构建于 GPT 架构、是首个在中文文字和复杂版面上达到生产级质量的生成模型。这是一份完整的入门介绍。

GPT Image 2 真把 Nano Banana 打下去了?我看完一圈热评后的判断
我把近期关于 GPT Image 2 对比 Nano Banana 2 的热评、实测和官方信息都看了一遍。结论不是一句“吊打”那么简单,但有几个趋势已经非常明显。