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.
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.
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.
Campo
Qué hace
model
Slug del modelo, como bytedance-seed/seedream-4.5
prompt
La descripción en texto de la imagen
aspect_ratio
Una relación normalizada, o auto para que el proveedor decida
resolution
Un nivel de 512 hasta 4K
size
Forma abreviada de píxeles explícitos, como 2048x2048
quality
auto, low, medium o high
output_format
png, jpeg, webp o svg
n
Número de imágenes, de 1 a 10
stream
Enví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.
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.
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:
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.
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.
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.
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.
Modos de generación que usarás
SillyTavern construye el prompt por ti a partir del chat, y el modo decide qué describe.
Modo
Comando de barra
Lo que obtienes
Tú mismo
you
Retrato de cuerpo entero del personaje actual
Tu cara
face
Retrato en primer plano del personaje actual
Yo
me
Retrato de tu persona de usuario
La historia completa
scene
Resumen visual de los eventos del chat
El último mensaje
last
Resumen visual del último mensaje
Último mensaje sin procesar
raw_last
Último mensaje enviado literalmente como prompt
Fondo
background
Fondo 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".
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.
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ébil
Prompt más sólido
a girl in a tavern
woman 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 room
small attic bedroom at dusk, low-angle shot, soft window light from the right, linen sheets, visible dust in the air
a battle scene
two 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.
Trabajo
Relación sugerida
Motivo
Retrato de personaje
2:3 o 3:4
Encaja en un marco alto y en un encuadre de rostro y hombros
Resumen de escena
3:2 o 16:9
Espacio para todo el escenario
Fondo de chat
16:9
Encaja con una pantalla ancha
Prueba rápida en Open WebUI
1:1
La forma más barata de confirmar que la ruta funciona
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ón
Por qué cuesta más
Qué hacer
Modo interactivo en SillyTavern
Los mensajes con un verbo como draw o send seguido de un sustantivo como photo o picture disparan un render
Desactívalo en chats casuales
n por encima de 1
Una petición puede devolver hasta 10 imágenes
Mantenlo en 1 mientras pruebas
Niveles de alta resolución
El campo resolution llega hasta 4K
Empieza con un nivel más bajo y súbelo para las versiones finales
Bucles de reintento
Los 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.
💡 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:
Error 404 o 405. La interfaz llama a una ruta que el servidor no tiene. Revisa la URL base y si necesitas la pasarela.
Error 401. El token es incorrecto, fue revocado o la pasarela no reenvía la cabecera de portador.
Modelo no encontrado. El slug tiene una errata o le falta un prefijo. Cópialo desde OpenRouter en lugar de escribirlo de memoria.
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.
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.
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:
Abre la página de un modelo en PicassoIA y pega tu prompt más sólido, de estilo cámara.
Pon la relación de aspecto que vas a usar en el chat, como 2:3 para retratos o 16:9 para fondos.
Genera dos o tres variaciones y anota qué frases cambiaron más el resultado.
Ejecuta el mismo prompt en un segundo modelo y quédate con el que mejor encaje con tu personaje.
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.