|

Solución de errores de API de imágenes de Nano Banana 2: 3 pasos para cambiar al formato correcto de invocación de generateContent

Nota del autor: Explicación detallada de la causa raíz del error "not supported model for image generation" en la API de generación de imágenes de Nano Banana 2, y cómo cambiar del formato OpenAI al formato nativo generateContent de Google para realizar la llamada correctamente.

¿Te encuentras con el error not supported model for image generation al usar Nano Banana 2 para generar imágenes? Este es uno de los problemas más comunes que enfrentan los desarrolladores al llamar a la API de imágenes de Gemini. Este artículo explica la causa raíz del error y la forma correcta de llamar a la API, para que puedas solucionar el problema rápidamente.

Valor principal: Después de leer este artículo, comprenderás las diferencias en las llamadas a la API entre los modelos de imágenes de Gemini y los modelos Imagen, dominarás el uso correcto del endpoint generateContent y resolverás el error en 3 pasos.

nano-banana-2-api-error-fix-generatecontent-guide-es 图示


Causa principal del error en la API de imágenes de Nano Banana 2

Punto clave Explicación Solución
Mensaje de error not supported model for image generation, only imagen models are supported Cambiar al endpoint generateContent
Causa raíz El endpoint en formato OpenAI solo admite modelos Imagen, no modelos de imágenes Gemini Usar el formato nativo de la API de Google
Endpoint correcto /v1beta/models/{MODEL}:generateContent Reemplazar /v1/images/generations
Parámetro obligatorio responseModalities: ["TEXT", "IMAGE"] Configurar en generationConfig

Explicación detallada del error en la API de imágenes de Nano Banana 2

Cuando usas el endpoint /v1/images/generations en formato compatible con OpenAI para llamar a Nano Banana 2 (gemini-3.1-flash-image-preview) o Nano Banana Pro (gemini-3-pro-image-preview), el sistema devuelve el siguiente error:

not supported model for image generation, only imagen models are supported
(request id: 20260315043447253411115cvUiXJMF)
new_api_error convert_request_failed, 500

La causa principal de este error es que los modelos de imágenes Gemini y los modelos Imagen son dos arquitecturas completamente diferentes.

  • Modelos Imagen (como imagen-3.0-generate-001) son modelos especializados en generación de imágenes, que usan los endpoints /v1/images/generations o :predict
  • Modelos de imágenes Gemini (serie Nano Banana) son modelos de lenguaje multimodal que pueden generar texto e imágenes simultáneamente, y deben usar el endpoint :generateContent

En pocas palabras, estás usando un "canal especializado en texto a imagen" para llamar a un "modelo de conversación multimodal", por lo que el formato no coincide y se produce el error.

nano-banana-2-api-error-fix-generatecontent-guide-es 图示


Formato correcto para llamar a la API de imágenes de Nano Banana 2

Comparación: Llamada incorrecta vs. correcta

Elemento de comparación ❌ Forma incorrecta (formato OpenAI) ✅ Forma correcta (formato generateContent)
Endpoint de la API /v1/images/generations /v1beta/models/{MODEL}:generateContent
Estructura de la solicitud Parámetros prompt + size + n Estructura contents + generationConfig
Formato de respuesta URL de la imagen Datos de imagen Base64 en línea
Modelos compatibles Serie DALL-E, Imagen Modelos de imagen Gemini (serie Nano Banana)
Contenido de salida Solo imagen Texto + imagen (salida multimodal)

Ejemplo de solicitud incorrecta para la API de imágenes de Nano Banana 2

A continuación, se muestra una forma de llamada que generará un error:

# ❌ Error: Usar el formato OpenAI para llamar a Nano Banana 2
curl -X POST https://api.apiyi.com/v1/images/generations \
  -H "Authorization: Bearer TU_CLAVE_API" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "prompt": "Un lindo gato naranja tomando una siesta al sol",
    "size": "1024x1024",
    "n": 1
  }'
# Retorna: not supported model for image generation

Ejemplo de solicitud correcta para la API de imágenes de Nano Banana 2

A continuación, se muestra la forma correcta de llamada usando el formato generateContent:

# ✅ Correcto: Usar el formato nativo generateContent de Google
curl -X POST https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
  -H "Authorization: Bearer TU_CLAVE_API" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [
        {"text": "Un lindo gato naranja tomando una siesta al sol"}
      ]
    }],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"]
    }
  }'

🎯 Consejo técnico: Al llamar a Nano Banana 2 a través de la plataforma APIYI apiyi.com, no necesitas configurar una cuenta de Google Cloud por separado. Puedes usar una clave API unificada para llamar directamente al endpoint generateContent.


Guía rápida para la API de imágenes de Nano Banana 2

3 pasos para corregir errores en la API de imágenes de Nano Banana 2

Paso 1: Cambiar el endpoint de la API

Cambia la URL de solicitud del formato OpenAI al formato generateContent:

# Endpoint incorrecto
https://api.apiyi.com/v1/images/generations

