概览

使用您的 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-image
  • gemini-2.5-flash-image-hd
  • gemini-3-pro-image-preview
  • gemini-3-pro-image-preview-2k
  • gemini-3-pro-image-preview-4k

image_size 支持值:

  • 1:1
  • 16:9
  • 9:16
  • 4:3
  • 3:4
  • 2:3
  • 3: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());
  }
}