图片生成 API
按 OpenAI 官方图片 API 与 Gemini 官方 generateContent 图片 API 分开说明,修正模型 ID、参数名、端点与返回结构。
先分清两套接口
图片生成文档最容易写错的地方,是把 OpenAI 的图片接口参数和 Gemini 的图片接口参数混在一起。 这两套官方接口并不兼容,端点、字段名、模型 ID、返回结构都不同。
- OpenAI 官方图片 API:走
/v1/images/generations与/v1/images/edits。 - Gemini 官方图片 API:走
/v1/models/{model}:generateContent。 - OpenAI 常用字段是
prompt、size、quality、background。 - Gemini 常用字段是
contents、parts、responseModalities、responseFormat.image。
OpenAI 官方图片 API
OpenAI 官方图片接口用于从文本直接生成图片。官方文档当前明确区分 generations、edits,并说明从 gpt-image-1 之后开始, Image API 具备更清晰的生成与编辑分工。
import OpenAI from "openai";
import fs from "node:fs";
const client = new OpenAI({
apiKey: process.env.GPT88_API_KEY,
baseURL: "https://img.gpt88.cc",
});
const result = await client.images.generate({
model: "gpt-image-2",
prompt: "A children's book drawing of a veterinarian using a stethoscope to listen to the heartbeat of a baby otter.",
size: "1024x1024",
quality: "high",
});
const imageBase64 = result.data[0].b64_json;
fs.writeFileSync("otter.png", Buffer.from(imageBase64, "base64"));OpenAI 图片编辑
OpenAI 官方编辑接口支持三类能力:编辑现有图片、基于参考图生成新图、以及配合 mask 做局部重绘。 这一段不要再写成 Gemini 风格的 contents.parts.fileData,因为那是另一套接口。
import base64
from openai import OpenAI
client = OpenAI(
api_key="YOUR_GPT88_API_KEY",
base_url="https://img.gpt88.cc",
)
prompt = """
Generate a photorealistic image of a gift basket on a white background
labeled 'Relax & Unwind' with a ribbon and handwriting-like font,
containing all the items in the reference pictures.
"""
result = client.images.edit(
model="gpt-image-2",
image=[
open("body-lotion.png", "rb"),
open("soap.png", "rb"),
open("bath-bomb.png", "rb"),
open("incense-kit.png", "rb"),
],
prompt=prompt,
size="1536x1024",
quality="high",
)
image_base64 = result.data[0].b64_json
with open("gift-basket.png", "wb") as f:
f.write(base64.b64decode(image_base64))Gemini 官方图片 API
Gemini 官方图片生成走 generateContent。Google 当前官方文档里,Nano Banana 2 对应 gemini-3.1-flash-image,Nano Banana Pro 对应 gemini-3-pro-image。 对 Gemini 3 图片模型,官方文档使用 responseFormat.image.aspectRatio 与responseFormat.image.imageSize 描述输出尺寸。
export API_KEY="YOUR_GPT88_API_KEY"
export BASE_URL="https://img.gpt88.cc"
export MODEL="gemini-3.1-flash-image"
curl -s -X POST \
"$BASE_URL/v1/models/$MODEL:generateContent" \
-H "x-goog-api-key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{ "text": "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme" }
]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"responseFormat": {
"image": {
"aspectRatio": "16:9",
"imageSize": "2K"
}
}
}
}' > response.json
jq -r '.. | objects | .inlineData?.data? | select(.)' response.json | head -n 1 | base64 -d > output.pngGemini 图生图与编辑
Gemini 图生图按官方口径优先走“上传图片,然后再调用 generateContent”的流程。 也就是说,参考图不要写成公网图片 URL,而是先上传成文件,再把返回的 file uri 放进 fileData.fileUri。
export API_KEY="YOUR_GPT88_API_KEY"
export BASE_URL="https://img.gpt88.cc"
export MODEL="gemini-3.1-flash-image"
# 先把本地参考图上传成可复用文件
curl -s -X POST "$BASE_URL/upload/v1/files" \
-H "x-goog-api-key: $API_KEY" \
-F "[email protected]" \
-F "mimeType=image/png" > upload.json
FILE_URI=$(jq -r '.file.uri // .uri // .name' upload.json)
jq -n --arg file_uri "$FILE_URI" '{
contents: [{
parts: [
{ text: "Keep the main subject, change the background to a moonlit bamboo path" },
{
fileData: {
mimeType: "image/png",
fileUri: $file_uri
}
}
]
}],
generationConfig: {
responseModalities: ["TEXT", "IMAGE"],
responseFormat: {
image: {
aspectRatio: "1:1",
imageSize: "1K"
}
}
}
}' > request.json
curl -s -X POST \
"$BASE_URL/v1/models/$MODEL:generateContent" \
-H "x-goog-api-key: $API_KEY" \
-H "Content-Type: application/json" \
--data-binary @request.json > response.json字段对照
OpenAI 图片 API
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 必填 | 官方 GPT Image 模型,例如 gpt-image-2。 |
prompt | string | 必填 | 图片生成或编辑指令。 |
size | string | 可选 | 像素尺寸,例如 1024x1024、1536x1024、1024x1536,gpt-image-2 还支持更多合法分辨率与 auto。 |
quality | string | 可选 | low、medium、high 或 auto。 |
background | string | 可选 | 官方文档支持 opaque 或 auto;gpt-image-2 当前不支持 transparent。 |
output_format | string | 可选 | 默认返回 PNG,也可请求 JPEG 或 WebP。 |
output_compression | integer | 可选 | JPEG / WebP 时可用,范围 0-100。 |
n | integer | 可选 | 一次请求生成多张图,默认 1。 |
image | file | file[] | 可选 | 编辑接口输入图片,使用 /v1/images/edits。 |
mask | file | 可选 | 局部编辑可选遮罩图,仅编辑被 mask 指定的区域。 |
modelstring必填官方 GPT Image 模型,例如gpt-image-2。promptstring必填图片生成或编辑指令。sizestring像素尺寸,例如1024x1024、1536x1024、1024x1536,gpt-image-2还支持更多合法分辨率与auto。qualitystringlow、medium、high或auto。backgroundstring官方文档支持opaque或auto;gpt-image-2当前不支持transparent。output_formatstring默认返回 PNG,也可请求 JPEG 或 WebP。output_compressionintegerJPEG / WebP 时可用,范围 0-100。ninteger一次请求生成多张图,默认 1。imagefile | file[]编辑接口输入图片,使用/v1/images/edits。maskfile局部编辑可选遮罩图,仅编辑被 mask 指定的区域。
Gemini 图片 API
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
contents | array<Content> | 必填 | Gemini generateContent 输入。 |
contents[].parts[].text | string | 必填 | 文字提示词。 |
contents[].parts[].inlineData | object | 可选 | 参考图可直接以内联 base64 传入,包含 mimeType 与 data。 |
contents[].parts[].fileData | object | 可选 | 参考图也可用 fileUri 传入,URL 或文件 URI 必须可访问。 |
generationConfig.responseModalities | string[] | 可选 | 常见写法为 ["IMAGE"] 或 ["TEXT", "IMAGE"]。 |
generationConfig.responseFormat.image.aspectRatio | string | 可选 | 官方比例值,例如 1:1、16:9、9:16、4:3、3:4。 |
generationConfig.responseFormat.image.imageSize | string | 可选 | 部分 Gemini 3 图片模型支持 1K、2K、4K。 |
contentsarray<Content>必填GeminigenerateContent输入。contents[].parts[].textstring必填文字提示词。contents[].parts[].inlineDataobject参考图可直接以内联 base64 传入,包含mimeType与data。contents[].parts[].fileDataobject参考图也可用fileUri传入,URL 或文件 URI 必须可访问。generationConfig.responseModalitiesstring[]常见写法为["IMAGE"]或["TEXT", "IMAGE"]。generationConfig.responseFormat.image.aspectRatiostring官方比例值,例如1:1、16:9、9:16、4:3、3:4。generationConfig.responseFormat.image.imageSizestring部分 Gemini 3 图片模型支持1K、2K、4K。
gpt88.cc 兼容说明
- 如果你接入的是 OpenAI 兼容图片模型,例如
gpt-image-2,优先使用/v1/images/generations和/v1/images/edits。 - 如果你接入的是 Google / Gemini 图片模型,优先使用
/v1/models/{model}:generateContent。 - 如果控制台展示了平台别名,例如
NanoBanana2,请先以控制台的可用模型列表为准,再参考本页理解它映射到哪类官方接口。 - 更多模型入口可在 模型导航 查看,代码工作流可参考 Codex gpt-image-2 Skill。