DEV Community

Cover image for ¿Cómo usar la API de Gemini 3.7 Flash?
Roobia
Roobia

Posted on • Originally published at apidog.com

¿Cómo usar la API de Gemini 3.7 Flash?

Google lanzó Gemini 3.7 Flash el 13 de agosto de 2026, tres semanas después de 3.6 Flash, y lo presenta como “nuestro modelo de caballo de batalla más inteligente”. Para desarrolladores, los puntos clave son: las puntuaciones de codificación agéntica aumentaron notablemente —DeepSWE v1.1 pasó de 49.0% a 65.3%—, el precio de introducción es la mitad del precio de lanzamiento de 3.6 Flash y la superficie de la API no cambió. Si ya consume Gemini, solo debe cambiar el ID del modelo. Si aún no lo usa, este es un punto de entrada económico para un modelo de esta capacidad.

Prueba Apidog hoy

Esta guía muestra cómo obtener una clave de API, hacer una primera llamada con cURL, migrarla a Python y Node.js, transmitir respuestas, ajustar generationConfig y probar prompts en Apidog antes de integrarlos en su aplicación. Según el anuncio oficial, el modelo ofrece 1 millón de tokens de contexto, 64k tokens de salida, entrada multimodal, llamada a funciones, búsqueda como herramienta y uso de computadora.

Si construyó con la generación anterior, la forma de la solicitud se mantiene desde nuestra guía de la API de vista previa de Gemini 3 Flash. Este artículo se centra en el flujo de trabajo de 3.7.

En resumen

  • ID del modelo: gemini-3.7-flash
  • Endpoint síncrono:
  POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.7-flash:generateContent
Enter fullscreen mode Exit fullscreen mode
  • Autenticación: encabezado x-goog-api-key: <KEY>.
  • Precio de introducción: $0.75 por 1 millón de tokens de entrada y $3.75 por 1 millón de tokens de salida hasta el 31 de diciembre de 2026. Desde el 1 de enero de 2027, las tarifas pasan a $1.50 y $7.50.
  • Límites: 1 millón de tokens de entrada y 64k tokens de salida.
  • Entrada: texto, imagen, video, audio y PDF.
  • Salida: texto.
  • Streaming: use :streamGenerateContent?alt=sse.
  • Pruebas: valide las solicitudes en Apidog antes de escribir código de aplicación.

Para qué sirve Gemini 3.7 Flash

Los modelos Flash equilibran capacidad, velocidad y precio. Gemini 3.7 Flash reduce ese compromiso respecto a 3.6 Flash:

  • DeepSWE v1.1: 49.0% → 65.3%
  • FrontierCode 1.1 Main: 34.4% → 43.6%
  • AutomationBench: 17.0% → 30.4%
  • WebDev Arena Elo: 1538 → 1588

Gráfico mostrando las mejoras de Gemini 3.7 Flash sobre 3.6 Flash en varias métricas de rendimiento. DeepSWE V1.1 pasa de 49% a 65.3%, FrontierCode 1.1 Main de 34.4% a 43.6%, AutomationBench de 17% a 30.4%, y WebDev Arena Elo de 1538 a 1588.

Use 3.7 Flash especialmente cuando:

  • Ejecute bucles de agentes: AutomationBench casi duplicó su puntuación. Es adecuado para flujos de varios pasos y llamadas frecuentes a herramientas.
  • Genere o depure código: las mejoras en DeepSWE y FrontierCode apuntan a mejores resultados en corrección de errores y generación de código desplegable.
  • Procese documentos: GDP.pdf pasó de 22.0% a 34.0%, y PDF es un tipo de entrada de primera clase.
  • Necesite multimodalidad con presupuesto limitado: texto, imágenes, video, audio y PDF usan el mismo array contents.

Para más detalles sobre capacidades, puntuaciones y salvaguardas, consulte novedades de Gemini 3.7 Flash. Como contexto, Gemini 3.5 Pro sigue retrasado y Axios informa que Google está enviando actualizaciones de Flash antes de su próximo modelo insignia.

Obtener una clave de API

Tiene dos rutas.

AI Studio: ruta rápida

  1. Abra aistudio.google.com/apikey.
  2. Haga clic en Obtener clave de API.
  3. Seleccione un proyecto de Google Cloud.
  4. Copie la clave generada.

