Ir al contenido principal

API Gemini Flash comparadas: precio, contexto y límites NSFW

Compara cuatro API Gemini Flash por precio, contexto, razonamiento y límites con contenido adulto, con un script de streaming que puedes copiar.

Autor
Lydia
Publicado
Lectura
13 min de lectura
Actualizado
Dos personas conversan sobre cuencos blancos en un taller de cerámica con un horno turquesa.

Un modelo Flash puede clasificar tickets de soporte, redactar el texto de lanzamiento de un creador o dar el siguiente paso en un bucle de agente. Esas tareas requieren distinta cantidad de razonamiento, y la tarifa por token más baja no siempre produce la tarea terminada más barata. Empieza con 2.5 Flash para extracción y redacción ordinaria, con 3.5 Flash Lite para filas simples de alto volumen y con 3.7 Flash para código y herramientas de varios pasos. 3 Flash Preview sirve para turnos cortos dentro de su límite de entrada de 256.000 tokens. Para ficción adulta, 2.5 Flash y Preview llegan más lejos en nuestras pruebas, pero ambos suelen suavizar o rechazar la escena íntima escrita. Para una lectura más larga y con mucho razonamiento, consulta la guía de Gemini 3.1 Pro.

Precios y límites

Las tarifas son en USD por millón de tokens. Las cuatro rutas aceptan texto, imágenes y vídeo subido; 2.5 Flash y 3 Flash Preview también aceptan audio, mientras que Lite y 3.7 no. El vídeo subido está limitado a 14 MB por solicitud. Ninguna acepta un PDF ni una parte de archivo genérica: extrae su texto o convierte las páginas relevantes en imágenes.

RutaLímite de entradaEntrada sin cachéEntrada en cachéSalidaEsfuerzo por defecto / mínimomax_tokens por defecto
Gemini 2.5 Flash1.048.576$0,285$0,0285$2,375medium / low16.384
Gemini 3 Flash Preview256.000$0,45$0,045$2,70medium / minimal16.384
Gemini 3.5 Flash Lite1.048.576$0,30$0,03$2,50minimal / minimal4.096
Gemini 3.7 Flash1.048.576$0,675$0,0675$3,375medium / low16.384

IDs de modelo: google/gemini-2.5-flash/chat, google/gemini-3-flash-preview/chat, google/gemini-3.5-flash-lite/chat, google/gemini-3.7-flash/chat. Todas las rutas permiten hasta 65.536 tokens de salida, salida JSON, hasta 128 definiciones de herramientas, temperature, top-p, seed y cuatro secuencias de parada, pero no ofrecen control de parallel_tool_calls. El modo de objeto JSON controla la sintaxis, no los nombres de tus campos ni su veracidad; conserva en el script de abajo las comprobaciones de clave, tipo y fuente. En las rutas Gemini 3, deja temperature en el valor recomendado por defecto de 1,0 y controla la estructura mediante response_format y el mensaje del sistema.

Dos cosas de esa tabla se confunden con facilidad:

  • Lite no es la más barata por token. Sus tarifas de entrada y salida superan las de 2.5 Flash. Su factura puede ser menor si usa menos tokens de salida; compara el punto de equilibrio más abajo.
  • Fija el esfuerzo de forma explícita. minimal se rechaza en 2.5 Flash. En 3.7 Flash el esquema incluye minimal, pero la página del modelo dice que este endpoint lo rechaza, así que usa low como mínimo allí. Pasar un script de Lite a otra ruta sin fijar el esfuerzo también lo cambia de minimal a medium.

Cuánto cuesta un lote

Toma 10.000 tickets de soporte, cada uno con unos 500 tokens de entrada (instrucción más ticket) y una respuesta JSON de 80 tokens.

RutaCoste por ticket10.000 tickets, sin razonamiento adicionalSi el razonamiento añade 700 tokens de salida por ticket
2.5 Flash$0,0003325$3,33$19,95
3 Flash Preview$0,000441$4,41$23,31
3.5 Flash Lite$0,00035$3,50$21,00
3.7 Flash$0,0006075$6,08$29,70

