Gemini 原生接口
需要直接使用 Gemini 的 contents/parts、原生图片输入或原生响应时,使用本章接口。希望统一任务 ID 与异步轮询时,使用Images 接口。两者不能混用响应解析方式。
原生文生图
POST /v1beta/models/{model}:generateContent
本站可使用同一 Bearer Key 鉴权。URL 中填写有权限的公开模型 ID;路径中的模型决定路由,body 不需要再填写 model。
bash
curl --fail-with-body --max-time 600 \
'https://api.manxiaobai.online/v1beta/models/gemini-3.1-flash-image-preview-1k:generateContent' \
-H "Authorization: Bearer $MXB_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"contents": [{"role":"user","parts":[{"text":"一只蓝色陶瓷茶壶,产品摄影"}]}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {"aspectRatio":"1:1","imageSize":"1K"}
}
}'
原生接口直接等待结果,不会因添加 Images 的 background:true 而返回本站图片任务 ID。当前没有可用于替代此接口的本站 /v1beta/interactions 接入流程。
字段与规格
| 字段 | 类型 | 说明 |
|---|---|---|
| contents | array | 至少一组内容 |
| contents[].role | string | 示例为 user |
| contents[].parts | array | 文本和图片输入 |
| parts[].text | string | 提示词 |
| parts[].inlineData.mimeType | string | 如 image/png |
| parts[].inlineData.data | string | 纯 Base64 内容,不带 data: 前缀 |
| generationConfig.responseModalities | array | 生图示例使用 IMAGE |
| generationConfig.imageConfig.aspectRatio | string | 如 1:1、16:9;按模型能力 |
| generationConfig.imageConfig.imageSize | string | 1K/2K/4K,须与模型后缀及权限匹配 |
原生路径不经过 Images 的尺寸解析与后缀适配。即使 URL 有后缀,也应明确填写匹配的 imageSize,不能依赖 Images 层自动纠正冲突参数。
原生参考图
在同一个 parts 数组加入图片:
json
{
"contents": [{
"role": "user",
"parts": [
{"text":"保留茶壶主体,把背景改成浅绿色"},
{"inlineData":{"mimeType":"image/png","data":"替换为完整图片的纯Base64内容"}}
]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {"aspectRatio":"1:1","imageSize":"1K"}
}
}
参考图应为真实可解码图片,MIME 必须对应其实际格式。原生路径与 Images 的上传限制及参数适配不完全相同,不能把一条路径的行为套给另一条。
解析结果
遍历 candidates[].content.parts[],寻找 inlineData(兼容客户端也可识别 inline_data),读取 mimeType 和 data,Base64 解码后保存。不要把原生响应解析成 OpenAI 的 data[0].url。
没有图片时,检查返回的 error、候选 finishReason、文本 parts 和 promptFeedback。HTTP 200 但没有图片不是可下载的成功结果。不要因无图自动重复发送收费 POST。