Gemini 图像
POST
/v1beta/models/{model}:generateContent
Gemini 图片生成。
请求参数
路径参数
模型路径参数
| 参数 | 类型 | 默认值 | 说明 | 是否必填 |
|---|---|---|---|---|
model | string | — | 模型名称,位于 /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。
请求体字段
| 参数 | 类型 | 默认值 | 说明 | 是否必填 |
|---|---|---|---|---|
contents | array | — | 包含图片生成提示词的内容数组。 | 是 |
contents[].parts[].text | string | — | 描述要生成图片的文本提示词。 | 条件 |
generationConfig | object | — | 生成配置,必须包含 responseModalities 和 imageConfig。 | 是 |
generationConfig.responseModalities | array<string> | — | 输出模态;图像生成请求必须包含 IMAGE。 | 是 |
generationConfig.imageConfig.aspectRatio | string | — | 图像宽高比,例如 16:9;可用值由模型决定。 | 是 |
generationConfig.imageConfig.imageSize | string | — | 图像尺寸,例如 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.jsonconst 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
}
}
响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
candidates | array | 模型生成的候选结果。 |
candidates[].content.parts[].inlineData.mimeType | string | 图片 MIME 类型,例如 image/png。 |
candidates[].content.parts[].inlineData.data | string | 图片的 Base64 数据,解码后写入文件。 |
candidates[].finishReason | string | 生成结束原因,例如 STOP 或 SAFETY。 |
usageMetadata | object | 输入、输出及总 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 兼容请求字段
| 参数 | 类型 | 默认值 | 说明 | 是否必填 |
|---|---|---|---|---|
model | string | — | Gemini 图像模型 ID,例如 gemini-2.5-flash-image。 | 是 |
messages | array | — | OpenAI Chat Completions 消息数组,包含图片生成提示词。 | 是 |
stream | boolean | — | 是否使用流式响应;非流式图像生成示例设置为 false。 | 是 |
extra_body.google.image_config | object | — | 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": ""},
"finish_reason": "stop"
}]
}
OpenAI 兼容响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 聊天响应 ID。 |
object | string | 固定为 chat.completion。 |
choices[].message.content | string | 图像 Markdown、Base64 或数据 URL,具体取决于渠道适配器。 |
choices[].finish_reason | string | 生成结束原因。 |