Nano Banana Pro 圖片生成 API
使用 Nano Banana Pro 進行 AI 圖片生成的 API,支援文生圖和圖生圖模式。
線上體驗:https://nanophoto.ai/zh-TW/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 | 無權存取(非本人的生成任務) |