El uso típico de n8n es encadenar «disparador—procesamiento—salida» en un flujo automático: resumir un correo entrante, clasificar un lead tras enviar un formulario, generar un texto cuando se añade una fila a una hoja de cálculo. Al conectar OpenAI, esos flujos ganan un paso de procesamiento en lenguaje natural, pero también aparecen nuevas preguntas: cómo gestionar la clave, qué poner en la Base URL y por qué el coste se dispara al ejecutar en lote.
Este artículo sigue el orden real de montaje: elegir la forma de conexión, configurar las credenciales, poner en marcha el primer flujo y, por último, tratar errores y costes. Los nombres de nodos y campos corresponden a la versión de n8n que estés usando.
Nota: n8n y OpenAI son marcas de sus respectivos titulares y este artículo no guarda relación de afiliación con esos fabricantes. Los nombres de modelo y los precios figuran en la página de precios de modelos.
1. Cómo elegir entre las dos formas de conexión
En n8n hay dos caminos habituales para conectar OpenAI:
| Método | Casos adecuados | Ventajas | Limitaciones |
|---|---|---|---|
| Nodo de OpenAI | Operaciones estándar: chat, resumen, clasificación, imágenes, transcripción | Parámetros visuales y credenciales centralizadas | Limitado a las operaciones que implementa el nodo |
| Nodo HTTP Request | Parámetros personalizados, peticiones en lote o campos especiales | Flexible; permite llamar directamente a /v1/chat/completions |
Hay que escribir el cuerpo, la autenticación y el tratamiento de errores |
Empieza con el nodo de OpenAI y cambia a HTTP Request solo si lo necesitas. No escribas la petición a mano desde el principio salvo que requieras parámetros que el nodo no expone.
2. Configura las credenciales y la Base URL
En la gestión de credenciales de n8n, crea una credencial de tipo OpenAI e introduce la API Key. Si vas a usar una pasarela personalizada, rellena también la Base URL en la misma credencial, normalmente hasta /v1. El nombre exacto del campo y si existe una casilla para la Base URL dependen de la versión.
Algunas recomendaciones prácticas:
- Guarda la clave solo en la credencial; no la escribas en un nodo Code ni en el JSON del flujo.
- Usa claves distintas para producción y pruebas, así puedes limitar el gasto y revocar cada una por separado.
- Si autoalojas n8n, protege
N8N_ENCRYPTION_KEY: si la cambias, las credenciales existentes dejarán de poder descifrarse. - No incluyas
/chat/completionsen la Base URL; el nodo añade la ruta por su cuenta. - Si compartes una instancia en equipo, separa credenciales por proyecto o usa claves virtuales de la pasarela.
Valida la configuración con una petición mínima:
curl https://tu-direccion-de-pasarela/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"tu-nombre-de-modelo","messages":[{"role":"user","content":"Responde solo OK"}]}'
3. Pon en marcha el primer flujo
Tomemos como ejemplo «generar un borrador de respuesta tras enviar un formulario»:
- Añade un nodo Form Trigger o Webhook para recibir el contenido del formulario.
- Añade un nodo OpenAI y elige la operación Message a Model.
- Selecciona la credencial y el modelo, y pasa los campos del formulario al prompt con expresiones, por ejemplo
{{ $json.message }}. - Añade un nodo Set para ordenar los campos devueltos por el modelo y conservar solo lo que necesitas después.
- Añade un nodo de Gmail, Slack o de hoja de cálculo para escribir el resultado donde corresponda.
- Ejecuta el flujo una vez a mano, revisa la entrada y la salida de cada nodo y luego actívalo.
Si usas el nodo HTTP Request, el cuerpo puede quedar así:
{
"model": "tu-nombre-de-modelo",
"messages": [
{"role": "system", "content": "Eres un asistente de atención al cliente y respondes solo con la información proporcionada."},
{"role": "user", "content": "{{ $json.message }}"}
],
"temperature": 0.3,
"max_tokens": 500
}
Fíjate en dos detalles: los nombres de campo de las expresiones deben coincidir con la salida real del paso anterior, y la cabecera debe ser Authorization: Bearer <key>; no pases la clave dentro del JSON.
4. Cuatro tipos de tareas que merece la pena automatizar
No todas las tareas justifican llamar a un modelo. Estas categorías suelen dar resultados claros:
- Procesamiento de texto: resumir correos, clasificar comentarios, etiquetar tickets y traducir entre idiomas.
- Extracción estructurada: obtener nombre, importe y fecha de consultas, currículos o facturas y devolver JSON.
- Generación de contenido: crear títulos, argumentos de venta o borradores de respuesta a partir de una fila de la hoja, con revisión humana después.
- Decisión y enrutamiento: dirigir cada caso al responsable adecuado según su urgencia.
En la extracción estructurada, define bien el formato de salida y añade después un nodo de validación. A veces el modelo añade explicaciones y rompe el JSON; indica «devuelve solo JSON, sin bloques de código Markdown» y prepara un reintento.
5. Tratamiento de errores: la parte que más se olvida
En un flujo sin supervisión, los fallos son lo normal. Configura cada punto en los ajustes del nodo:
- Retry On Fail: reintenta en 429, 5xx y timeouts de red, con un máximo de 2–3 intentos.
- Intervalo de reintento: usa retroceso exponencial para no aumentar la presión cuando hay límite de tasa.
- On Error: distingue entre «detener el flujo» y «continuar y registrar»; no dejes que un dato malo tumbe todo el lote.
- Timeout: fija un tiempo razonable para las peticiones HTTP; la generación de textos largos puede tener más margen, pero nunca esperes indefinidamente.
- Flujo de errores: envía los fallos a Slack o por correo con el ID de ejecución y un resumen de la entrada.
- Idempotencia: antes de reintentar, comprueba si el resultado ya se escribió en el sistema de destino para no duplicar mensajes ni asientos.
Errores habituales y orden de diagnóstico:
| Síntoma | Causa posible | Solución |
|---|---|---|
| 401 | Clave incorrecta o credencial no seleccionada | Vuelve a elegir la credencial y comprueba espacios sobrantes |
| 404 | Ruta de Base URL incorrecta | Confirma que llega a /v1 y no incluye el endpoint completo |
| 429 | Demasiada concurrencia o cuota superada | Reduce la concurrencia y activa reintentos con retroceso |
| 400 | Parámetro no admitido por el upstream | Elimina los campos incompatibles y revisa el nombre del modelo |
| Respuesta vacía | Salida truncada o filtro de contenido | Sube el límite de salida y revisa el prompt y la política de filtrado |
| Error de parseo JSON | El modelo añadió texto extra | Limita la salida a JSON y reintenta una vez si falla |
6. Control de costes: que los bucles no multipliquen la factura
El procesamiento por lotes de n8n convierte fácilmente una llamada en cientos. Para controlar el coste hay que empezar por la estructura del flujo:
| Medida | Cómo aplicarla | Efecto |
|---|---|---|
| Graduar modelos | Modelos pequeños para clasificar y limpiar; potentes para generar | Menor coste medio por llamada |
| Limitar la salida | Fijar un máximo de tokens y pedir respuestas breves | Evita respuestas largas que encarecen |
| Agrupar peticiones | Unir en una sola llamada los textos que se puedan procesar juntos | Menos peticiones y menos contexto repetido |
| Deduplicar antes | Saltar registros ya procesados con base de datos o caché | Evita llamadas repetidas |
| Recortar contexto | Enviar solo los campos necesarios; resumir o dividir los textos largos | Menos tokens de entrada |
| Registrar consumo | Guardar el campo usage de la respuesta y agregarlo por flujo | Detecta consumos anómalos |
Dos detalles más: cada llamada dentro de un nodo de bucle se factura por separado, así que agrupa cuando puedas; y al depurar no ejecutes sobre todos los datos, prueba primero con una muestra. El precio unitario exacto figura en precios de modelos.
7. Datos y permisos
Los flujos automáticos suelen tocar datos de clientes. Antes de conectar, define:
- qué campos pueden enviarse al modelo y cuáles deben anonimizarse o procesarse localmente;
- si el proveedor del modelo conserva las peticiones y si las usa para entrenar;
- que el historial de ejecución guarda entradas y salidas, y cuánto tiempo se conserva;
- que los permisos de exportación de credenciales y del JSON del flujo estén restringidos;
- que los flujos con contratos o datos de identidad incluyan un nodo de revisión humana.
Autoalojar n8n da más control sobre la ruta de los datos, pero no equivale automáticamente a cumplimiento; las condiciones de datos del proveedor upstream siguen necesitando revisión.
Preguntas frecuentes
¿El nodo OpenAI de n8n admite una Base URL personalizada?
En la mayoría de las versiones, la credencial de OpenAI incluye un campo Base URL para proxies o pasarelas propias. Si tu versión no lo tiene, usa el nodo HTTP Request para llamar directamente a /v1/chat/completions.
¿Por qué el flujo funciona en el editor pero falla con el disparador programado?
Suele deberse a diferencias de ámbito de las credenciales, variables de entorno o salida de red. Revisa primero el nodo y el código de error en el historial de ejecuciones y después confirma que la instancia que ejecuta la tarea programada puede alcanzar la dirección de destino.
¿Qué hay que vigilar al procesar cientos de registros?
Controla la concurrencia y el número de reintentos, asigna un identificador único a cada registro y guarda la entrada original cuando falle. Mejor ejecutar por lotes con una pausa entre ellos para no activar los límites de tasa.
¿Cómo se estima el coste de un flujo?
Registra los tokens de entrada y salida con el campo usage de la respuesta, multiplícalos por el precio del modelo y suma los reintentos y las peticiones fallidas. Ejecuta primero 20–50 muestras reales y calcula la media; es más fiable que una estimación a ojo.
¿Qué hago si el JSON del modelo es inestable?
Limita campos y tipos en el prompt y pide que no añada explicaciones. Añade después un nodo de validación JSON: si falla el parseo, reintenta una vez; si vuelve a fallar, deriva a revisión humana o registra el caso en una cola de excepciones.
Siguiente paso
Lo esencial al conectar OpenAI con n8n no es lo bonito que quede el flujo, sino la seguridad de las credenciales, el tratamiento de errores y los límites de coste. Prueba primero con un proceso real y poco tráfico, y ve ampliando poco a poco. Si necesitas una entrada compatible con OpenAI unificada y gestión de consumo, puedes registrarte en la pasarela de IA de ZSQH; los modelos y precios figuran en precios de modelos.
Lecturas relacionadas:
