Gemini 图像

POST /v1beta/models/{model}:generateContent

Gemini 图片生成。

请求参数

路径参数

模型路径参数
参数类型默认值说明是否必填
modelstring—模型名称,位于 /v1beta/models/{model} 路径中。是

请求头

x-goog-api-key

使用 Gemini API Key 认证。格式: x-goog-api-key: sk-xxxxxx

原生 Gemini 格式

请求体至少包含 contents 和 generationConfig。contents[].parts[].text 描述要生成的图片,generationConfig.responseModalities 必须包含 IMAGE。

请求体字段
参数类型默认值说明是否必填
contentsarray—包含图片生成提示词的内容数组。是
contents[].parts[].textstring—描述要生成图片的文本提示词。条件
generationConfigobject—生成配置,必须包含 responseModalities 和 imageConfig。是
generationConfig.responseModalitiesarray<string>—输出模态;图像生成请求必须包含 IMAGE。是
generationConfig.imageConfig.aspectRatiostring—图像宽高比,例如 16:9;可用值由模型决定。是
generationConfig.imageConfig.imageSizestring—图像尺寸,例如 2K;可用值由模型决定。是

请求体示例

查看 JSON 请求体示例

{
  "contents": [{
    "role": "user",
    "parts": [{ "text": "生成一张日落海边的插画" }]
  }],
  "generationConfig": {
    "responseModalities": ["IMAGE"],
    "imageConfig": {
      "aspectRatio": "16:9",
      "imageSize": "2K"
    }
  }
}

请求示例代码

curl -X POST "https://10000router.com/v1beta/models/gemini-2.5-flash-image:generateContent/" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -d @image-request.json
const payload = {
  contents: [{ role: "user", parts: [{ text: "生成一张日落海边的插画" }] }],
  generationConfig: {
    responseModalities: ["IMAGE"],
    imageConfig: { aspectRatio: "16:9", imageSize: "2K" }
  }
};
const response = await fetch("https://10000router.com/v1beta/models/gemini-2.5-flash-image:generateContent/", {
  method: "POST",
  headers: { "x-goog-api-key": process.env.GEMINI_API_KEY },
  body: JSON.stringify(payload)
});
console.log(await response.json());
payload := `{
  "contents": [{"role": "user", "parts": [{"text": "生成一张日落海边的插画"}]}],
  "generationConfig": {
    "responseModalities": ["IMAGE"],
    "imageConfig": {"aspectRatio": "16:9", "imageSize": "2K"}
  }
}`
req, _ := http.NewRequest("POST", "https://10000router.com/v1beta/models/gemini-2.5-flash-image:generateContent/", strings.NewReader(payload))
req.Header.Set("x-goog-api-key", os.Getenv("GEMINI_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer res.Body.Close()
import os
import requests

payload = {
    "contents": [{"role": "user", "parts": [{"text": "生成一张日落海边的插画"}]}],
    "generationConfig": {
        "responseModalities": ["IMAGE"],
        "imageConfig": {"aspectRatio": "16:9", "imageSize": "2K"},
    },
}
response = requests.post(
    "https://10000router.com/v1beta/models/gemini-2.5-flash-image:generateContent/",
    json=payload,
)
print(response.json())
var payload = "{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"生成一张日落海边的插画\"}]}],"
    + "\"generationConfig\":{\"responseModalities\":[\"IMAGE\"],"
    + "\"imageConfig\":{\"aspectRatio\":\"16:9\",\"imageSize\":\"2K\"}}}";
var request = java.net.http.HttpRequest.newBuilder(java.net.URI.create("https://10000router.com/v1beta/models/gemini-2.5-flash-image:generateContent/"))
    .header("x-goog-api-key", System.getenv("GEMINI_API_KEY"))
    .POST(java.net.http.HttpRequest.BodyPublishers.ofString(payload))
    .build();
var response = java.net.http.HttpClient.newHttpClient().send(request, java.net.http.HttpResponse.BodyHandlers.ofString());
using System.Net.Http.Json;
using var client = new HttpClient(); client.DefaultRequestHeaders.Add("x-goog-api-key", Environment.GetEnvironmentVariable("GEMINI_API_KEY"));
var payload = new {
    contents = new[] { new { role = "user", parts = new[] { new { text = "生成一张日落海边的插画" } } } },
    generationConfig = new {
        responseModalities = new[] { "IMAGE" },
        imageConfig = new { aspectRatio = "16:9", imageSize = "2K" }
    }
};
var response = await client.PostAsJsonAsync("https://10000router.com/v1beta/models/gemini-2.5-flash-image:generateContent/", payload);
Console.WriteLine(await response.Content.ReadAsStringAsync());

imageConfig.aspectRatio 和 imageConfig.imageSize 的可选值由模型决定。响应中的 candidates[].content.parts[] 可能包含 inlineData.mimeType 与 Base64 编码的 inlineData.data;请将其解码后保存为图片文件。

返回响应

成功响应

{
  "candidates": [{
    "content": {
      "role": "model",
      "parts": [{
        "inlineData": {
          "mimeType": "image/png",
          "data": "<BASE64_IMAGE>"
        }
      }]
    },
    "finishReason": "STOP",
    "safetyRatings": []
  }],
  "usageMetadata": {
    "promptTokenCount": 12,
    "candidatesTokenCount": 0,
    "totalTokenCount": 12
  }
}
响应字段
字段类型说明
candidatesarray模型生成的候选结果。
candidates[].content.parts[].inlineData.mimeTypestring图片 MIME 类型,例如 image/png。
candidates[].content.parts[].inlineData.datastring图片的 Base64 数据,解码后写入文件。
candidates[].finishReasonstring生成结束原因,例如 STOP 或 SAFETY。
usageMetadataobject输入、输出及总 token 统计。

错误响应

参数不支持、模型不可用或触发限流时,网关返回 4xx 错误对象;请根据 error.message 修正请求后再重试。

成功响应请参阅上方的 Gemini 原生图像响应示例。

{
  "error": {
    "code": 400,
    "message": "Invalid value for responseModalities",
    "status": "INVALID_ARGUMENT"
  }
}
{
  "error": {
    "code": 429,
    "message": "Rate limit exceeded",
    "status": "RESOURCE_EXHAUSTED"
  }
}

OpenAI 兼容格式

POST /v1/chat/completions

该兼容接口使用 OpenAI Chat Completions 路径调用 Gemini 图像模型。网关负责将 messages 转换为 Gemini 内容;请求体使用 model、messages、stream 和 extra_body.google.image_config,响应为 chat.completion 对象。图像生成请求也可在 messages 中同时提供文本和媒体输入,具体支持情况取决于模型。

请求参数

请求头

Authorization

使用 Bearer Token 认证。格式: Authorization: Bearer sk-xxxxxx

请求体字段

OpenAI 兼容请求字段
参数类型默认值说明是否必填
modelstring—Gemini 图像模型 ID,例如 gemini-2.5-flash-image。是
messagesarray—OpenAI Chat Completions 消息数组,包含图片生成提示词。是
streamboolean—是否使用流式响应;非流式图像生成示例设置为 false。是
extra_body.google.image_configobject—Gemini 图像配置扩展,包含 aspect_ratio 和 image_size。否

请求体示例

curl -X POST "https://10000router.com/v1/chat/completions" \
  -H "Authorization: Bearer $API_KEY" \
  -d '{
    "model": "gemini-2.5-flash-image",
    "messages": [{"role": "user", "content": "生成一张日落海边的插画"}],
    "stream": false,
    "extra_body": {"google": {"image_config": {"aspect_ratio": "16:9", "image_size": "2K"}}}
  }'
const payload = {
  model: "gemini-2.5-flash-image",
  messages: [{ role: "user", content: "生成一张日落海边的插画" }],
  stream: false,
  extra_body: { google: { image_config: { aspect_ratio: "16:9", image_size: "2K" } } }
};
const response = await fetch("https://10000router.com/v1/chat/completions", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.API_KEY },
  body: JSON.stringify(payload)
});
console.log(await response.json());
payload := `{
  "model": "gemini-2.5-flash-image",
  "messages": [{"role": "user", "content": "生成一张日落海边的插画"}],
  "stream": false,
  "extra_body": {"google": {"image_config": {"aspect_ratio": "16:9", "image_size": "2K"}}}
}`
req, _ := http.NewRequest("POST", "https://10000router.com/v1/chat/completions", strings.NewReader(payload))
req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer res.Body.Close()
import os
import requests

