跳转到主要内容
POST
/
v1beta
/
models
/
gemini-3-pro-image-preview:generateContent
图片编辑:根据指令编辑现有图片
curl --request POST \
  --url https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "contents": [
    {
      "parts": [
        {
          "text": "把这两张图里的人物合成到同一个办公室场景中,做着搞怪表情"
        },
        {
          "inlineData": {
            "mimeType": "image/png",
            "data": "<BASE64_DATA_IMG_1>"
          }
        },
        {
          "inlineData": {
            "mimeType": "image/png",
            "data": "<BASE64_DATA_IMG_2>"
          }
        }
      ]
    }
  ],
  "generationConfig": {
    "responseModalities": [
      "IMAGE"
    ],
    "imageConfig": {
      "aspectRatio": "16:9",
      "imageSize": "2K"
    }
  }
}
'
{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "inlineData": {
              "mimeType": "image/png",
              "data": "<string>"
            }
          }
        ]
      },
      "finishReason": "STOP"
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 10,
    "candidatesTokenCount": 258
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt

Use this file to discover all available pages before exploring further.

右侧的交互式 Playground 支持下拉选择参数。请在 Authorization 中填入你的 API Key(格式:Bearer sk-xxx),即可一键发送请求测试。
场景说明:本页用于「图片编辑」,必须上传一张待编辑的图片(base64 编码)+ 编辑指令。如果只想根据文本生成新图片,请使用 文生图接口
🖥️ 浏览器 Playground 限制(重要)本接口的响应里包含 base64 编码的图片(inlineData.data,数 MB 量级)。受浏览器渲染限制,右侧 Playground 在收到响应后可能弹出 请求时发生错误: unable to complete request ——实际请求已经成功,只是浏览器无法把这么长的 base64 显示出来。推荐做法(小白零踩坑):
  • 直接复制下方”代码示例”中的 Python / Node.js / cURL 到本地运行,代码会自动 base64.b64decode 并把图片保存为本地文件
  • 如要在浏览器里试 Playground,用极小的参考图(< 50KB) 并把 imageSize 设为最小档(如 1K)。
⚠️ parts 数组结构(重要,多图编辑必看)每个 part 只能是 textinlineData 中的一个,二者不能同时出现在同一个 part 里。这与谷歌官方 gemini-3-pro-image-preview 的契约一致。正确:一个 text part(编辑指令)+ N 个 inlineData part(每张图一个):
"contents": [{
  "parts": [
    {"text": "把这两张图里的人物合成到同一个办公室场景中"},
    {"inlineData": {"mimeType": "image/png", "data": "<BASE64_DATA_IMG_1>"}},
    {"inlineData": {"mimeType": "image/png", "data": "<BASE64_DATA_IMG_2>"}}
  ]
}]
错误(每个 part 同时塞了 text 和 inlineData,会导致非预期行为):
"contents": [{
  "parts": [
    {"inlineData": {...}, "text": "这是提示词吗 1"},
    {"inlineData": {...}, "text": "这是提示词吗 2"}
  ]
}]
关于 inlineData.data 字段本接口是 JSON 格式(非 multipart 文件上传),所以 Playground 无法直接选择本地文件,需要先把图片转成 Base64 字符串再粘贴到 data 输入框。一行命令转换 + 自动复制到剪贴板
# macOS
base64 -i your-image.jpg | tr -d '\n' | pbcopy

# Linux
base64 -w0 your-image.jpg | xclip -selection clipboard

# Windows PowerShell
[Convert]::ToBase64String([IO.File]::ReadAllBytes("your-image.jpg")) | Set-Clipboard
执行后直接在 Playground 的 data 字段 Cmd+V / Ctrl+V 粘贴即可。同时记得把 mimeType 切换为对应的 image/jpegimage/png建议:测试用小图(少于 200KB),避免 base64 字符串过长导致浏览器卡顿。频繁测试图片编辑更推荐用下方代码示例直接在本地运行。

代码示例

Python

import requests
import base64

API_KEY = "sk-your-api-key"

