Skip to main content
Usa el mismo endpoint nativo de Gemini para generar con texto, editar referencias y continuar editando. Los ejemplos usan nano-banana-2.1; cambia el modelo en la URL o SDK para usar los otros dos.
BetterToken API no admite generación con búsqueda, incluidos Google Web Search e Image Search grounding. No añadas herramientas de búsqueda.

Datos de conexión

Crear una BetterToken API Key · catálogo de modelos · Presentación de Nano Banana
Estos tres modelos no admiten POST /v1/images/generations ni POST /v1/images/edits: devuelven 400 unsupported_endpoint. No reutilices los ejemplos GPT Image de multipart, image[] o data[].b64_json.

Genera la primera imagen

Define BETTERTOKEN_API_KEY en el terminal y ejecuta la solicitud. Espera a la generación y guarda todo el JSON en response.json.
Cambia 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 de generationConfig.imageConfig.

Proporciones admitidas por Google

Nano Banana 2 y 2.1 admiten 14 proporciones; Pro admite 10. Empieza con 1: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 en candidates[].content.parts[].inlineData. La estructura inferior usa el marcador BASE64_IMAGE_DATA. Recorre todas las partes finales y omite las marcadas thought: true.
Este Python guarda el resultado de curl. Elige extensión según mimeType; puede ser JPEG, no siempre .png.

Ejemplo completo con Python SDK

Usa Python 3.10 o posterior y google-genai==2.30.1. Instálalo en el entorno virtual del proyecto; versiones anteriores pueden omitir image_size.
El Base URL del SDK es la raíz del dominio, sin /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. Sustituye reference.jpg por tu archivo. Para PNG usa mime_type="image/png". Añade más referencias a parts del mismo mensaje de usuario.
En JSON nativo usa 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 el content de la respuesta, el orden de las partes y thoughtSignature. No reconstruyas el historial solo con la imagen ni inventes o alteres firmas.
Cada turno es otra solicitud de generación. Conserva 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 generateContent sin streaming. Esta integración no admite Files / fileData, Batch, Interactions ni streaming.
  • No se admiten responseMimeType, responseSchema ni formatos de compresión personalizados. En imageConfig, 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 a POST /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í.
Para el ejemplo Python OpenAI SDK instala openai==1.66.2 en el mismo entorno virtual:
Chat devuelve Markdown Data URL en 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.

Fuentes oficiales