POST /v1beta/models/{model}:generateContentcandidates[].content.parts[].text 字段以 Markdown 格式返回,根据模型不同有两种形式:| model 参数(实际传入值) | 分辨率 | 宽高比 | 返回格式 |
|---|---|---|---|
nano_banana_2-portrait | 标准 | 竖图 9:16 | URL 链接 |
nano_banana_2-landscape | 标准 | 横图 16:9 | URL 链接 |
nano_banana_pro-1K-portrait | 1K | 竖图 9:16 | URL 链接 |
nano_banana_pro-1K-landscape | 1K | 横图 16:9 | URL 链接 |
nano_banana_pro-2K-portrait | 2K | 竖图 9:16 | Base64 |
nano_banana_pro-2K-landscape | 2K | 横图 16:9 | Base64 |
nano_banana_pro-4K-portrait | 4K | 竖图 9:16 | Base64 |
nano_banana_pro-4K-landscape | 4K | 横图 16:9 | Base64 |
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 是 | Bearer YOUR_API_KEY |
| Content-Type | string | 是 | application/json |
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| contents | array | 是 | 对话内容列表 |
| contents[].role | string | 是 | 固定填 "user" |
| contents[].parts | array | 是 | 内容部件数组,文生图只含 text,图生图含 inline_data + text |
| contents[].parts[].text | string | 文生图必填 | 图片描述提示词,最大长度 10000 字符 |
| contents[].parts[].inline_data | object | 图生图必填 | 参考图片对象 |
| contents[].parts[].inline_data.mime_type | string | 是 | 图片格式,如:image/jpeg、image/png、image/webp |
| contents[].parts[].inline_data.data | string | 是 | 图片的纯 Base64 字符串(不含 data:image/jpeg;base64, 前缀) |
| generationConfig | object | 否 | 生成配置 |
| generationConfig.responseModalities | string[] | 否 | 响应模态,填 ["IMAGE"] 只返回图片,默认 ["TEXT","IMAGE"] |
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "美丽的日出风景,金色的阳光洒在宁静的湖面上,远处是连绵的山脉"
}
]
}
],
"generationConfig": {
"responseModalities": ["IMAGE"]
}
}{
"contents": [
{
"role": "user",
"parts": [
{
"inline_data": {
"mime_type": "image/jpeg",
"data": "/9j/4AAQSkZJRg..."
}
},
{
"inline_data": {
"mime_type": "image/png",
"data": "iVBORw0KGgoAAAANSU..."
}
},
{
"text": "融合这两张图片的风格,生成一张新的风景图"
}
]
}
],
"generationConfig": {
"responseModalities": ["IMAGE"]
}
}💡 多张参考图示例使用模型 nano_banana_2-landscape,URL 路径为:POST /v1beta/models/nano_banana_2-landscape:generateContent
| 参数名 | 类型 | 说明 |
|---|---|---|
| candidates | array | 候选结果列表 |
| candidates[].content.role | string | 固定值 "model" |
| candidates[].content.parts | array | 内容部件数组 |
| candidates[].content.parts[].text | string | 图片以 Markdown 格式内嵌:URL 模型为  ,Base64 模型为  |
| candidates[].finishReason | string | 完成原因,正常为 "STOP" |
| candidates[].index | number | 候选结果索引,从 0 开始 |
| candidates[].safetyRatings | array | 安全评级列表 |
| usageMetadata.promptTokenCount | number | 输入消耗的 token 数 |
| usageMetadata.candidatesTokenCount | number | 输出消耗的 token 数 |
| usageMetadata.totalTokenCount | number | 总消耗 token 数 |
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "\n\n"
}
]
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": []
}
],
"usageMetadata": {
"promptTokenCount": 31,
"toolUsePromptTokenCount": 0,
"candidatesTokenCount": 1003,
"totalTokenCount": 1034,
"thoughtsTokenCount": 0,
"cachedContentTokenCount": 0,
"promptTokensDetails": null,
"toolUsePromptTokensDetails": null
}
}{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "\n\n"
}
]
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": []
}
],
"usageMetadata": {
"promptTokenCount": 31,
"toolUsePromptTokenCount": 0,
"candidatesTokenCount": 1110,
"totalTokenCount": 1141,
"thoughtsTokenCount": 0,
"cachedContentTokenCount": 0,
"promptTokensDetails": null,
"toolUsePromptTokensDetails": null
}
}candidates[0].content.parts[0].text 字段中,需用正则提取括号内的内容:正则:/!\[image\]\(([^)]+)\)/https:// 开头 → 图片 URL,可直接用于 <img src> 或下载data:image/ 开头 → Base64 Data URL,可直接用于 <img src> 展示,或解码后保存为文件-portrait → 竖图(9:16),如 nano_banana_2-portrait-landscape → 横图(16:9),如 nano_banana_2-landscapenano_banana_2 / nano_banana_pro / nano_banana_pro-1K → 返回 URL 链接(Google Cloud Storage 临时链接,有效期较短,请及时下载)nano_banana_pro-2K / nano_banana_pro-4K → 返回 Base64 Data URL,可直接用于展示image/jpeg、image/png、image/webp,单张最大 5MBparts 中只有 text = 文生图模式parts 中包含 inline_data + text = 图生图模式