# 读取待编辑的图片
with open("input.jpg", "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode()

response = requests.post(
    "https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent",
    headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
    json={
        "contents": [{
            "parts": [
                {"text": "请把背景模糊化,突出前景的人物"},
                {"inlineData": {"mimeType": "image/jpeg", "data": image_b64}}
            ]
        }],
        "generationConfig": {
            "responseModalities": ["IMAGE"],
            "imageConfig": {"aspectRatio": "16:9", "imageSize": "2K"}
        }
    },
    timeout=300
).json()

img_data = response["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]
with open("edited.png", 'wb') as f:
    f.write(base64.b64decode(img_data))
print("编辑后的图片已保存至 edited.png")

Node.js

import fs from "fs";

const API_KEY = "sk-your-api-key";
const imageB64 = fs.readFileSync("input.jpg").toString("base64");

const response = await fetch(
  "https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent",
  {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${API_KEY}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      contents: [{
        parts: [
          { text: "请把背景模糊化,突出前景的人物" },
          { inlineData: { mimeType: "image/jpeg", data: imageB64 } }
        ]
      }],
      generationConfig: {
        responseModalities: ["IMAGE"],
        imageConfig: { aspectRatio: "16:9", imageSize: "2K" }
      }
    })
  }
);

const data = await response.json();
const imgBase64 = data.candidates[0].content.parts[0].inlineData.data;
fs.writeFileSync("edited.png", Buffer.from(imgBase64, "base64"));

cURL

# 注意:需要先将图片转为 base64 字符串
# IMAGE_B64=$(base64 -i input.jpg | tr -d '\n')

curl -X POST "https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [
        {"text": "请把背景模糊化,突出前景的人物"},
        {"inlineData": {"mimeType": "image/jpeg", "data": "'"$IMAGE_B64"'"}}
      ]
    }],
    "generationConfig": {
      "responseModalities": ["IMAGE"],
      "imageConfig": {"aspectRatio": "16:9", "imageSize": "2K"}
    }
  }'

多图编辑示例

把多张图作为输入合成或对比时,只用一个 text part(编辑指令),后面追加多个 inlineData part(每张图一个)。

Python(多图)

import requests
import base64

API_KEY = "sk-your-api-key"

def to_b64(path):
    with open(path, "rb") as f:
        return base64.b64encode(f.read()).decode()

# 准备多张图(这里以 2 张为例,最多可上传多张)
images = ["person1.png", "person2.png"]
parts = [{"text": "把这两张图里的人物合成到同一个办公室场景中,做着搞怪表情"}]
for path in images:
    parts.append({"inlineData": {"mimeType": "image/png", "data": to_b64(path)}})

response = requests.post(
    "https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent",
    headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
    json={
        "contents": [{"parts": parts}],
        "generationConfig": {
            "responseModalities": ["TEXT", "IMAGE"],
            "imageConfig": {"aspectRatio": "5:4", "imageSize": "2K"}
        }
    },
    timeout=300
).json()

img_data = response["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]
with open("merged.png", "wb") as f:
    f.write(base64.b64decode(img_data))

cURL(多图,对齐谷歌官方格式)

curl -X POST "https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [
        {"text": "An office group photo of these people, they are making funny faces."},
        {"inlineData": {"mimeType": "image/png", "data": "<BASE64_DATA_IMG_1>"}},
        {"inlineData": {"mimeType": "image/png", "data": "<BASE64_DATA_IMG_2>"}},
        {"inlineData": {"mimeType": "image/png", "data": "<BASE64_DATA_IMG_3>"}}
      ]
    }],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"],
      "imageConfig": {"aspectRatio": "5:4", "imageSize": "2K"}
    }
  }'

参数说明速查

参数类型必填说明
contents[].partsarray由「1 个 text part + N 个 inlineData part」组成。每个 part 只能含 textinlineData 之一,不可同时出现
contents[].parts[].textstring编辑指令(建议只放在第一个 part 中)
contents[].parts[].inlineData.mimeTypestringimage/jpegimage/png
contents[].parts[].inlineData.datastring图片的 Base64 编码(多图编辑时重复多个 inlineData part)
generationConfig.responseModalitiesarray通常为 ["IMAGE"]
generationConfig.imageConfig.aspectRatiostring10 种宽高比,默认 1:1
generationConfig.imageConfig.imageSizestring1K / 2K / 4K,默认 1K
Nano Banana Pro 支持多图编辑:可以同时输入多张图片和编辑指令,实现多图合成、风格迁移等高级编辑功能。

授权

Authorization
string
header
必填

在 API易控制台获取的 API Key

请求体

application/json
contents
object[]
必填

内容数组,包含编辑指令和待编辑的图片

generationConfig
object
必填

响应

成功生成图片

candidates
object[]

生成结果数组

usageMetadata
object