payload = {
    "model": "gemini-2.5-flash-image",
    "messages": [{"role": "user", "content": "生成一张日落海边的插画"}],
    "stream": False,
    "extra_body": {"google": {"image_config": {"aspect_ratio": "16:9", "image_size": "2K"}}},
}
response = requests.post(
    "https://10000router.com/v1/chat/completions",
    json=payload,
)
print(response.json())
var payload = "{\"model\":\"gemini-2.5-flash-image\","
    + "\"messages\":[{\"role\":\"user\",\"content\":\"生成一张日落海边的插画\"}],"
    + "\"stream\":false,\"extra_body\":{\"google\":{\"image_config\":{"
    + "\"aspect_ratio\":\"16:9\",\"image_size\":\"2K\"}}}}";
var request = java.net.http.HttpRequest.newBuilder(java.net.URI.create("https://10000router.com/v1/chat/completions"))
    .header("Authorization", "Bearer " + System.getenv("API_KEY"))
    .POST(java.net.http.HttpRequest.BodyPublishers.ofString(payload))
    .build();
var response = java.net.http.HttpClient.newHttpClient().send(request, java.net.http.HttpResponse.BodyHandlers.ofString());
using System.Net.Http.Json;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new("Bearer", Environment.GetEnvironmentVariable("API_KEY"));
var payload = new {
    model = "gemini-2.5-flash-image",
    messages = new[] { new { role = "user", content = "生成一张日落海边的插画" } },
    stream = false,
    extra_body = new { google = new { image_config = new { aspect_ratio = "16:9", image_size = "2K" } } }
};
var response = await client.PostAsJsonAsync("https://10000router.com/v1/chat/completions", payload);
Console.WriteLine(await response.Content.ReadAsStringAsync());

返回响应

{
  "id": "chatcmpl-image-abc123",
  "object": "chat.completion",
  "model": "gemini-2.5-flash-image",
  "choices": [{
    "index": 0,
    "message": {"role": "assistant", "content": "![image](data:image/png;base64,<BASE64_IMAGE>)"},
    "finish_reason": "stop"
  }]
}
OpenAI 兼容响应字段
字段类型说明
idstring聊天响应 ID。
objectstring固定为 chat.completion。
choices[].message.contentstring图像 Markdown、Base64 或数据 URL,具体取决于渠道适配器。
choices[].finish_reasonstring生成结束原因。

results matching ""

    No results matching ""