AIREITER

Precios de la Batch API de OpenRouter: ¿merece la pena esperar por un 50 % de descuento?

Última actualización: 2026-09-23 00:39:42

Una API a mitad de precio resulta tentadora… hasta que la respuesta llega después de la fecha límite. La Batch API de OpenRouter encaja bien con trabajos de texto y embeddings que se ejecutan en segundo plano, pero no con llamadas interactivas: funciona de forma asíncrona, ofrece una ventana de finalización de 24 horas y su descuento principal no se aplica exactamente igual a todos los cargos.

La decisión de compra, en una línea

Usa la Batch API de OpenRouter para etiquetado, evaluaciones, embeddings, resúmenes acumulados y otros trabajos persistentes que puedan esperar. Mantén el chat orientado al usuario, los agentes de IDE, los flujos con búsqueda web y las peticiones multimodales en la API síncrona.

OpenRouter afirma que Batch suele ofrecer precios por token aproximadamente un 50 % más bajos en más de 70 modelos. La ventana formal de finalización es de 24 horas. En su anuncio de lanzamiento, OpenRouter informó de una mediana de 7 minutos y de que el 90 % de los trabajos terminaban en una hora durante la beta; son cifras observadas, no un SLA (anuncio oficial).

Qué cubre realmente el descuento del 50 %

El descuento se aplica principalmente al precio de los tokens del modelo. No supone una rebaja general para todos los componentes de la factura de inferencia.

Coste o controlTratamiento en Batch API
Tokens de entrada y salidaNormalmente, alrededor del 50 % del precio estándar del modelo
Llamadas de búsqueda webSe cobran a las tarifas estándar, según la guía oficial de inicio rápido
Almacenamiento en caché de promptsVaría según el modelo; consulta su página
Inferencia BYOKEl proveedor factura la inferencia directamente; OpenRouter informa por separado de su comisión BYOK
Precio exacto aplicableConfírmalo en la página concreta del modelo y en el uso de batches completados

El análisis de costes del batching de Will Cygan muestra un ejemplo con Claude Sonnet 5 que baja de 40 $ en modo síncrono a 20 $ en Batch para 10 millones de tokens de entrada y 2 millones de salida. Es un cálculo específico para ese modelo, no una tarifa universal.

«La ruta batch factura exactamente la mitad que la tarifa síncrona». — Will Cygan, Batching (LLM Inference)

No presupuestes el ahorro sin comprobar antes el proveedor y el modelo. Un usuario real, @fogelmania, informó de que un modelo en beta resultaba más caro que varias llamadas síncronas concurrentes porque su tráfico batch llegaba a otro proveedor: publicación de @fogelmania. El caso sirve como advertencia para revisar el coste final; no demuestra que todos los modelos funcionen así.

Un batch es un trabajo, no un endpoint más rápido

El anuncio de la Batch API de OpenRouter y su guía de inicio rápido describen un flujo basado en trabajos, no una respuesta inmediata. Cuando el envío se acepta correctamente, la API devuelve HTTP 202 Accepted y un identificador de batch con el estado validating. El ciclo normal es:

validating → in_progress → finalizing → completed

Los demás estados finales son failed, expired y cancelled. Tu worker debe guardar el identificador del batch y consultar su estado hasta alcanzar un estado terminal, en lugar de mantener abierta una petición interactiva.

OpenRouter informó de más de 230.000 batches durante la beta, con una mediana de 7 minutos y un 90 % completado en una hora. Una prueba de @luismmolina registró entre 5 y 8 minutos en un momento concreto del día del lanzamiento (publicación de la prueba); estas observaciones no sustituyen al límite de planificación de 24 horas.

La estructura de implementación que evita rehacerlo todo

La guía de inicio rápido actual utiliza un array JSON requests incluido en la petición, en lugar de subir un archivo JSONL. Cada fila necesita un custom_id único; ese identificador permite asociar cada respuesta o error completado con el registro original.

La estructura mínima de una petición es:

{
  "endpoint": "/v1/chat/completions",
  "model": "openai/gpt-4o",
  "requests": [
    {
      "custom_id": "ticket-0001",
      "body": {
        "messages": [
          {"role": "user", "content": "Classify this ticket: ..."}
        ]
      }
    }
  ]
}

La guía documenta POST https://openrouter.ai/api/beta/batches. El endpoint y el modelo de nivel superior se aplican a todo el batch, así que las distintas formas de API o los diferentes modelos requieren batches separados. Se admiten Chat Completions, Responses, Anthropic Messages y Embeddings.

