概览
使用您的 API Key 通过简单的 HTTP 接口生成图片。系统会根据生成的图片数量自动扣减积分。
接口信息
- 方法:
POST - URL:
https://api.nanobananaapi.dev/v1/images/generate
认证方式
在请求头中加入 API Key:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json请求体
{
"prompt": "A serene mountain landscape at sunset with a lake reflecting the orange sky",
"num": 1,
"model": "gemini-3-pro-image-preview",
"image_size": "16:9"
}model 支持值:
gemini-2.5-flash-imagegemini-2.5-flash-image-hdgemini-3-pro-image-previewgemini-3-pro-image-preview-2kgemini-3-pro-image-preview-4k
image_size 支持值:
1:116:99:164:33:42:33:2
积分扣减
- gemini-2.5-flash-image: 每张图片:
2积分 - gemini-2.5-flash-image-hd: 每张图片:
5积分 - gemini-3-pro-image-preview: 每张图片:
10积分 - gemini-3-pro-image-preview-2k: 每张图片:
10积分 - gemini-3-pro-image-preview-4k: 每张图片:
20积分 - 若积分不足则返回错误信息。
返回格式
统一返回 JSON:
{
"code": 0,
"message": "ok",
"data": {
"url": "https://api.nanobananaapi.dev/v1/images/1234567890.png"
}
}如果请求参数 num 大于 1,则返回多个图片 URL 列表,格式为:
{
"code": 0,
"message": "ok",
"data": {
"url": [
"https://api.nanobananaapi.dev/v1/images/1234567890.png",
"https://api.nanobananaapi.dev/v1/images/0987654321.png"
]
}
}错误返回:
{
"code": 400,
"message": "insufficient credits"
}常见错误信息:
400: 参数错误401: 未授权500: 服务器错误
调用示例
curl
curl -X POST "https://api.nanobananaapi.dev/v1/images/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A serene mountain landscape at sunset with a lake reflecting the orange sky",
"num": 1,
"model": "gemini-3-pro-image-preview",
"image_size": "16:9"
}'Node.js
async function generate() {
const res = await fetch('https://api.nanobananaapi.dev/v1/images/generate', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
prompt:
'A serene mountain landscape at sunset with a lake reflecting the orange sky',
num: 1,
model: 'gemini-3-pro-image-preview',
image_size: '16:9',
}),
});
const result = await res.json();
if (result.code !== 0) throw new Error(result.message);
return result.data;
}Python
import requests
def generate():
url = 'https://api.nanobananaapi.dev/v1/images/generate'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
}
payload = {
'prompt': 'A serene mountain landscape at sunset with a lake reflecting the orange sky',
'num': 1,
'model': 'gemini-3-pro-image-preview',
'image_size': '16:9',
}
res = requests.post(url, headers=headers, json=payload, timeout=60)
res.raise_for_status()
result = res.json()
if result.get('code') != 0:
raise Exception(result.get('message'))
return result.get('data')
print(generate())Go
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"time"
)
func main() {
url := "https://api.nanobananaapi.dev/v1/images/generate"
payload := map[string]any{
"prompt": "A serene mountain landscape at sunset with a lake reflecting the orange sky",
"num": 1,
"model": "gemini-3-pro-image-preview",
"image_size": "16:9",
}
bodyBytes, err := json.Marshal(payload)
if err != nil {
panic(err)
}
req, err := http.NewRequest(http.MethodPost, url, bytes.NewReader(bodyBytes))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: 60 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
respBody, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(respBody))
}Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class Main {
public static void main(String[] args) throws Exception {
String json = "{\n" +
" \"prompt\": \"A serene mountain landscape at sunset with a lake reflecting the orange sky\",\n" +
" \"num\": 1,\n" +
" \"model\": \"gemini-3-pro-image-preview\",\n" +
" \"image_size\": \"16:9\"\n" +
"}";
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.nanobananaapi.dev/v1/images/generate"))
.timeout(Duration.ofSeconds(60))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}