Generación de imágenes con OpenRouter en Open WebUI y SillyTavern: qué funciona de verdad

OpenRouter incluye modelos de imagen de OpenAI, Google, ByteDance y Black Forest Labs, pero Open WebUI y SillyTavern se conectan a ellos de forma distinta. Consulta los ajustes exactos, la pasarela intermedia para Open WebUI, las opciones de origen y prefijo de SillyTavern, las trampas de costos y una breve lista de errores.

Generación de imágenes con OpenRouter en Open WebUI y SillyTavern: qué funciona de verdad
Cristian Da Conceicao
Fundador de Picasso IA

Ya pagas los modelos de chat a través de OpenRouter, así que enviar las peticiones de imagen con la misma cuenta parece una ganancia fácil. Sin una segunda suscripción, sin otro panel, con un único saldo que vigilar. El problema es que Open WebUI y SillyTavern llegan a OpenRouter de formas muy distintas. Open WebUI habla con una ruta de imágenes de estilo OpenAI, y la documentación que revisé nunca menciona a OpenRouter como opción. SillyTavern lista OpenRouter como fuente de imágenes lista para usar, pero dice poco sobre la configuración. Este artículo explica ambos caminos, señala los puntos en los que la documentación se queda en silencio y te ofrece una breve lista de comprobación para cuando un render llega en blanco.

Qué ofrece OpenRouter para imágenes

OpenRouter se sitúa delante de muchos proveedores, y su catálogo incluye ahora modelos de imagen de Google, OpenAI, Black Forest Labs, xAI, ByteDance, Microsoft, Recraft, Krea y Sourceful. Recargas un único saldo de créditos en lugar de abrir una cuenta en cada laboratorio, y cambias de modelo modificando una sola cadena.

Desarrollador en un escritorio de madera con dos monitores que muestran ventanas de chat desenfocadas bajo la luz cálida del atardecer

Cómo funciona el endpoint de imágenes

La documentación actual de OpenRouter describe una ruta de imágenes específica. Envías una petición POST a /api/v1/images con tu token de portador, y el cuerpo contiene los campos siguientes.

CampoQué hace
modelSlug del modelo, como bytedance-seed/seedream-4.5
promptLa descripción en texto de la imagen
aspect_ratioUna relación normalizada, o auto para que el proveedor decida
resolutionUn nivel de 512 hasta 4K
sizeForma abreviada de píxeles explícitos, como 2048x2048
qualityauto, low, medium o high
output_formatpng, jpeg, webp o svg
nNúmero de imágenes, de 1 a 10
streamEnvía vistas previas parciales como eventos enviados por el servidor

La respuesta coloca cada imagen en un array data como texto base64 dentro de b64_json, junto a un media_type como image/png y un bloque usage con recuento de tokens y costo. No recibes ningún enlace alojado. Todo lo que se sitúe entre OpenRouter y tu interfaz tiene que decodificar ese texto o guardarlo como archivo, y ese detalle explica varios de los errores que aparecen más adelante en este artículo.

Para trabajos de imagen a imagen, la misma ruta acepta input_references, que pueden ser direcciones HTTP(S) o URL de datos base64.

💡 Consejo: Los tutoriales antiguos describen la salida de imágenes a través de la ruta de chat con un parámetro modalities, usando ["image", "text"] para los modelos que también escriben texto y ["image"] para los modelos solo de imagen. Si un tutorial y la documentación actual no coinciden, confía en la documentación y en la página del modelo que estás llamando realmente.

Modelos que merece la pena probar

Empieza con una lista corta en lugar de recorrer todo el catálogo. Los ID siguientes aparecen en la documentación de OpenRouter o en ejemplos de pasarelas de la comunidad, y la columna de la derecha apunta a la misma familia de modelos en PicassoIA para que puedas probar los prompts primero.

ID del modelo en OpenRouterCreadorMisma familia en PicassoIA
openai/gpt-image-2OpenAIGPT Image 2
bytedance-seed/seedream-4.5ByteDanceSeedream 4.5
black-forest-labs/flux.2-proBlack Forest LabsFLUX.2 Pro
google/gemini-2.5-flash-imageGoogleGemini 2.5 Flash Image

El catálogo cambia con frecuencia. Antes de copiar cualquier ID, filtra la página de modelos de OpenRouter por salida de imagen y confirma el slug letra por letra.

Antes de conectar nada

Diez minutos de preparación ahorran una tarde de errores confusos. Las dos interfaces necesitan las mismas dos cosas: un token que puedas desechar y una idea clara de lo que cuesta un render.

Crea un token independiente