Después de enviar la petición, consulta GET https://openrouter.ai/api/beta/batches/:id. Un batch completado devuelve los resultados en línea. Cada resultado contiene una response o un error, mientras que request_counts separa las filas totales, completadas y fallidas. Reintenta las filas fallidas usando su custom_id; no vuelvas a ejecutar automáticamente el batch entero.

Si el comportamiento del proveedor es importante por motivos de política de datos, BYOK o recursos accesibles mediante URL, fija el proveedor usando los controles documentados en lugar de confiar en el enrutamiento al proveedor más barato. Antes de desplegar, verifica que el modelo y el proveedor seleccionados ofrecen una ruta batch compatible.

Cuándo Batch deja de encajar

Las limitaciones de la guía de inicio rápido convierten Batch en un flujo centrado en texto. Las peticiones batch rechazan contenido de imagen, audio, vídeo y archivos. También se rechazan los recursos en Base64 y las URI data:; los recursos mediante URL compatibles dependen del proveedor. El plugin de búsqueda web propio de OpenRouter no está disponible en Batch.

Usa la API síncrona cuando haya un usuario esperando, el modelo tenga que analizar un archivo subido localmente, la petición necesite audio o vídeo, o la aplicación requiera un objetivo de respuesta de pocos segundos.

Ejemplo de costes: cuándo el ahorro es real

Imagina 10.000 tickets de soporte, cada uno con 1.000 tokens de entrada y 200 tokens de salida. En total son 10 millones de tokens de entrada y 2 millones de tokens de salida.

RutaEntradaSalidaTotal
Ejemplo síncrono10M × 2 $ = 20 $2M × 10 $ = 20 $40 $
Ejemplo con Batch10M × 1 $ = 10 $2M × 5 $ = 10 $20 $

El ahorro nominal es de 20 $ por ejecución, o 1.040 $ al año si el ejemplo se ejecuta semanalmente. El ahorro efectivo será menor cuando la recuperación, la monitorización o una alternativa síncrona de emergencia cuesten más que la diferencia nominal.

Incluye ese margen en la decisión. Si la fecha límite es estricta, compara la ventana de 24 horas con el tiempo restante para repetir el trabajo con un alcance reducido o recurrir a una alternativa síncrona. Un batch más barato por token, pero inutilizable después de la fecha límite, no resulta más barato para ese proceso de negocio.

Preguntas frecuentes

¿La Batch API de OpenRouter cuesta siempre la mitad?

No. OpenRouter describe el descuento como habitual y dependiente del modelo. Los cargos de búsqueda web mantienen las tarifas estándar, el almacenamiento en caché varía y BYOK separa los costes de inferencia del proveedor de las comisiones de OpenRouter.

¿Cuánto tarda un batch de OpenRouter?

La ventana de finalización admitida es de 24 horas. Los tiempos observados durante la beta aportan contexto, pero no constituyen un nivel de servicio garantizado.

¿Puedo subir un JSONL o mezclar modelos?

La guía de inicio rápido acepta un array JSON requests incluido en la petición. El modelo y la forma de API se aplican a todo el batch, por lo que necesitarás batches separados para distintos modelos o formatos de endpoint.

¿Puedo reintentar solo las filas fallidas?

Sí. Cuando un batch completado devuelve errores a nivel de fila, usa el custom_id de cada una para crear un batch de reintento más pequeño. Trata por separado los fallos, las expiraciones y las cancelaciones a nivel de batch, ya que los resultados podrían no estar disponibles.

¿Debería usar Batch o la API síncrona?

Elige Batch para trabajos en segundo plano que no sean urgentes. Elige la inferencia síncrona cuando el resultado forme parte de una interacción activa con el usuario o necesite modalidades y herramientas no compatibles.

La decisión práctica: usa Batch de forma selectiva

Antes de migrar un flujo, comprueba cinco puntos:

  1. La página del modelo muestra una ruta batch compatible y el proveedor esperado.
  2. El proceso de negocio puede asumir la ventana completa de 24 horas.
  3. Cada fila tiene un custom_id estable y un plan de reintento.
  4. La aplicación registra el uso y el coste reales de los trabajos completados.
  5. Hay un responsable y una política de limpieza para las entradas y los resultados.

La guía de inicio rápido de OpenRouter indica que las entradas y los resultados de los batches se conservan durante 30 días, salvo que se eliminen antes. Borra los batches en estado terminal cuando sus artefactos ya no sean necesarios.

La mejor primera migración es un corpus cerrado y revisable, no un flujo de cara al cliente en el que una respuesta tardía cueste más de lo que ahorra el descuento en tokens.