La clave funciona con generativelanguage.googleapis.com. Gemini 3.7 Flash está disponible en más de 160 países.

Vertex AI: ruta de producción

Si su infraestructura está en GCP, use Vertex AI:

  • Autenticación mediante OAuth, cuentas de servicio o tokens de corta duración.
  • Endpoint bajo aiplatform.googleapis.com.
  • IAM, registros de auditoría y endpoints regionales.
  • Mismo ID de modelo y mismo cuerpo de solicitud; cambian la URL y el mecanismo de autenticación.

Use AI Studio para prototipos y migre a Vertex antes de enviar tráfico de producción.

Exporte la clave como variable de entorno:

export GEMINI_API_KEY="AIza..."
Enter fullscreen mode Exit fullscreen mode

No codifique la clave en el repositorio ni la envíe como ?key= en producción. Las cadenas de consulta pueden quedar registradas en logs de servidores y proxies.

Endpoint y autenticación

Para una solicitud síncrona:

POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.7-flash:generateContent
Enter fullscreen mode Exit fullscreen mode

Para streaming mediante Server-Sent Events:

POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.7-flash:streamGenerateContent?alt=sse
Enter fullscreen mode Exit fullscreen mode

Envíe la clave en el encabezado:

x-goog-api-key: $GEMINI_API_KEY
Enter fullscreen mode Exit fullscreen mode

Primera solicitud con cURL

Pruebe primero una solicitud simple antes de integrar un SDK:

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.7-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Revisa este SQL en busca de riesgo de inyección: SELECT * FROM orders WHERE id = ${orderId}"
      }]
    }],
    "generationConfig": {
      "temperature": 0.3,
      "maxOutputTokens": 1024
    }
  }'
Enter fullscreen mode Exit fullscreen mode

La respuesta contiene:

  • candidates: candidatos generados.
  • candidates[].content.parts: texto o llamadas a funciones.
  • candidates[].finishReason: motivo de finalización.
  • usageMetadata: consumo de tokens.

Revise usageMetadata en cada llamada. Los tokens de salida cuestan cinco veces más que los tokens de entrada durante la tarifa introductoria.

Gemini usa contents, role y parts; no usa el formato messages de OpenAI. Si migra desde otro proveedor, adapte ese esquema antes de depurar prompts.

Inicio rápido con Python

Instale o actualice el SDK:

pip install --upgrade google-generativeai
Enter fullscreen mode Exit fullscreen mode

Cree una llamada con instrucción de sistema y configuración de generación:

import os
import google.generativeai as genai

genai.configure(api_key=os.environ["GEMINI_API_KEY"])

model = genai.GenerativeModel(
    model_name="gemini-3.7-flash",
    system_instruction=(
        "Eres un revisor de código. "
        "Marca los problemas como bloqueantes o no bloqueantes."
    ),
    generation_config={
        "temperature": 0.3,
        "max_output_tokens": 2048,
    },
)

response = model.generate_content(
    "Revisa esta ruta de Flask en busca de problemas de seguridad:\n\n"
    "@app.route('/user/<id>')\n"
    "def get_user(id):\n"
    "    return db.execute(f'SELECT * FROM users WHERE id = {id}')"
)

print(response.text)
print("tokens de entrada:", response.usage_metadata.prompt_token_count)
print("tokens de salida:", response.usage_metadata.candidates_token_count)
Enter fullscreen mode Exit fullscreen mode

Enviar un PDF

La entrada multimodal usa el mismo array de contenido. Para enviar un PDF, súbalo mediante la API de Archivos y páselo como parte de la solicitud:

invoice = genai.upload_file("q3-invoice.pdf")

response = model.generate_content([
    invoice,
    "Extrae el número de factura, el total y la fecha de vencimiento como JSON.",
])

print(response.text)
Enter fullscreen mode Exit fullscreen mode

Este patrón es útil para extracción estructurada de documentos complejos.

Inicio rápido con Node.js

Instale el SDK:

npm install @google/generative-ai
Enter fullscreen mode Exit fullscreen mode

Use un esquema de respuesta para obtener JSON analizable:

import { GoogleGenerativeAI } from "@google/generative-ai";

const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);

const model = genAI.getGenerativeModel({
  model: "gemini-3.7-flash",
  generationConfig: {
    temperature: 0.3,
    maxOutputTokens: 2048,
    responseMimeType: "application/json",
    responseSchema: {
      type: "object",
      properties: {
        severity: {
          type: "string",
          enum: ["blocking", "non-blocking"],
        },
        issues: {
          type: "array",
          items: { type: "string" },
        },
      },
      required: ["severity", "issues"],
    },
  },
});

const result = await model.generateContent(
  "Revisa este manejador de Express: " +
  "app.get('/search', (req, res) => res.send(eval(req.query.q)))"
);

console.log(JSON.parse(result.response.text()));
Enter fullscreen mode Exit fullscreen mode

responseSchema solo funciona junto con:

responseMimeType: "application/json"
Enter fullscreen mode Exit fullscreen mode

Use ambos para evitar que el código posterior tenga que procesar texto libre.

Streaming

Para interfaces de chat o respuestas visibles para el usuario, active streaming.

Python

stream = model.generate_content(
    "Explica el problema de consulta N+1 con un ejemplo ORM concreto.",
    stream=True,
)

for chunk in stream:
    if chunk.text:
        print(chunk.text, end="", flush=True)
Enter fullscreen mode Exit fullscreen mode

flush=True permite imprimir cada fragmento inmediatamente.

HTTP con SSE

Use:

:streamGenerateContent?alt=sse
Enter fullscreen mode Exit fullscreen mode

Cada línea data: contiene una carga parcial de candidates. El fragmento final incluye usageMetadata, por lo que el conteo de tokens solo es definitivo cuando termina la transmisión.

Ajustar generationConfig

Parámetro Tipo Uso práctico
maxOutputTokens entero Limita la salida hasta el máximo de 64k. Es la principal palanca de coste.
temperature número De 0 a 2. Use 0.2 a 0.4 para código y extracción; 0.7+ para contenido creativo.
responseMimeType cadena Use application/json para solicitar JSON.
responseSchema objeto Impone una estructura de salida junto con MIME JSON.
topP número Corte de muestreo de núcleo. Mantenga el valor predeterminado salvo que ajuste deliberadamente el muestreo.
stopSequences array Detiene la generación al encontrar delimitadores definidos.

No use 64k tokens de salida como valor predeterminado. Ajuste maxOutputTokens al tamaño real que necesita su caso de uso.

Para ejemplos de costes por carga de trabajo, consulte el desglose de precios de Gemini 3.7 Flash.

Además de generationConfig, el cuerpo admite:

  • tools
  • Declaraciones de funciones
  • Búsqueda como herramienta
  • Uso de computadora
  • toolConfig para forzar llamadas a herramientas

Para implementar estos flujos, consulte el tutorial de llamada a funciones de Gemini 3.7 Flash.

Pruebe el endpoint en Apidog antes de escribir código de aplicación

Iterar prompts dentro de un script suele ser lento: editar, ejecutar, revisar logs y repetir. Además, cada ejecución consume tokens. Un flujo más eficiente es validar primero la solicitud en un cliente API y portar al SDK solo cuando la respuesta sea correcta.

Configure Gemini en Apidog:

  1. Cree un proyecto e importe la especificación OpenAPI desde la documentación de la API de Google.
  2. Añada una variable de entorno llamada GEMINI_API_KEY.
  3. Asigne la variable al encabezado x-goog-api-key.
  4. Guarde el modelo en una variable, por ejemplo:
   GEMINI_MODEL=gemini-3.7-flash
Enter fullscreen mode Exit fullscreen mode
  1. Construya contents en el editor JSON y valide el cuerpo antes de enviarlo.
  2. Pruebe el endpoint SSE para ver los fragmentos de streaming en vivo.
  3. Guarde respuestas correctas como ejemplos para reutilizarlas en pruebas sin llamar continuamente a la API real.

También puede crear escenarios de prueba con aserciones sobre:

  • finishReason
  • Esquema de respuesta
  • usageMetadata
  • Conteos de tokens