# Endpoint correcto (Nano Banana 2)
https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent

# Endpoint correcto (Nano Banana Pro)
https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent

Paso 2: Modificar la estructura del cuerpo de la solicitud

Cambia de los parámetros prompt + size de OpenAI a la estructura nativa de Google contents + generationConfig. Parámetros clave:

  • contents.parts.text: Texto descriptivo de la imagen
  • generationConfig.responseModalities: Debe establecerse en ["TEXT", "IMAGE"]

Paso 3: Procesar los datos de respuesta

La imagen devuelta por generateContent está codificada en Base64 como datos en línea, no como una URL. Necesitas extraer y decodificar la imagen desde la respuesta.

Ejemplo mínimo en Python

import requests
import base64

API_KEY = "TU_CLAVE_API"
BASE_URL = "https://api.apiyi.com"  # Interfaz unificada de APIYI

response = requests.post(
    f"{BASE_URL}/v1beta/models/gemini-3.1-flash-image-preview:generateContent",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "contents": [{"parts": [{"text": "Un lindo gato naranja tomando una siesta al sol"}]}],
        "generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}
    }
)

result = response.json()
for part in result["candidates"][0]["content"]["parts"]:
    if "inlineData" in part:
        img_data = base64.b64decode(part["inlineData"]["data"])
        with open("output.png", "wb") as f:
            f.write(img_data)
        print("Imagen guardada como output.png")
    elif "text" in part:
        print("Descripción del modelo:", part["text"])

Ver el código de implementación completo (incluye manejo de errores y configuración de relación de aspecto)
import requests
import base64
import os
from typing import Optional

def generate_image(
    prompt: str,
    model: str = "gemini-3.1-flash-image-preview",
    aspect_ratio: str = "1:1",
    output_path: str = "output.png",
    api_key: Optional[str] = None
) -> dict:
    """
    Genera una imagen usando el endpoint generateContent de Nano Banana 2

    Args:
        prompt: Descripción de la imagen
        model: Nombre del modelo
        aspect_ratio: Relación de aspecto (1:1, 16:9, 9:16, 4:3, 3:4)
        output_path: Ruta del archivo de salida
        api_key: Clave API

    Returns:
        Diccionario con la ruta del archivo y la descripción del modelo
    """
    api_key = api_key or os.getenv("APIYI_API_KEY")
    base_url = "https://api.apiyi.com"  # Interfaz unificada de APIYI

    response = requests.post(
        f"{base_url}/v1beta/models/{model}:generateContent",
        headers={
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        },
        json={
            "contents": [{"parts": [{"text": prompt}]}],
            "generationConfig": {
                "responseModalities": ["TEXT", "IMAGE"],
                "imageConfig": {"aspectRatio": aspect_ratio}
            }
        },
        timeout=60
    )

    if response.status_code != 200:
        raise Exception(f"Fallo en la solicitud a la API: {response.status_code} - {response.text}")

    result = response.json()
    candidates = result.get("candidates", [])
    if not candidates:
        raise Exception("No se devolvieron resultados válidos")

    output = {"text": "", "image_path": ""}
    for part in candidates[0]["content"]["parts"]:
        if "inlineData" in part:
            img_data = base64.b64decode(part["inlineData"]["data"])
            with open(output_path, "wb") as f:
                f.write(img_data)
            output["image_path"] = output_path
        elif "text" in part:
            output["text"] = part["text"]

    return output

# Ejemplo de uso
result = generate_image(
    prompt="Una pintura de paisaje al estilo de tinta china, con montañas lejanas envueltas en neblina",
    model="gemini-3.1-flash-image-preview",
    aspect_ratio="16:9",
    output_path="paisaje.png"
)
print(f"Imagen guardada: {result['image_path']}")
print(f"Descripción del modelo: {result['text']}")

Recomendación: Obtén tu clave API en APIYI apiyi.com. La plataforma ofrece créditos de prueba gratuitos y es compatible con las llamadas generateContent para los dos modelos de imagen Gemini: Nano Banana 2 y Nano Banana Pro.


Comparación de modelos de API de imágenes Nano Banana 2

Comprender las diferencias en las formas de invocar la API de los distintos modelos de generación de imágenes puede ayudarte a evitar errores de formato similares:

Modelo Código Endpoint de la API Formato de invocación Plataformas disponibles
Nano Banana 2 gemini-3.1-flash-image-preview :generateContent Formato nativo de Google APIYI y otras plataformas
Nano Banana Pro gemini-3-pro-image-preview :generateContent Formato nativo de Google APIYI y otras plataformas
Imagen 3 imagen-3.0-generate-001 /v1/images/generations o :predict Formato compatible con OpenAI APIYI y otras plataformas
DALL-E 3 dall-e-3 /v1/images/generations Formato OpenAI APIYI y otras plataformas

Explicación de los parámetros clave de la API de imágenes Nano Banana 2

nano-banana-2-api-error-fix-generatecontent-guide-es 图示

El endpoint generateContent admite parámetros ricos para la generación de imágenes:

