Introducción
En n8n, la mayoría de los workflows se pueden construir usando nodos nativos — cada uno es un wrapper alrededor de un servicio específico. Pero la automatización empresarial real rara vez se mantiene dentro de límites ordenados. Te encontrarás con casos donde el servicio que necesitas no tiene un nodo dedicado, o su nodo carece de un endpoint específico, o necesitas transformar datos de una manera que los nodos integrados vuelven complicada. Ahí es cuando los nodos HTTP Request y los nodos Code toman el relevo. Esta lección se centra en esas dos herramientas: cómo llamar a cualquier API externa y cómo recurrir a JavaScript o Python personalizado cuando los nodos visuales de n8n no son suficientes.
Llamar a APIs externas con HTTP Request
El nodo HTTP Request es tu conector universal. Habla REST de forma nativa y funciona con cualquier servicio que exponga un endpoint HTTP — incluso aquellos que no tienen ningún nodo en n8n.
Una petición GET típica a una API pública se ve así en la configuración del nodo en n8n:
En la interfaz del nodo HTTP Request, estableces Method a GET, pegas la URL y añades los dos headers en Headers. El nodo devuelve el body de la respuesta como un objeto JSON al que los nodos downstream pueden hacer referencia usando expresiones de n8n como `$json.fieldName`.
Para peticiones POST que envían datos, cambia el Method, establece Send Body a JSON y proporciona el body. Por ejemplo, crear un registro en un CRM externo:
Las opciones de autenticación son importantes. Muchas APIs empresariales usan Bearer tokens, OAuth2 o API keys pasadas como parámetros de query. n8n soporta todas estas como tipos de credenciales, así que nunca codificas secretos directamente dentro del nodo — haz referencia a ellos a través del desplegable Credentials. Para servicios que usan un esquema de autenticación personalizado, establece Authentication a Generic Credential Type y proporciona nombres y valores de headers que hagan referencia a credenciales almacenadas.
Cuándo recurrir a los nodos Code
Los nodos integrados cubren el 80% común — bucles mediante SplitInBatches, mapeo de datos mediante nodos Set, lógica condicional mediante nodos IF. El 20% restante es donde los nodos Code se ganan su lugar: análisis complejo de strings, cálculos estadísticos, llamadas a librerías auxiliares, operaciones con fechas que el nodo Date de n8n maneja torpemente, o cualquier caso donde encadenar cinco nodos visuales sea más lento de construir y más difícil de leer que diez líneas de código.
El nodo Code tiene dos modos. El modo JavaScript se ejecuta de forma nativa dentro del runtime de Node.js de n8n y te da acceso completo a los paquetes npm ya instalados. El modo Python usa Pyodide o un worker de Python alojado, dependiendo de tu configuración de n8n.
Un caso de uso habitual: limpiar datos desordenados que llegan desde un webhook antes de guardarlos. Supón que un formulario envía nombres de países con mayúsculas/minúsculas mezcladas y espacios al final, y necesitas códigos de país ISO para una consulta externa:
El equivalente en modo Python se vería casi idéntico, intercambiando sintaxis para el acceso a diccionarios y las comprensiones de listas. El mismo nodo maneja ambos lenguajes — elige el que tu equipo lea con más comodidad.
Combinar HTTP Request y Code en un solo workflow
El verdadero poder aparece cuando los combinas. Un patrón habitual: un nodo Code transforma los datos entrantes, un nodo HTTP Request llama a un servicio externo para enriquecerlos, un segundo nodo Code post-procesa la respuesta, y el resultado fluye hacia tu destino final.
Flujo de ejemplo — enriquecimiento de facturas:
Luego un nodo HTTP Request llama a tu API de contabilidad en `GET /vendors/{vendor}` para obtener las condiciones de pago. Finalmente un nodo Code fusiona los resultados:
Ese tercer nodo también marca las facturas donde las condiciones de pago llegaron vacías — un pequeño fragmento de lógica de negocio que requeriría nodos IF extra si se hiciera de forma visual.
Errores comunes
Algunos errores que conviene señalar antes de que empieces a construir. Primero, nunca pongas credenciales directamente dentro del body del nodo o en la URL — usa siempre el sistema de credenciales de n8n, si no, los secretos terminan en las exportaciones del workflow y en el control de versiones. Segundo, el nodo HTTP Request tiene "JSON response" por defecto — si tu API devuelve XML o texto plano, cambia Response Format o verás errores de parseo. Tercero, los nodos Code procesan los items de un batch a la vez; si necesitas estado entre ejecuciones (contadores, cachés), para eso existe una base de datos o los static data de n8n, no un nodo Code. Cuarto, ten cuidado con `await` dentro del JavaScript del nodo Code — está soportado, pero requiere envolverlo en una función async, lo que confunde a muchos usuarios primerizos.
Resumen
Los nodos HTTP Request le dan a n8n una forma universal de hablar con cualquier API HTTP. Los nodos Code cubren los huecos donde la lógica visual se vuelve difícil de manejar o imposible. Los patrones anteriores — llamadas a APIs externas, transformación de datos y combinación de ambos — cubren aproximadamente nueve de cada diez integraciones personalizadas que construirás en producción. Domina estos dos tipos de nodos y dejarás de estar limitado a lo que los nodos específicos de cada servicio soporten por casualidad.
Punto de control de la lección
Repasa lo aprendido y recibe comentarios sobre tu trabajo.