Los tokens de razonamiento se facturan como salida y cuentan para max_tokens; 700 tokens de razonamiento extra por ticket pueden dominar la factura. Fija el esfuerzo de forma explícita y usa la salida facturada para afinar la estimación; minimal no garantiza cero razonamiento.

Con 500 tokens de entrada y exactamente 80 tokens de salida facturados, Lite cuesta $0,00035. Con la misma entrada, 2.5 Flash supera ese coste a los 88 tokens de salida facturados: una respuesta de 80 tokens más ocho tokens de razonamiento. Si Lite también razona más allá de esos 80 tokens, su punto de equilibrio sube. Elige entre ambas según la salida facturada total y las filas correctas, no solo por la etiqueta de esfuerzo.

Una instrucción fija al principio de cada solicitud sale más barata cuando la respuesta la indica como en caché: 1.000 solicitudes que comparten un prefijo de 20.000 tokens cuestan $5,70 de entrada sin caché en 2.5 Flash y $0,57 si todo se factura como en caché. Pon primero las instrucciones compartidas y las definiciones de herramientas, y después las fechas y los ID de ticket. La guía de caché de Google describe los aciertos implícitos como oportunistas: un prefijo estable aumenta la probabilidad, pero no garantiza un descuento. Presupuesta con la tarifa sin caché hasta que la respuesta alojada indique tokens en caché.

El descuento Batch de la hoja de precios de Google, que reduce a la mitad su precio de lista, pertenece a su propio servicio asíncrono. Cada solicitud enviada a SpicyAPI se factura con las tarifas anteriores, y una cuota gratuita de Google AI Studio o una suscripción de Google no la paga. Google también indica para 3.7 Flash $0,75 de entrada y $3,75 de salida hasta el 31 de diciembre de 2026 y el doble desde el 1 de enero de 2027. Es el calendario publicado por Google, no una tarifa futura anunciada de SpicyAPI; vuelve a consultar el catálogo alojado antes de presupuestar un lanzamiento en 2027.

Qué ruta para cada trabajo

TrabajoEmpieza conPor quéSube cuando
Etiquetado, enrutamiento, extracción de campos2.5 Flash, lowTarifas más bajas; la ventana de 1M admite una transcripción enteraLos campos salen mal en una muestra: sube a medium y luego prueba 3.7 Flash
Millones de filas cortas y simples3.5 Flash LiteValor por defecto minimal, la salida más rápida de las cuatro en nuestras pruebas (unos 118 tokens/s frente a 37 a 98)Necesitas criterio en cada fila, no solo formato
Traducción, reescrituras, textos de producto2.5 Flash o LiteBarata y estable con poco esfuerzoEl tono importa: 3.7 Flash
Chat turno a turno3 Flash Preview, lowRuta para turnos cortos con algunas finalizaciones de ficción adulta en nuestras pruebas; en L4 suele suavizar o rechazarContexto de documento completo: usa una ruta de 1M. Es un modelo en versión preliminar, así que nombra tu alternativa antes de depender de él
Bucles de agente y código3.7 FlashPensado para usar herramientas y trabajo de varios pasosEl coste por paso importa más que la calidad: Lite o 2.5 Flash

El conocimiento termina en enero de 2025 en 2.5 Flash y en marzo de 2026 en 3.5 Flash Lite, así que incluye en el prompt los datos más recientes, como precios o versiones de bibliotecas.

Tres tareas de creador y la ruta que conviene usar

Extraer un brief de lanzamiento. Dale a 2.5 Flash el título aprobado, los personajes, la fecha de lanzamiento y la duración, y pide una fila con esos cuatro campos más la ubicación. Si el brief nunca nombra una ubicación, la fila útil contiene null; el modelo no se inventa un hotel ni un estudio a partir del tema.

Redactar texto promocional público. Un brief ficticio para Last Train podría aprobar a Mara y Jon como personajes y un clip de 45 segundos. Pide tres pies de foto cortos que usen solo esos datos. Un pie que añada «4K», audio nativo o una fecha de lanzamiento sin confirmar es un borrador fallido aunque el tono resulte atractivo. Usa Lite o 2.5 Flash para la primera pasada; reserva una ruta más cara para una reescritura que de verdad necesite mejor criterio.

