Visão Geral

Use sua chave API para gerar imagens através de um endpoint HTTP simples. Os créditos são deduzidos automaticamente com base no número de imagens geradas.

Endpoint

  • Método: POST
  • URL: https://api.nanobananaapi.dev/v1/images/generate

Autenticação

Inclua sua chave API no header Authorization. Ainda não tem uma? Crie sua chave API aqui.

Authorization: Bearer SUA_API_KEY
Content-Type: application/json

Corpo da Requisição (Cliente)

{
  "prompt": "Uma paisagem serena de montanha ao pôr do sol com um lago refletindo o céu alaranjado",
  "num": 1,
  "model": "gemini-3-pro-image-preview",
  "image_size": "16:9"
}

Valores suportados para model:

Valores suportados para image_size:

  • 1:1
  • 16:9
  • 9:16
  • 4:3
  • 3:4
  • 2:3
  • 3:2
  • 4:5
  • 5:4

Tamanhos adicionais suportados apenas por modelos gemini-3.1-flash:

  • 21:9
  • 1:4
  • 4:1
  • 8:1
  • 1:8

Dedução de Créditos

  • gemini-2.5-flash-image: Por imagem: 2 créditos
  • gemini-2.5-flash-image-hd: Por imagem: 5 créditos
  • gemini-3.1-flash-image-preview-512: Por imagem: 4 créditos
  • gemini-3.1-flash-image-preview: Por imagem: 4 créditos
  • gemini-3.1-flash-image-preview-2k: Por imagem: 6 créditos
  • gemini-3.1-flash-image-preview-4k: Por imagem: 8 créditos
  • gemini-3-pro-image-preview: Por imagem: 8 créditos
  • gemini-3-pro-image-preview-2k: Por imagem: 8 créditos
  • gemini-3-pro-image-preview-4k: Por imagem: 16 créditos
  • Se os créditos forem insuficientes, a API retorna um erro.

Resposta

Todas as respostas usam um formato JSON unificado:

{
  "code": 0,
  "message": "ok",
  "data": {
    "url": "https://api.nanobananaapi.dev/v1/images/1234567890.png"
  }
}

Se num for maior que 1, a API retorna múltiplas URLs de imagem:

{
  "code": 0,
  "message": "ok",
  "data": {
    "url": [
      "https://api.nanobananaapi.dev/v1/images/1234567890.png",
      "https://api.nanobananaapi.dev/v1/images/0987654321.png"
    ]
  }
}

Respostas de erro:

{
  "code": 400,
  "message": "créditos insuficientes"
}

Mensagens de erro comuns:

  • 400: Parâmetros de requisição inválidos
  • 401: Chave API inválida
  • 500: Erro do servidor

Exemplos

curl

curl -X POST "https://api.nanobananaapi.dev/v1/images/generate" \
  -H "Authorization: Bearer SUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Uma paisagem serena de montanha ao pôr do sol com um lago refletindo o céu alaranjado",
    "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 SUA_API_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      prompt:
        'Uma paisagem serena de montanha ao pôr do sol com um lago refletindo o céu alaranjado',
      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 SUA_API_KEY',
    'Content-Type': 'application/json',
  }
  payload = {
    'prompt': 'Uma paisagem serena de montanha ao pôr do sol com um lago refletindo o céu alaranjado',
    '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())