Este enfoque convierte una prueba manual en una suite de regresión para cambios de prompt. Consulte la guía de pruebas de API para ingenieros de QA para aplicar el mismo patrón.

Manejo de errores y límites de velocidad

La API devuelve un objeto error de nivel superior con code, status y message.

Código Estado Significado Acción recomendada
400 INVALID_ARGUMENT Cuerpo mal formado, rol incorrecto o contents vacío. Valide el JSON antes de enviar la solicitud.
401 UNAUTHENTICATED Clave faltante o revocada. Exporte de nuevo GEMINI_API_KEY y confirme que sigue activa.
403 PERMISSION_DENIED El proyecto no tiene acceso o facturación. Revise permisos, proyecto y estado de facturación.
429 RESOURCE_EXHAUSTED Se alcanzó un límite de velocidad o cuota. Reintente con espera aleatoria, agrupe solicitudes o actualice el nivel.
500 INTERNAL Error transitorio del servidor. Reintente con retroceso exponencial.
503 UNAVAILABLE Servicio sobrecargado. Reintente después de unos segundos; en Vertex, pruebe otra región.

Implemente reintentos para errores 429 y 5xx:

import random
import time

RETRYABLE_STATUS_CODES = {429, 500, 503}

def retry_with_backoff(call, max_attempts=5):
    for attempt in range(max_attempts):
        try:
            return call()
        except Exception as error:
            status_code = getattr(error, "status_code", None)

            if status_code not in RETRYABLE_STATUS_CODES:
                raise

            if attempt == max_attempts - 1:
                raise

            delay = min(2 ** attempt, 30) + random.uniform(0, 1)
            time.sleep(delay)
Enter fullscreen mode Exit fullscreen mode

Mantenga además estas prácticas:

Preguntas frecuentes

¿Es Gemini 3.7 Flash de uso gratuito?

AI Studio ofrece un nivel gratuito con cuota diaria para prototipos. La tarifa de introducción pagada es de $0.75 por 1 millón de tokens de entrada hasta el 31 de diciembre de 2026.

Para conocer los niveles y sus límites, consulte la guía de acceso gratuito a la API de Gemini.

¿Cuál es la diferencia entre AI Studio y Vertex AI?

El modelo y el cuerpo de solicitud son los mismos.

  • AI Studio: clave de API y generativelanguage.googleapis.com.
  • Vertex AI: OAuth, aiplatform.googleapis.com, IAM, auditoría y endpoints regionales.

Empiece en AI Studio y migre a Vertex cuando tenga tráfico de producción.

¿Puedo enviar imágenes, audio y PDF?

Sí. Puede enviar texto, imagen, video, audio y PDF como partes del array contents, en línea como base64 o por referencia mediante la API de Archivos. La salida es texto.

¿Cuál es el tamaño de contexto y el límite de salida?

El modelo admite 1 millón de tokens de entrada y 64k de salida. Aunque la recuperación de contexto largo sea fiable, dividir entradas extensas puede reducir costes porque cada token de entrada se factura.

¿Debo actualizar desde Gemini 3.6 Flash?

Para agentes y cargas de trabajo de código, las mejoras de rendimiento justifican evaluar la actualización. El cambio básico es sustituir el ID del modelo.

Antes de enviar tráfico de producción, ejecute pruebas de regresión sobre sus prompts. Consulte la guía de migración de 3.6 a 3.7 Flash.

Dónde encaja 3.7 Flash en su pila

Gemini 3.7 Flash combina un precio de introducción inferior con mejoras en agentes, código y procesamiento documental. Una estrategia práctica es:

  1. Dirigir nuevas pruebas de agentes, código y extracción de documentos a gemini-3.7-flash.
  2. Limitar maxOutputTokens para controlar costes.
  3. Validar prompts y respuestas en un cliente API.
  4. Crear pruebas de regresión para finishReason, JSON estructurado y consumo de tokens.
  5. Mantener gemini-3.6-flash como valor de reversión mediante una variable de entorno.

Empiece con la solicitud cURL, valide el contrato de respuesta y luego porte la integración a Python o Node.js. Descargue Apidog para importar la especificación de Gemini, configurar la clave una vez y probar solicitudes síncronas, streaming y llamadas a herramientas desde un mismo espacio de trabajo.

Top comments (0)