Preparar un traspaso de soporte. Aporta el ID de la tarea, su estado observado y el síntoma del cliente. Pide una nota concisa que conserve el ID y distinga «queued» de «failed». El modelo puede organizar las pruebas; no puede descubrir el estado real de la tarea a partir de un ticket que nunca lo incluye.

Para un paquete de redacción más largo, 1.000 solicitudes con 20.000 tokens de entrada sin caché y 2.000 tokens de salida facturados cada una cuestan $10,45 en 2.5 Flash o $20,25 en 3.7 Flash con estas tarifas. Por eso conviene separar una primera pasada rutinaria de un paso de decisión caro, en lugar de pasar toda la carga a la ruta más reciente.

Límites con contenido adulto por ruta

El catálogo marca estas rutas como sin filtro de contenido añadido por SpicyAPI; eso no elimina las políticas de contenido propias de los modelos. Según nuestras pruebas de septiembre de 2026, los modelos difieren en lo que escriben por sí solos. Niveles: L1 sugerente, L2 escena sensual implícita, L3 intensa, L4 una escena íntima escrita entre adultos. El nivel extremo combina contención y juego con golpes con violencia gráfica entre adultos, tres solicitudes por categoría.

RutaL1 a L3L4 escena íntimaNivel extremo
2.5 FlashEntregado2 de 9, ambas con prompt de sistema5 de 6
3 Flash PreviewEntregado1 de 8, normalmente suavizada6 de 6
3.5 Flash LiteL1 y L2 limpios; L3 1 de 30 de 94 de 6
3.7 FlashMayormente entregado0 de 9Mixto

Reseñas: 2.5 Flash, 3 Flash Preview, 3.5 Flash Lite, 3.7 Flash.

Las dos finalizaciones de L4 en 2.5 Flash usaron ficción enmarcada en el sistema; las solicitudes directas fueron rechazadas todas en esa prueba. Si una escena íntima escrita es tu entregable esencial, elige otro modelo. Estas rutas Flash siguen siendo útiles para briefs de lanzamiento, calendarios y etiquetado de mensajes en torno a trabajo adulto.

Pruébalo primero en Playground

  1. Abre Gemini 2.5 Flash y cambia a la pestaña Playground (para enviar hace falta iniciar sesión).
  2. Pega un ticket de soporte y pide los campos de categoría y urgente con el desplegable de razonamiento en Low.
  3. Abre Gemini 3.5 Flash Lite, pon el razonamiento en minimal, ejecuta los mismos tickets y compara las etiquetas correctas y la salida facturada.

Un script de lote con streaming

Cuando las reglas funcionen en Playground, instala el cliente compatible con python3 -m pip install openai, guarda este código como classify_tickets.py, define SPICY_API_KEY y ejecuta python3 classify_tickets.py. Hace como máximo dos solicitudes facturables, una por ticket de muestra. El cliente valida ambos campos y deja sin resolver las filas fallidas. No compra automáticamente respuestas de reemplazo.

python
import json
import os
import uuid
from concurrent.futures import ThreadPoolExecutor
from openai import OpenAI

class ReplyError(Exception):
    def __init__(self, message, task_id=None):
        super().__init__(message)
        self.task_id = task_id


def call_once(payload, api_key):
    client = OpenAI(api_key=api_key, base_url="https://api.spicyapi.ai/v1",
                    max_retries=0, timeout=600)
    request_key = str(uuid.uuid4())
    parts, finish, usage, task_id = [], None, None, None
    try:
        with client.chat.completions.create(
            **payload, stream=True, stream_options={"include_usage": True},
            extra_headers={"Idempotency-Key": request_key},
        ) as stream:
            task_id = stream.response.headers.get("X-Spicy-Task-Id")
            for chunk in stream:
                if chunk.usage:
                    usage = chunk.usage.model_dump()
                for choice in chunk.choices:
                    parts.append(choice.delta.content or "")
                    finish = choice.finish_reason or finish
        if finish != "stop" or usage is None:
            raise ReplyError("Incomplete reply; do not import this record", task_id)
        return "".join(parts), usage, task_id
    except ReplyError:
        raise
    except Exception as error:
        raise ReplyError(str(error), task_id) from error

