nano-banana-2.1; cambia el modelo en la URL o SDK para usar los otros dos.
Datos de conexión
Crear una BetterToken API Key · catálogo de modelos · Presentación de Nano Banana
Genera la primera imagen
DefineBETTERTOKEN_API_KEY en el terminal y ejecuta la solicitud. Espera a la generación y guarda todo el JSON en response.json.
- macOS / Linux
- Windows PowerShell
imageSize a 2K o 4K para mayor resolución. Empieza con 1K, 1:1 y una imagen. No añadas reintentos automáticos con --retry.
Parámetros habituales
Para fotos de producto, describe el objeto, material, iluminación y fondo. Para carteles, indica el texto exacto y su disposición. Para editar, explica qué debe cambiar y qué debe mantenerse. HTTP nativo usa estos campos; Python SDK usa snake_case. Coloca los ajustes de imagen dentro degenerationConfig.imageConfig.
Proporciones admitidas por Google
Nano Banana 2 y 2.1 admiten 14 proporciones; Pro admite 10. Empieza con1:1 en la primera solicitud.
Referencia de proporciones y tamaños de Google
El máximo no garantiza una cantidad. Aunque pidas varias, el modelo puede devolver una. Para una cantidad fija, envía solicitudes separadas.
Lee y guarda la imagen
Las imágenes están encandidates[].content.parts[].inlineData. La estructura inferior usa el marcador BASE64_IMAGE_DATA. Recorre todas las partes finales y omite las marcadas thought: true.
mimeType; puede ser JPEG, no siempre .png.
Ejemplo completo con Python SDK
Usa Python 3.10 o posterior ygoogle-genai==2.30.1. Instálalo en el entorno virtual del proyecto; versiones anteriores pueden omitir image_size.
/v1 ni /v1beta. timeout está en milisegundos y attempts=1 desactiva reintentos. save_images guarda todas las imágenes finales.
Envía una referencia
Ejecuta después del ejemplo Python para enviar una nueva edición. Sustituyereference.jpg por tu archivo. Para PNG usa mime_type="image/png". Añade más referencias a parts del mismo mensaje de usuario.
inlineData: {"mimeType": "image/jpeg", "data": "BASE64_IMAGE_DATA"}. Codifica los bytes originales sin prefijo data:image/...;base64,. No uses multipart, Files ni fileData.
Continúa editando
Ejecuta después de una generación o edición correcta. Conserva todo elcontent de la respuesta, el orden de las partes y thoughtSignature. No reconstruyas el historial solo con la imagen ni inventes o alteres firmas.
history, añade la instrucción y luego el content devuelto. No uses previous_interaction_id de Interactions en este endpoint.
Compatibilidad de la API
- Usa
generateContentsin streaming. Esta integración no admite Files /fileData, Batch, Interactions ni streaming. - No se admiten
responseMimeType,responseSchemani formatos de compresión personalizados. EnimageConfig, usa solo los dos campos indicados arriba. - Omite
cachedContent, llamadas a funciones, ejecución de código, búsqueda de archivos, Maps, URL context y ajustes de entrada o generación de audio.
Si ya usas un cliente OpenAI Chat
Puedes llamar aPOST /v1/chat/completions con Base URL https://bettertoken.ai/v1. Para nuevas integraciones, referencias y edición por turnos, usa la API nativa de Gemini anterior. En Chat, omite n o usa el entero 1.
En HTTP coloca google.image_config en la raíz JSON. En Python OpenAI SDK usa extra_body, que el SDK combina con la raíz. No uses generationConfig aquí.
openai==1.66.2 en el mismo entorno virtual:
choices[0].message.content, no data[] de Images API. No reconstruyas firmas desde ese texto; usa edición nativa.
Errores habituales
La imagen llega en la respuesta actual. No hay recuperación en segundo plano ni consulta de tarea para este flujo. Guarda los resultados, permite suficiente tiempo en SDK y proxy y desactiva reintentos automáticos.