Genera una credencial nueva de OpenRouter usada solo para trabajo de imágenes. Si una interfaz la registra, un chat de rol entra en bucle o la pegas por accidente en una captura de pantalla, revocas un solo token y tu configuración de chat habitual sigue funcionando. Ponle el nombre de la interfaz, por ejemplo un token para Open WebUI y otro para SillyTavern, para que el registro de actividad te diga qué aplicación gastó cada cosa.

Manos escribiendo en un equipo portátil junto a una tarjeta de papel sencilla y un dispositivo de seguridad USB sobre un escritorio de madera

Revisa los créditos y la facturación

OpenRouter indica que la facturación de imágenes es de todo o nada. Una generación termina y se factura por completo, o falla y no se factura. Las vistas previas parciales entregadas durante una petición en streaming no generan cargos parciales. Es una buena noticia para los intentos fallidos, pero también significa que un bucle de renders exitosos consume el saldo a precio completo, así que mantén un saldo pequeño mientras pruebas.

Configuración de Open WebUI

Open WebUI es el más difícil de los dos, y la razón no está en tu configuración. Depende de qué forma de petición espera cada lado.

Dónde están los ajustes

Abre los ajustes de administrador y busca la sección Images. La documentación indica la ruta Settings, Admin, Experience, Images, y los nombres de los menús cambian entre versiones, así que busca "Images" si el tuyo es diferente. Pon Image Generation Engine en Default (Open AI). Verás estos campos:

  • API Base URL, la dirección a la que se envían las peticiones
  • API credential, donde va tu token
  • Model, un desplegable o un nombre escrito
  • Image Size, limitado a lo que permite el motor

Las listas de tamaños documentadas para el motor de OpenAI son 256x256, 512x512 y 1024x1024 para DALL·E 2, luego 1024x1024, 1792x1024 y 1024x1792 para DALL·E 3, y auto, 1024x1024, 1536x1024 y 1024x1536 para los modelos GPT-Image.

El problema de la ruta

Aquí es donde se atascan las configuraciones. El motor OpenAI de Open WebUI envía una petición de estilo OpenAI con campos como prompt, model, n, size, quality y un formato de respuesta. La ruta de imágenes documentada de OpenRouter es la suya propia, /api/v1/images, con campos distintos como aspect_ratio y resolution. Las páginas de Open WebUI que revisé describen OpenAI en sí, Azure OpenAI, un proxy de LiteLLM y un servicio de estilo Image Router. Ninguna menciona a OpenRouter.

⚠️ Atención: No pude confirmar que apuntar el motor de OpenAI directamente a OpenRouter funcione en todas las versiones. Trata la ruta directa como un experimento. Envía una imagen de prueba, lee el error exacto y solo entonces decide si necesitas una capa de traducción.

Tienes tres opciones realistas:

  1. Prueba la ruta directa. Introduce https://openrouter.ai/api/v1 como URL base, pega tu token, escribe a mano un ID de modelo y genera una imagen.
  2. Usa una pasarela de traducción. Un pequeño servicio acepta peticiones de imagen de estilo OpenAI y las reenvía a OpenRouter. La siguiente sección muestra una.
  3. Usa otro router de imágenes compatible con OpenAI. Open WebUI documenta este patrón para servicios que copian la sintaxis de OpenAI.

Usar una pasarela en Docker

Existe un proyecto de la comunidad en Docker Hub llamado OpenRouter Image Gateway, creado justo para este hueco. Según su descripción, expone POST /v1/images/generations, GET /v1/models y GET /health. Acepta parámetros de estilo OpenAI (prompt, model, n, size, quality, response_format), reenvía tu token de portador a OpenRouter, convierte los tamaños en píxeles a relaciones de aspecto de OpenRouter y devuelve las imágenes como b64_json o como URL.

Con la pasarela en marcha, los campos de Open WebUI quedan así:

Image Generation Engine: Default (Open AI)
API Base URL:  http://openrouter-image-gateway:8000/v1
API credential: <your OpenRouter token>
Model:         google/gemini-2.5-flash-image

Usa http://openrouter-image-gateway:8000/v1 cuando ambos contenedores compartan una red de Docker, y http://localhost:8000/v1 para una prueba local en la misma máquina.

⚠️ Atención: Es software de terceros, y verá tu token. Lee su código fuente o ejecútalo en una máquina que controles antes de confiarle una credencial con saldo real detrás. La descripción también menciona solo texto a imagen, así que no esperes que la edición de imágenes funcione a través de ella.

Mini PC compacto sobre una estantería de pino junto a un router y cables Ethernet enrollados, visto desde arriba

Elegir tamaños y modelos

Escribe tú mismo el nombre del modelo en lugar de usar el desplegable. Las propias instrucciones de Image Router de Open WebUI dicen que hay que hacer exactamente eso con proveedores que no son de OpenAI, porque el desplegable muestra nombres de OpenAI y nunca mostrará google/gemini-2.5-flash-image.

