图片生成 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 常用字段是 promptsizequalitybackground
  • Gemini 常用字段是 contentspartsresponseModalitiesresponseFormat.image

OpenAI 官方图片 API

POSThttps://img.gpt88.cc/v1/images/generations

OpenAI 官方图片接口用于从文本直接生成图片。官方文档当前明确区分 generationsedits,并说明从 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 图片编辑

POSThttps://img.gpt88.cc/v1/images/edits

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

POSThttps://img.gpt88.cc/v1/models/gemini-3.1-flash-image:generateContent

Gemini 官方图片生成走 generateContent。Google 当前官方文档里,Nano Banana 2 对应 gemini-3.1-flash-image,Nano Banana Pro 对应 gemini-3-pro-image。 对 Gemini 3 图片模型,官方文档使用 responseFormat.image.aspectRatioresponseFormat.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.png

Gemini 图生图与编辑

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

  • modelstring必填
    官方 GPT Image 模型,例如 gpt-image-2
  • promptstring必填
    图片生成或编辑指令。
  • sizestring
    像素尺寸,例如 1024x10241536x10241024x1536gpt-image-2 还支持更多合法分辨率与 auto
  • qualitystring
    lowmediumhighauto
  • backgroundstring
    官方文档支持 opaqueautogpt-image-2 当前不支持 transparent
  • output_formatstring
    默认返回 PNG,也可请求 JPEG 或 WebP。
  • output_compressioninteger
    JPEG / WebP 时可用,范围 0-100。
  • ninteger
    一次请求生成多张图,默认 1。
  • imagefile | file[]
    编辑接口输入图片,使用 /v1/images/edits
  • maskfile
    局部编辑可选遮罩图,仅编辑被 mask 指定的区域。

Gemini 图片 API

  • contentsarray<Content>必填
    Gemini generateContent 输入。
  • contents[].parts[].textstring必填
    文字提示词。
  • contents[].parts[].inlineDataobject
    参考图可直接以内联 base64 传入,包含 mimeTypedata
  • contents[].parts[].fileDataobject
    参考图也可用 fileUri 传入,URL 或文件 URI 必须可访问。
  • generationConfig.responseModalitiesstring[]
    常见写法为 ["IMAGE"]["TEXT", "IMAGE"]
  • generationConfig.responseFormat.image.aspectRatiostring
    官方比例值,例如 1:116:99:164:33:4
  • generationConfig.responseFormat.image.imageSizestring
    部分 Gemini 3 图片模型支持 1K2K4K

gpt88.cc 兼容说明

  • 如果你接入的是 OpenAI 兼容图片模型,例如 gpt-image-2,优先使用 /v1/images/generations/v1/images/edits
  • 如果你接入的是 Google / Gemini 图片模型,优先使用 /v1/models/{model}:generateContent
  • 如果控制台展示了平台别名,例如 NanoBanana2,请先以控制台的可用模型列表为准,再参考本页理解它映射到哪类官方接口。
  • 更多模型入口可在 模型导航 查看,代码工作流可参考 Codex gpt-image-2 Skill