Nano Banana Pro 图片生成 API
使用 Nano Banana Pro 进行 AI 图片生成的 API,支持文生图和图生图模式。
在线体验:https://nanophoto.ai/zh/nano-banana-pro
| 方法 | 路径 | 描述 |
|---|
POST | /api/nano-banana-pro/generate | 创建图片生成任务 |
POST | /api/nano-banana-pro/check-status | 查询任务状态并获取结果 |
Authorization: Bearer YOUR_API_KEY
积分在任务创建时预扣,生成失败时自动退还。
POST /api/nano-banana-pro/generate
| 请求头 | 值 |
|---|
Content-Type | application/json |
Authorization | Bearer YOUR_API_KEY |
| 参数 | 类型 | 必填 | 描述 |
|---|
prompt | string | 是 | 图片生成提示词 |
mode | string | 是 | generate(文生图)或 edit(图生图) |
aspectRatio | string | 否 | 16:9、9:16、4:3 或 3:4(默认:16:9) |
imageQuality | string | 否 | 1K、2K 或 4K(默认:1K) |
inputImageUrls | string[] | 条件必填 | 图生图模式的公开可访问图片 URL(最多 8 张)。mode 为 edit 时必填 |
- API 调用仅接受
inputImageUrls(公开可访问的 URL)用于图生图模式。不支持通过 API 上传 Base64 图片(inputImages)。
- 最多支持 8 张输入图片。
curl -X POST "https://nanophoto.ai/api/nano-banana-pro/generate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
--data-raw '{
"prompt": "未来感城市日落景观,飞行汽车与霓虹灯光",
"mode": "generate",
"aspectRatio": "16:9",
"imageQuality": "2K"
}'
curl -X POST "https://nanophoto.ai/api/nano-banana-pro/generate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
--data-raw '{
"prompt": "将这张照片转换为水彩画风格",
"mode": "edit",
"aspectRatio": "16:9",
"imageQuality": "1K",
"inputImageUrls": ["https://static.nanophoto.ai/demo/nano-banana-pro.webp"]
}'
{
"success": true,
"generationId": "abc123xyz",
"taskId": "task-456",
"status": "pending"
}
图片生成是异步的。使用第一步返回的 generationId 轮询获取结果。
POST /api/nano-banana-pro/check-status
| 请求头 | 值 |
|---|
Content-Type | application/json |
Authorization | Bearer YOUR_API_KEY |
| 参数 | 类型 | 必填 | 描述 |
|---|
generationId | string | 是 | 生成接口返回的 generationId |
curl -X POST "https://nanophoto.ai/api/nano-banana-pro/check-status" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
--data-raw '{
"generationId": "abc123xyz"
}'
{
"success": true,
"status": "completed",
"imageUrl": "https://static.nanophoto.ai/generations/abc123.jpg",
"generationId": "abc123xyz",
"progress": 100
}
{
"success": true,
"status": "pending",
"generationId": "abc123xyz",
"progress": 15
}
{
"success": false,
"status": "failed",
"error": "Generation failed",
"generationId": "abc123xyz",
"progress": 0
}
async function generateImage(apiKey: string) {
// 第一步:创建生成任务
const generateRes = await fetch("https://nanophoto.ai/api/nano-banana-pro/generate", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${apiKey}`,
},
body: JSON.stringify({
prompt: "宁静的日式庭院,樱花盛开,锦鲤池塘",
mode: "generate",
aspectRatio: "16:9",
imageQuality: "2K",
}),
});
const generateData = await generateRes.json();
if (!generateData.success) {
throw new Error(`生成失败: ${generateData.error}`);
}
const { generationId } = generateData;
console.log(`任务已创建: ${generationId}`);
// 第二步:轮询获取结果
while (true) {
await new Promise((r) => setTimeout(r, 3000)); // 等待 3 秒
const statusRes = await fetch("https://nanophoto.ai/api/nano-banana-pro/check-status", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${apiKey}`,
},
body: JSON.stringify({ generationId }),
});
const statusData = await statusRes.json();
console.log(`状态: ${statusData.status}, 进度: ${statusData.progress}%`);
if (statusData.status === "completed") {
console.log(`图片地址: ${statusData.imageUrl}`);
return statusData.imageUrl;
}
if (statusData.status === "failed") {
throw new Error(`生成失败: ${statusData.error}`);
}
}
}
- 每 3-5 秒 轮询一次
- 典型生成时间:10-30 秒
- 状态流转:
pending → generating → completed 或 failed
- 生成失败时积分自动退还
| errorCode | HTTP 状态码 | 描述 |
|---|
LOGIN_REQUIRED | 401 | 需要认证 |
API_KEY_RATE_LIMIT_EXCEEDED | 429 | 超出速率限制 |
INSUFFICIENT_CREDITS | 402 | 积分不足 |
INVALID_PROMPT | 400 | 提示词为空 |
MISSING_INPUT_IMAGE | 400 | 图生图模式需要输入图片 |
TOO_MANY_IMAGES | 400 | 超过 8 张输入图片 |
IMAGE_URLS_REQUIRED | 400 | API 调用图生图需使用 inputImageUrls |
CREDIT_RESERVATION_FAILED | 500 | 积分预扣失败 |
GENERATION_FAILED | 500 | 图片生成失败 |
NOT_FOUND | 404 | 生成 ID 不存在 |
FORBIDDEN | 403 | 无权访问(非本人的生成任务) |