Documentation Index
Fetch the complete documentation index at: https://api-doc.vncps.com/llms.txt
Use this file to discover all available pages before exploring further.
模型介绍
gemini-3.1-flash-image-preview
Nano Banana 2 (官方名称)
• 响应速度快
• 适合批量生成
• 支持文生图、图生图、多图融合
• 主打速度与主流高质量,目前的默认模型
模型映射关系
| 内部代号 | 官方/API 名称 | 特点 |
|---|
| Nano Banana 2 | gemini-3.1-flash-image-preview | 主打速度与主流高质量,目前的默认模型 |
| Nano Banana Pro | gemini-3-pro-image-preview | 主打极致质量,Pro/高级选项 |
API 端点
POST https://api.xxx.com/v1/images/generations
认证方式
使用 Bearer Token 认证:
Authorization: Bearer sk-xxxx
请求格式
文生图
通过文本描述生成图片。
curl --location --request POST 'https://api.xxx.com/v1/images/generations' \
--header 'Authorization: Bearer sk-xxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "请为黑客帝国设计一张高品质的3D海报,需要先检索影视剧/小说信息和著名的片段场景。首先,请利用你的知识库检索这个影视剧/小说的内容,找出一个最具代表性的名场面或核心地点。在画面中央,将这个场景构建为一个精致的轴侧视角3D微缩模型。风格要采用梦工厂动画那种细腻、柔和的渲染风格。你需要还原当时的建筑细节、人物动态以及环境氛围,无论是暴风雨还是宁静的午后,都要自然地融合在模型的光影里。关于背景,不要使用简单的纯白底。请在模型周围营造一种带有淡淡水墨晕染和流动光雾的虚空环境,色调雅致,让画面看起来有呼吸感和纵深感,衬托出中央模型的珍贵。最后是底部的排版,请生成中文文字。居中写上小说名称,字体要有与原著风格匹配的设计感。在书名下方,自动检索并排版一句原著中关于该场景的经典描写或台词,字体使用优雅的衬线体。整体布局要像一个高级的博物馆藏品铭牌那样精致平衡。",
"size": "1:1",
"resolution": "1K",
"n": 1
}'
图生图
基于输入图片生成新图片,支持 URL 和 Base64 格式。
URL 格式
{
"model": "gemini-3.1-flash-image-preview",
"prompt": "将这张图转换为油画风格",
"image_urls": ["https://example.com/image.jpg"],
"size": "1:1",
"resolution": "1K",
"n": 1
}
Base64 格式
{
"model": "gemini-3.1-flash-image-preview",
"prompt": "将这张图转换为油画风格",
"image_urls": ["data:image/jpeg;base64,/9j/4AAQSkZJRg..."],
"size": "1:1",
"resolution": "1K",
"n": 1
}
多图融合
融合多张图片的特征生成新图片。
{
"model": "gemini-3.1-flash-image-preview",
"prompt": "将图1的服装换为图2的服装",
"image_urls": [
"https://example.com/image1.jpg",
"https://example.com/image2.jpg"
],
"size": "1:1",
"resolution": "1K",
"n": 1
}
参数说明
请求参数
| 参数名 | 类型 | 必填 | 说明 | 默认值/可选值 |
|---|
model | string | ✅ | 模型名称 | gemini-3.1-flash-image-preview |
prompt | string | ✅ | 文本提示词 | 支持中英文,建议详细描述 |
image_urls | array | ❌ | 输入图片URL列表 | 支持URL和Base64格式 |
size | string | ❌ | 图片尺寸比例 | 1:1, 16:9, 9:16 等 |
resolution | string | ❌ | 分辨率 | 1K, 2K, 4K |
n | integer | ❌ | 生成图片数量 | 默认为 1 |
image_urls 格式说明
支持两种格式:
-
URL 格式:
- 公开可访问的图像URL(http:// 或 https://)
- 示例:
https://example.com/image.jpg
-
Base64 格式:
- 必须使用完整的 Data URI 格式
- 格式:
data:image/{格式};base64,{base64数据}
- 支持的图片格式:jpeg、png、webp
- 示例:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABg...
限制:
- 最多 14 张参考图(建议:最多 10 张物体参考 + 4 张角色参考)
- 单张图片不超过 10MB
- 支持格式:jpeg、png、webp
任务查询
图片生成是异步任务,提交后需要通过任务ID查询结果。
查询任务状态
curl --location --request GET 'https://task.artsmcp.com/{task_id}' \
--header 'Accept: */*'
响应示例
{
"code": 200,
"data": {
"actual_time": 69,
"completed": 1772274674,
"created": 1772274605,
"estimated_time": 100,
"id": "task_01KJHWRQJDDA7NYJQPVV2S1VPN",
"progress": 100,
"result": {
"images": [
{
"expires_at": 1772361074,
"url": [
"https://upload.apimart.ai/f/image/9998227725327692-9a33be2a-d4b8-4f67-94da-9200a1bc2782-1772274672269791268_0.png"
]
}
]
},
"status": "completed"
}
}
状态码说明
| 状态 | 说明 |
|---|
submitted | 任务已提交 |
processing | 正在处理中 |
completed | 任务已完成 |
failed | 任务失败 |
使用示例
Python 完整示例
import requests
import json
import time
class GeminiFlashClient:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://api.xxx.com/v1/images/generations"
self.task_url = "https://task.artsmcp.com"
def generate_image(self, prompt, size="1:1", resolution="1K", n=1):
"""生成图片"""
headers = {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
data = {
"model": "gemini-3.1-flash-image-preview",
"prompt": prompt,
"size": size,
"resolution": resolution,
"n": n
}
response = requests.post(self.base_url, headers=headers, json=data)
result = response.json()
if result["code"] == 200:
task_id = result["data"][0]["task_id"]
return self.wait_for_completion(task_id)
else:
raise Exception(f"API Error: {result}")
def wait_for_completion(self, task_id, max_wait=300):
"""等待任务完成"""
url = f"{self.task_url}/{task_id}"
start_time = time.time()
while time.time() - start_time < max_wait:
response = requests.get(url)
result = response.json()
if result["data"]["status"] == "completed":
return result["data"]["result"]["images"][0]["url"][0]
elif result["data"]["status"] == "failed":
raise Exception("Task failed")
time.sleep(5) # 每5秒查询一次
raise Exception("Task timeout")
# 使用示例
client = GeminiFlashClient("sk-your-api-key")
image_url = client.generate_image("一只可爱的猫咪,卡通风格")
print(f"生成的图片URL: {image_url}")
注意事项
- 返回的图片URL通常有24小时的有效期,请及时下载保存
- Base64格式需要包含完整的
data:image/...;base64, 前缀
- 单张图片大小限制为10MB
- 最多支持14张参考图片
推荐实践:
- 对于批量生成,建议设置合理的间隔时间避免频率限制
- 详细的提示词能获得更好的生成效果
- 图生图时建议保持参考图和提示词的一致性