Para el tamaño, elige la opción horizontal más cercana a la forma que quieres y comprueba el resultado. Cuando hay una pasarela en medio, convierte tu elección de píxeles a la relación de aspecto más cercana, así que una petición de 1536x1024 puede devolver una imagen limpia de 3:2 en lugar de esos píxeles exactos. Para un chat está bien, pero comprueba antes de construir un flujo de trabajo alrededor de dimensiones exactas.

Configuración de SillyTavern

SillyTavern sigue el enfoque contrario. La generación de imágenes es una extensión integrada, y OpenRouter es una entrada más en su lista de fuentes.

Elige OpenRouter como fuente

La documentación oficial incluye OpenRouter como fuente en la nube junto a OpenAI, Black Forest Labs, FAL.AI, Google, x.AI, Stability AI y otras. Abre el panel de Extensions, despliega Image Generation, elige OpenRouter como fuente, introduce tu token y selecciona un modelo de imagen.

Ten en cuenta que la documentación no dedica a OpenRouter ninguna sección de configuración, a diferencia de fuentes como Stability AI. Las etiquetas y el orden de los campos pueden cambiar entre versiones, así que trata los pasos anteriores como un mapa y no como un guion.

Joven escribiendo una historia en un equipo portátil en la esquina de una cafetería con lluvia en la ventana

Modos de generación que usarás

SillyTavern construye el prompt por ti a partir del chat, y el modo decide qué describe.

ModoComando de barraLo que obtienes
Tú mismoyouRetrato de cuerpo entero del personaje actual
Tu carafaceRetrato en primer plano del personaje actual
YomeRetrato de tu persona de usuario
La historia completasceneResumen visual de los eventos del chat
El último mensajelastResumen visual del último mensaje
Último mensaje sin procesarraw_lastÚltimo mensaje enviado literalmente como prompt
FondobackgroundFondo del chat construido a partir del contexto de la historia

Puedes llegar a estos modos de tres formas: el elemento Image Generation del menú de la varita, el comando /sd seguido de un modo o de tu propio texto libre, o el icono del pincel en un mensaje concreto para el modo sin procesar. El comando también acepta argumentos con nombre, por ejemplo negative="blurry, extra fingers".

Cuatro amigos sentados alrededor de una mesa de roble jugando a un juego de rol de mesa con un equipo portátil y miniaturas

Los modos scene y last encajan bien en chats con mucha historia, donde una sola imagen puede resumir lo que acaba de pasar en la mesa.

Prefijos que mantienen a los personajes coherentes

Tres cuadros de texto deciden cuán estables se ven tus imágenes de un render a otro:

  • Common Prompt Prefix se añade antes de cada prompt y define el estilo general.
  • Character-Specific Prompt Prefix describe el aspecto de un personaje. Solo funciona en chats uno a uno, no en grupos.
  • Negative Prompt indica lo que no quieres ver.

Una combinación inicial que funciona es esta. Prefijo común: candid 35mm photograph, natural window light, fine film grain. Prefijo de personaje: woman in her thirties, freckles, loose auburn braid, denim jacket. Mantén el prefijo del personaje corto y físico, y deja que el prefijo de estilo describa la luz y el objetivo.

💡 Consejo: La lista de campos de OpenRouter que revisé no tiene un campo de prompt negativo, así que ese cuadro puede no hacer nada con esta fuente. Describe lo que quieres en términos positivos dentro del prompt principal.

Escritorio de ilustrador visto desde arriba con retratos impresos, lápices de colores y un cuaderno de bocetos

Prompts que funcionan en ambas

Con la interfaz que uses, el modelo del otro lado lee un único prompt de texto. Un poco de estructura mejora los resultados en ambas aplicaciones.

Escribe prompts fotográficos

Construye cada prompt con cinco partes: sujeto, escenario, luz, lente y textura. Los prompts derivados del chat en SillyTavern tienden a ser resúmenes de historia, que los modelos manejan mal, así que reescríbelos como una descripción de cámara cuando la imagen importe.

Prompt débilPrompt más sólido
a girl in a tavernwoman in a wool cloak at a candlelit tavern table, 35mm f/1.8, warm side light, wood grain and pewter cups in sharp focus
my roomsmall attic bedroom at dusk, low-angle shot, soft window light from the right, linen sheets, visible dust in the air
a battle scenetwo riders on a muddy road at dawn, 70mm lens, overcast light, wet leather and mud splashes, shallow depth of field

Si escribir esto a mano te parece lento, pide a un modelo de chat que haga la reescritura. Claude Sonnet 5 y Gemini 3.5 Flash convierten un resumen aproximado de una escena en una frase lista para cámara en unos segundos.

Ajusta la relación de aspecto al trabajo

