Descripción General

Usa tu clave API para generar imágenes mediante un endpoint HTTP simple. Los créditos se deducen automáticamente según el número de imágenes generadas.

Endpoint

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

Autenticación

Incluye tu clave API en el header Authorization. ¿Aún no tienes una? Crea tu clave API aquí.

Authorization: Bearer TU_API_KEY
Content-Type: application/json

Cuerpo de la Petición (Cliente)

{
  "prompt": "Un paisaje sereno de montaña al atardecer con un lago reflejando el cielo naranja",
  "num": 1,
  "model": "gemini-3-pro-image-preview",
  "image_size": "16:9"
}

Valores soportados para model:

Valores soportados para image_size:

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

Tamaños adicionales soportados solo por modelos gemini-3.1-flash:

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

Deducción de Créditos

  • gemini-2.5-flash-image: Por imagen: 2 créditos
  • gemini-2.5-flash-image-hd: Por imagen: 5 créditos
  • gemini-3.1-flash-image-preview-512: Por imagen: 4 créditos
  • gemini-3.1-flash-image-preview: Por imagen: 4 créditos
  • gemini-3.1-flash-image-preview-2k: Por imagen: 6 créditos
  • gemini-3.1-flash-image-preview-4k: Por imagen: 8 créditos
  • gemini-3-pro-image-preview: Por imagen: 8 créditos
  • gemini-3-pro-image-preview-2k: Por imagen: 8 créditos
  • gemini-3-pro-image-preview-4k: Por imagen: 16 créditos
  • Si los créditos son insuficientes, la API devuelve un error.

Respuesta

Todas las respuestas usan un formato JSON unificado:

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

Si num es mayor que 1, la API devuelve múltiples URLs de imagen:

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

Respuestas de error:

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

Mensajes de error comunes:

  • 400: Parámetros de petición inválidos
  • 401: Clave API inválida
  • 500: Error del servidor

Ejemplos

curl

curl -X POST "https://api.nanobananaapi.dev/v1/images/generate" \
  -H "Authorization: Bearer TU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Un paisaje sereno de montaña al atardecer con un lago reflejando el cielo naranja",
    "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 TU_API_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      prompt:
        'Un paisaje sereno de montaña al atardecer con un lago reflejando el cielo naranja',
      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 TU_API_KEY',
    'Content-Type': 'application/json',
  }
  payload = {
    'prompt': 'Un paisaje sereno de montaña al atardecer con un lago reflejando el cielo naranja',
    '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())