Google lanzó Nano Banana 2.1 el 6 de octubre de 2026. Puedes usarlo mediante la API de Gemini con el ID gemini-nano-banana-2.1. Es una actualización de Nano Banana 2 (Gemini 3.1 Flash Image) con mejor calidad visual, edición estilo máscara y mayor consistencia de personajes entre interacciones. Además, cuesta la mitad por imagen que Nano Banana 2 en las resoluciones que ambos comparten.
Esta guía parte de una terminal vacía y termina con una imagen guardada. También cubre relaciones de aspecto, salida en 2K y 4K, edición, cambios en múltiples turnos, imágenes de referencia, fundamentación con búsqueda y costos. Puedes guardar cada solicitud en Apidog para comparar 2.1 con el modelo que utilizas actualmente.
¿Quieres el contexto primero? Lee Qué es Nano Banana 2.1 para conocer los cambios y lo que Google todavía no ha publicado.
Lo que necesitas
| Elemento | Valor |
|---|---|
| URL base | https://generativelanguage.googleapis.com/v1beta |
| Encabezado de autenticación | x-goog-api-key: $GEMINI_API_KEY |
| ID del modelo | gemini-nano-banana-2.1 |
| Endpoint | POST /v1beta/interactions |
| Resoluciones | 1K (predeterminado), 2K, 4K |
| Entradas | Texto, imágenes (hasta 14 referencias), video |
| SDK de Python | pip install google-genai |
| SDK de JavaScript | npm install @google/genai |
Todos los ejemplos usan la API de Interacciones, que es la API usada por la documentación de generación de imágenes de Google para 2.1.
Paso 1: Obtén una clave de API de Gemini
- Abre Google AI Studio e inicia sesión.
- Ve a Obtener clave de API y crea una clave en un proyecto de Google Cloud.
- Activa la facturación para el proyecto. Google lista el nivel gratuito de Nano Banana 2.1 como “No disponible”, por lo que las llamadas a la API requieren un proyecto de pago.
- Exporta la clave en tu terminal:
export GEMINI_API_KEY="your-key-here"
Google vincula 2.1 al entorno de pruebas de AI Studio, útil para probar prompts, pero no ha publicado cuánto puede generar una cuenta gratuita allí. Consulta cómo usar Nano Banana 2.1 gratis para esa ruta y obtener una clave de API de Gemini para una configuración más detallada.
Paso 2: Genera tu primera imagen
curl
Envía un prompt de texto al endpoint de Interacciones:
curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-nano-banana-2.1",
"input": [
{
"type": "text",
"text": "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme"
}
]
}'
La respuesta es JSON. La imagen llega como datos base64 en un bloque de contenido de imagen, por lo que necesitas un SDK o un script para decodificarla y guardarla.
Python
Instala el SDK:
pip install google-genai
Genera y guarda la imagen:
from google import genai
import base64
client = genai.Client() # Lee GEMINI_API_KEY
interaction = client.interactions.create(
model="gemini-nano-banana-2.1",
input="Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme",
)
with open("generated_image.png", "wb") as f:
f.write(base64.b64decode(interaction.output_image.data))
interaction.output_image devuelve el último bloque de imagen generado. El campo data está codificado en base64, así que debes decodificarlo antes de escribir el archivo.
JavaScript
Instala el SDK:
npm install @google/genai
Genera y guarda la imagen:
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";
const ai = new GoogleGenAI({});
const interaction = await ai.interactions.create({
model: "gemini-nano-banana-2.1",
input: "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme",
});
const image = interaction.output_image;
if (image) {
fs.writeFileSync("nano-banana.png", Buffer.from(image.data, "base64"));
}
Los modelos de imagen Gemini 3 “piensan” antes de dibujar. El modelo puede producir hasta dos imágenes de pensamiento intermedias mientras planifica la composición. No se te cobra por ellas y este comportamiento no se puede desactivar mediante la API.
Paso 3: Define relación de aspecto, resolución y salida solo de imagen
Usa response_format para controlar la respuesta. Al establecer "type": "image", la API devuelve solo la imagen y omite texto conversacional. Esto reduce el tamaño de la respuesta y simplifica el procesamiento.
interaction = client.interactions.create(
model="gemini-nano-banana-2.1",
input="A product shot of a matte black coffee grinder on a marble counter",
response_format={
"type": "image",
"mime_type": "image/png",
"aspect_ratio": "16:9",
"image_size": "2K",
},
)
Puntos importantes:
-
image_sizeacepta1K,2Ky4K. UsaKmayúscula: valores como2kson rechazados. - Nano Banana 2.1 no ofrece un nivel de 512px. Ese nivel pertenece a Nano Banana 2.
- Las relaciones de aspecto admitidas incluyen
1:1,2:3,3:2,3:4,4:3,4:5,5:4,9:16,16:9,21:9,1:4,4:1,1:8y8:1. - Una imagen
16:9en 2K mide 2752x1536. En 4K mide 5504x3072. - Si necesitas texto e imagen, pasa una lista:
response_format=[
{"type": "text"},
{"type": "image"},
]
Paso 4: Edita una imagen existente
Envía la imagen original como un bloque image codificado en base64 junto con la instrucción de edición.
import base64
with open("living_room.png", "rb") as f:
image_b64 = base64.b64encode(f.read()).decode("utf-8")
interaction = client.interactions.create(
model="gemini-nano-banana-2.1",
input=[
{
"type": "text",
"text": (
"Using the provided image of a living room, change only the blue sofa "
"to be a vintage, brown leather chesterfield sofa. Keep the rest of "
"the room, including the pillows on the sofa and the lighting, unchanged."
),
},
{
"type": "image",
"data": image_b64,
"mime_type": "image/png",
},
],
)
Inpainting estilo máscara sin archivo de máscara
No existe una carga de máscara independiente. Defines la zona editable mediante texto.
Usando la imagen proporcionada, cambia solo el [elemento específico] a [nuevo elemento/descripción]. Mantén todo lo demás en la imagen exactamente igual, preservando el estilo, la iluminación y la composición originales.
Para reducir cambios no deseados:
- Nombra un único elemento.
- Describe el reemplazo de forma concreta.
- Indica explícitamente qué debe permanecer igual.
Por ejemplo, evita prompts vagos como “haz que el sofá sea más bonito”, ya que pueden provocar que el modelo redibuje gran parte de la habitación.
Paso 5: Itera con edición de múltiples turnos
La edición en múltiples turnos es la forma recomendada por Google para refinar una imagen. Pasa el id de la interacción anterior como previous_interaction_id y envía solamente el siguiente cambio.
interaction_2 = client.interactions.create(
model="gemini-nano-banana-2.1",
input="Update this infographic to be in Spanish. Do not change any other elements of the image.",
previous_interaction_id=interaction.id,
response_format={
"type": "image",
"mime_type": "image/png",
"aspect_ratio": "16:9",
"image_size": "2K",
},
)
Con REST, el mismo campo se envía en el cuerpo:
{
"previous_interaction_id": "<PREVIOUS_INTERACTION_ID>"
}
La consistencia mejorada de personajes de 2.1 es especialmente relevante aquí: un personaje o producto debería permanecer reconocible durante varias rondas de edición.
Paso 6: Combina hasta 14 imágenes de referencia
Agrega más bloques image a la lista input. Para 2.1, Google documenta hasta 10 imágenes de objetos de alta fidelidad y hasta 4 imágenes de personajes, con un máximo de 14 referencias.
interaction = client.interactions.create(
model="gemini-nano-banana-2.1",
input=[
{
"type": "text",
"text": "An office group photo of these people, they are making funny faces.",
},
{"type": "image", "data": person_1_b64, "mime_type": "image/png"},
{"type": "image", "data": person_2_b64, "mime_type": "image/png"},
{"type": "image", "data": person_3_b64, "mime_type": "image/png"},
],
response_format={
"type": "image",
"aspect_ratio": "5:4",
"image_size": "2K",
},
)
Las imágenes de referencia cuentan como tokens de entrada. La entrada de 2.1 cuesta tres veces más que la de Nano Banana 2, por lo que los flujos con muchas referencias reducen la diferencia de precio. Mide el uso antes de migrar.
Paso 7: Fundamenta imágenes con la Búsqueda de Google
Para imágenes basadas en datos actuales, como un mapa del tiempo o un evento reciente, agrega la herramienta de búsqueda.
interaction = client.interactions.create(
model="gemini-nano-banana-2.1",
input="A detailed painting of a Timareta butterfly resting on a flower",
tools=[
{
"type": "google_search",
"search_types": ["web_search", "image_search"],
}
],
)
Usar solo {"type": "google_search"} habilita la búsqueda web. Agregar image_search permite al modelo usar imágenes web como contexto visual; esta capacidad solo está disponible en 2.1 y Nano Banana 2.
La fundamentación no puede usar imágenes de personas reales obtenidas de la búsqueda. Si muestras resultados fundamentados a usuarios finales, Google exige mostrar las search_suggestions devueltas en el paso google_search_result.
Paso 8: Pruébalo en Apidog
Los scripts son útiles para automatizar generación. Para validar rápidamente que un prompt, una clave y un modelo siguen funcionando, guarda la solicitud en Apidog.
- Crea un entorno y agrega una variable
GEMINI_API_KEYcon tu clave. - Crea una solicitud:
POST https://generativelanguage.googleapis.com/v1beta/interactions
- Agrega el encabezado:
x-goog-api-key: {{GEMINI_API_KEY}}
- Pega un cuerpo JSON con
model,inputyresponse_format. - Envía la solicitud.
- Agrega un script post-respuesta con estas aserciones:
pm.test("status is 200", () => {
pm.response.to.have.status(200);
});
pm.test("response contains an image block", () => {
const steps = pm.response.json().steps || [];
const hasImage = steps.some(
(s) =>
s.type === "model_output" &&
(s.content || []).some((c) => c.type === "image" && c.data)
);
pm.expect(hasImage).to.be.true;
});
- Duplica la solicitud y cambia
modelagemini-3.1-flash-image. - Ejecuta ambas solicitudes con el mismo prompt.
Así tendrás una comparación lado a lado de Nano Banana 2.1 y Nano Banana 2, con estado, tiempo y tamaño de respuesta para cada ejecución. Para comparar más características, consulta Nano Banana 2.1 vs Nano Banana 2 vs Pro.
Lo que cuesta
Nivel de pago, según la página de precios de Google el 7 de octubre de 2026:
| Modelo | Entrada / 1M | Imagen 1K | Imagen 2K | Imagen 4K | Lote 1K |
|---|---|---|---|---|---|
| Nano Banana 2.1 | $1.50 | $0.0336 | $0.0504 | $0.0756 | $0.0168 |
| Nano Banana 2 | $0.50 | $0.067 | $0.101 | $0.151 | $0.034 |
| Nano Banana Pro | $2.00 | $0.134 | $0.134 | $0.24 | $0.067 |
La salida de imagen para 2.1 cuesta $30 por 1 millón de tokens:
- Una imagen 1K usa 1,120 tokens.
- Una imagen 2K usa 1,680 tokens.
- Una imagen 4K usa 2,520 tokens.
La salida de texto y “pensamiento” cuesta $7.50 por 1 millón de tokens. La fundamentación de búsqueda incluye 5,000 solicitudes gratuitas al mes, compartidas entre los modelos Gemini 3.x. Después cuesta $14 por cada 1,000 solicitudes.
Ejemplo práctico
Supón que generas 1,000 imágenes de productos en 2K desde prompts cortos de aproximadamente 100 tokens de entrada cada uno:
- Salida:
1,000 x $0.0504= $50.40 - Entrada:
100,000 tokens x $1.50 / 1M= $0.15 - Total aproximado: $50.55, más cualquier token de texto de “pensamiento”
El mismo trabajo en Nano Banana 2 cuesta aproximadamente $101.
Con la API por lotes, el precio de 2K para 2.1 baja a $0.0252. El costo de salida se reduce a $25.20 si puedes esperar. Los trabajos por lotes intercambian un tiempo de respuesta de hasta 24 horas por límites de tasa más altos.
Consulta el desglose de precios de la API de Nano Banana 2 para más detalles.
Errores comunes
Estos son comportamientos generales de la API de Gemini, no errores específicos de 2.1 documentados.
| Error | Causa probable | Solución |
|---|---|---|
400 INVALID_ARGUMENT |
image_size en minúsculas, relación no admitida o input mal formado |
Usa 2K, no 2k; verifica la lista de relaciones y la estructura del cuerpo |
403 PERMISSION_DENIED |
Clave incorrecta o proyecto sin facturación | Verifica la clave y habilita la facturación |
404 NOT_FOUND |
Error tipográfico en el ID del modelo | Usa exactamente gemini-nano-banana-2.1
|
429 RESOURCE_EXHAUSTED |
Límite de tasa alcanzado | Espera y reintenta, o usa lotes |
500 / 503
|
Problema temporal del servidor | Reintenta con retroceso exponencial |
200 pero sin imagen |
Prompt bloqueado o respuesta solo de texto | Establece "type": "image" y reformula el prompt |
Preguntas frecuentes
¿Existe un nivel gratuito para la API de Nano Banana 2.1?
No. Google lista el nivel gratuito de la API como “No disponible”. El entorno de pruebas de AI Studio está vinculado a 2.1, pero Google no ha publicado un límite gratuito para él.¿Es 2.1 un reemplazo directo para Nano Banana 2?
Mayormente. Cambia el ID del modelo agemini-nano-banana-2.1. Pierdes el nivel de 512px y los tokens de entrada cuestan más, por lo que debes verificar el costo de ediciones con muchas referencias.¿Las imágenes generadas llevan una marca de agua?
Sí. Todas las salidas incluyen una marca de agua SynthID.¿Puedo generar una imagen a partir de un video?
Sí. 2.1 acepta un bloque de entradavideo, como una URL de YouTube, junto con el prompt de texto.¿La guía anterior de la API de Nano Banana 2 sigue siendo aplicable?
Los conceptos siguen siendo aplicables. Consulta la guía de la API de Nano Banana 2 para el modelo anterior.
Resumen
Nano Banana 2.1 promete mejores imágenes a la mitad del precio por imagen de Nano Banana 2, manteniendo la misma estructura de la API de Interacciones. Obtén una clave con facturación, genera una imagen y guarda la solicitud en Apidog con aserciones de estado e imagen.
Después, duplica la solicitud con el ID del modelo anterior. En una tarde podrás comprobar si Nano Banana 2.1 justifica el cambio para tus prompts.
Top comments (0)