Elige la forma antes de elegir el modelo. Una relación equivocada desperdicia un render.

TrabajoRelación sugeridaMotivo
Retrato de personaje2:3 o 3:4Encaja en un marco alto y en un encuadre de rostro y hombros
Resumen de escena3:2 o 16:9Espacio para todo el escenario
Fondo de chat16:9Encaja con una pantalla ancha
Prueba rápida en Open WebUI1:1La forma más barata de confirmar que la ruta funciona

Primer plano de un artista conceptual estudiando un monitor, iluminado suavemente desde una ventana lateral

Costos y límites que sorprenden

La mayoría de las facturas sorpresa vienen de los ajustes, no de los precios. La tabla recoge los sospechosos habituales.

SituaciónPor qué cuesta másQué hacer
Modo interactivo en SillyTavernLos mensajes con un verbo como draw o send seguido de un sustantivo como photo o picture disparan un renderDesactívalo en chats casuales
n por encima de 1Una petición puede devolver hasta 10 imágenesMantenlo en 1 mientras pruebas
Niveles de alta resoluciónEl campo resolution llega hasta 4KEmpieza con un nivel más bajo y súbelo para las versiones finales
Bucles de reintentoLos intentos fallidos no se facturan, pero los éxitos repetidos síPara tras dos o tres intentos y corrige el prompt

El modo interactivo de SillyTavern merece una segunda mirada. Vigila verbos de acción como send, make, draw, paint, render, imagine, create y mail, seguidos a pocos caracteres de palabras como pic, picture, image, drawing, painting, photo o photograph. Una línea de rol que por casualidad contiene "draw a picture" puede gastar créditos sin que pulses nada.

Vista cenital de un escritorio con calculadora, libreta, equipo portátil y café bajo una luz suave de ventana

💡 Consejo: Revisa tu página de actividad de OpenRouter después de los primeros diez renders. Compara el costo por imagen con lo que esperabas y ajusta el modelo y la resolución antes de una sesión larga.

Cómo arreglar errores comunes

Cuando una imagen falla, la causa suele ser una de cuatro cosas: la ruta, el token, el slug del modelo o el manejo del base64.

Imagen en blanco o aviso de error

Sigue esta lista de comprobación en orden:

  1. Error 404 o 405. La interfaz llama a una ruta que el servidor no tiene. Revisa la URL base y si necesitas la pasarela.
  2. Error 401. El token es incorrecto, fue revocado o la pasarela no reenvía la cabecera de portador.
  3. Modelo no encontrado. El slug tiene una errata o le falta un prefijo. Cópialo desde OpenRouter en lugar de escribirlo de memoria.
  4. El archivo se guarda pero no se abre. El texto base64 se guardó sin decodificar. Como OpenRouter devuelve b64_json, la capa intermedia debe convertirlo en un archivo de imagen o en una URL.
  5. No pasa nada. Abre la consola del navegador o el registro del servidor y lee la primera línea roja antes de cambiar los ajustes.

Cable Ethernet azul conectado a un puerto de un router gris con luces indicadoras desenfocadas detrás

Tamaño o relación devueltos incorrectos

OpenRouter piensa en relaciones de aspecto y niveles de resolución, mientras que Open WebUI piensa en píxeles. Una pasarela traduce entre ambos, y la traducción es aproximada. Si necesitas una forma exacta, llama a OpenRouter directamente con aspect_ratio y resolution, o recorta después. Cuando la imagen parezca estirada, comprueba si la interfaz fuerza una caja de visualización fija antes de culpar al modelo.

Prueba los prompts antes de gastar créditos

Cada render desperdiciado cuesta dinero real, así que afina los prompts donde iterar es barato. PicassoIA reúne GPT Image 2, Seedream 4.5, FLUX.2 Pro y Gemini 2.5 Flash Image en un solo lugar, para que compares el mismo prompt entre creadores antes de fijar uno en un prefijo de SillyTavern o en un valor por defecto de Open WebUI.

Esta es una rutina rápida que funciona:

  1. Abre la página de un modelo en PicassoIA y pega tu prompt más sólido, de estilo cámara.
  2. Pon la relación de aspecto que vas a usar en el chat, como 2:3 para retratos o 16:9 para fondos.
  3. Genera dos o tres variaciones y anota qué frases cambiaron más el resultado.
  4. Ejecuta el mismo prompt en un segundo modelo y quédate con el que mejor encaje con tu personaje.
  5. Copia la redacción ganadora en tu Common Prompt Prefix o en tu prompt de Open WebUI, y luego cambia a OpenRouter para la sesión larga.

¿Listo para probarlo? Abre PicassoIA, ejecuta tus tres prompts favoritos en dos modelos y mira cuál se gana un lugar en tu configuración.

Compartir este artículo

Elige tu idioma