Parámetro Descripción ¿Requerido? Valor de ejemplo
contents.parts.text Indicación de descripción de la imagen ✅ Requerido "Un gato naranja bajo el sol"
responseModalities Configuración de modalidad de respuesta ✅ Requerido ["TEXT", "IMAGE"]
imageConfig.aspectRatio Relación de aspecto de la imagen Opcional "1:1", "16:9", "9:16"
contents.parts.inlineData Imagen de referencia (imagen a imagen) Opcional Datos de imagen en Base64

💡 Nota importante: responseModalities debe contener tanto "TEXT" como "IMAGE". Configurar solo ["IMAGE"] hará que la solicitud falle. Esto se debe a que el modelo de imágenes Gemini es multimodal y siempre genera tanto una descripción de texto como una imagen.


Preguntas frecuentes

Q1: ¿Por qué Nano Banana 2 no se puede invocar con el formato OpenAI?

Nano Banana 2 (gemini-3.1-flash-image-preview) es un Modelo de Lenguaje Grande multimodal basado en Gemini. Su capacidad de generación de imágenes se implementa a través de una "conversación generativa", no de una "interfaz dedicada de texto a imagen". El endpoint /v1/images/generations del formato OpenAI está diseñado específicamente para modelos de generación de imágenes como DALL-E e Imagen, y no puede manejar la estructura de solicitud multimodal de los modelos Gemini. Al realizar la invocación del modelo a través de la plataforma APIYI (apiyi.com), es necesario seleccionar el formato de endpoint correspondiente según el tipo de modelo.

Q2: ¿Cuál es la diferencia entre las API de imágenes de Nano Banana 2 y Nano Banana Pro?

Ambos utilizan el endpoint generateContent y su formato de invocación es idéntico. Las principales diferencias son:

  • Nano Banana 2 (versión Flash): Velocidad de generación más rápida, aproximadamente 3-5 segundos, ideal para generación por lotes y prototipado rápido.
  • Nano Banana Pro: Calidad de imagen superior, con una precisión de renderizado de texto del 94%, ideal para diseños detallados y uso comercial.

En la plataforma APIYI (apiyi.com) ambos modelos están disponibles. Solo necesitas cambiar el nombre del modelo en la URL del endpoint.

Q3: ¿Cómo se procesan los datos de imagen devueltos por generateContent?

A diferencia del formato OpenAI que devuelve una URL de imagen, generateContent devuelve datos de imagen en línea codificados en Base64. Los pasos para procesarlos son:

  1. En la respuesta JSON, dentro de candidates[0].content.parts, encuentra la parte que contiene inlineData.
  2. Obtén la cadena Base64 del campo inlineData.data.
  3. Decodifica usando base64.b64decode() y guarda como archivo de imagen.
  4. El campo inlineData.mimeType te indicará el formato de la imagen (normalmente image/png).

Resumen

Los puntos clave sobre los errores de la API de imágenes de Nano Banana 2:

  1. Causa del error clara: Usar /v1/images/generations (formato OpenAI) para invocar el modelo de imágenes Gemini desencadena el error "not supported model".
  2. Cambiar a generateContent: El endpoint correcto es /v1beta/models/gemini-3.1-flash-image-preview:generateContent.
  3. Configurar responseModalities: Es obligatorio incluir ["TEXT", "IMAGE"] en generationConfig, de lo contrario no se generarán imágenes.

Cuando encuentres un error en la API de Nano Banana 2, la solución central se resume en una frase: cambia el endpoint de generación de imágenes de OpenAI por el endpoint nativo de Google generateContent.

Se recomienda probar rápidamente Nano Banana 2 y Nano Banana Pro a través de APIYI (apiyi.com). La plataforma ofrece créditos gratuitos, soporta la invocación directa en formato generateContent y no requiere configurar una cuenta de Google Cloud.

📚 Referencias

  1. Documentación de generación de imágenes de Google Gemini: Guía oficial de generación de imágenes de la API Gemini

    • Enlace: ai.google.dev/gemini-api/docs/image-generation
    • Descripción: Incluye especificaciones completas de parámetros y ejemplos para el endpoint generateContent
  2. Referencia de la API generateContent de Google: Documentación de la interfaz de generación de contenido de la API Gemini

    • Enlace: ai.google.dev/api/generate-content
    • Descripción: Explicación detallada de la estructura de solicitud y respuesta del endpoint generateContent
  3. Documentación de compatibilidad Google Gemini OpenAI: Explicación de compatibilidad entre Gemini y el formato OpenAI

    • Enlace: ai.google.dev/gemini-api/docs/openai
    • Descripción: Comprende qué funciones admiten el formato compatible con OpenAI y cuáles requieren el formato nativo

Autor: Equipo técnico de APIYI
Intercambio técnico: Bienvenidos a discutir problemas de invocación de la API de imágenes Nano Banana 2 en la sección de comentarios. Más recursos disponibles en el centro de documentación de APIYI docs.apiyi.com

Publicaciones Similares