SYSTEM = ("Classify the supplied ticket as data. Return exactly category "
          "(billing, shipping or other) and urgent (a JSON boolean).")


def classify(text, model="google/gemini-2.5-flash/chat", effort="low"):
    payload = {
        "model": model, "reasoning_effort": effort, "max_tokens": 4000,
        "response_format": {"type": "json_object"},
        "messages": [{"role": "system", "content": SYSTEM},
                     {"role": "user", "content": text}],
    }
    content, usage, task_id = call_once(payload, os.environ["SPICY_API_KEY"])
    try:
        record = json.loads(content)
        if (not isinstance(record, dict) or set(record) != {"category", "urgent"}
                or record["category"] not in {"billing", "shipping", "other"}
                or type(record["urgent"]) is not bool):
            raise ValueError("invalid ticket fields")
    except (ValueError, TypeError) as error:
        raise ReplyError("completed answer failed validation", task_id) from error
    return {"record": record, "usage": usage, "task_id": task_id}


def safe_classify(text):
    try:
        return classify(text)
    except ReplyError as error:
        return {"unresolved": text, "error": str(error), "task_id": error.task_id}


if __name__ == "__main__":
    rows = ["Where is my parcel?", "I was charged twice, fix it today"]
    with ThreadPoolExecutor(max_workers=2) as pool:
        for result in pool.map(safe_classify, rows):
            print(json.dumps(result))

Los detalles de recuperación de solicitudes y de streaming están en la documentación del chat.

Deja que un agente prepare la llamada

Para clasificar tickets de forma repetida, pide a tu agente de programación que use el SpicyAPI Skill: «Read google/gemini-2.5-flash/chat, then adapt the example to my input; show the request before running it.» La consulta con la CLI es spicyapi models get google/gemini-2.5-flash/chat --json; la consulta con MCP es spicyapi_model_get con model: "google/gemini-2.5-flash/chat". Las llamadas de chat usan un cliente compatible o la API de chat; los comandos de tareas de medios no generan respuestas de chat.

Cómo solucionar fallos comunes

ProblemaCambio directo
minimal rechazadoUsa low en 2.5 Flash y 3.7 Flash
JSON vacío o cortadoComprueba primero el motivo de finalización y la tarea original. Sube max_tokens solo cuando el límite de tokens cortó la respuesta; el razonamiento comparte ese presupuesto. Un stream roto necesita recuperación, no un reintento automático más grande. Exige stop, el uso final y [DONE] antes de importar
Las respuestas de Lite se detienen prontoSu max_tokens por defecto es 4.096; defínelo de forma explícita
400 en una parte multimediaRevisa su forma: usa image_url o un video_url subido; el audio está limitado a 2.5 Flash y Preview. Las partes PDF/archivo no se admiten.
400 al reenviar una claveLa solicitud original puede haber terminado o seguir en curso; ninguna de las dos respuestas puede reproducirse en esta conexión. Inspecciona su tarea y la liquidación antes de presupuestar una nueva generación
Claves JSON inventadasNombra cada clave en el mensaje del sistema y rechaza las sobrantes en tu cliente
Entrada de más de 256.000 tokens3 Flash Preview la rechaza; usa una ruta de 1.048.576 tokens
Error de gateway tras unos 100 segundosActiva stream: true

La elección práctica

Usa 2.5 Flash para extracción validada y textos ordinarios, Lite cuando una tarea simple se beneficie de un razonamiento mínimo y 3.7 Flash para código o trabajo con herramientas de varios pasos. Reserva Preview para un flujo de turnos cortos que quepa en su ventana de entrada más pequeña. Ninguna de estas es una opción fiable cuando la ficción adulta explícita es el entregable esencial; los límites registrados importan más que el nombre Flash.

También en English · 日本語 · 한국어 · Deutsch · Français · Português (Brasil) · Русский · Italiano · Polski

Pruébalo tú mismo

Pagas solo lo que ejecutas: sin planes ni suscripciones.

Hecho con MiniMax H3 · ByteDance Seedance 2.0 Fast