Nodo HTTP Request en n8n: Guía Avanzada para Conectar Cualquier API

N8n HTTP Request nodo avanzado es uno de los usos más prácticos de n8n. El nodo HTTP Request de n8n es el más versátil de toda la plataforma. Si n8n no tiene un nodo nativo para el servicio que necesitas, HTTP Request te permite conectar con cualquier API REST del mundo. En esta guía avanzada aprenderás todas sus capacidades: autenticación, paginación, manejo de errores y técnicas para APIs complejas.

Configuración básica del nodo HTTP Request

Parámetros principales

Parámetro Descripción
Method GET, POST, PUT, PATCH, DELETE, HEAD
URL La URL del endpoint de la API
Authentication Tipo de autenticación
Headers Cabeceras HTTP personalizadas
Body Datos para POST/PUT (JSON, Form Data, Binary)
Response Formato esperado (JSON, Text, Binary, File)

Tu primera petición API

Para probar, usa la API pública de JSONPlaceholder:

  • Method: GET
  • URL: https://jsonplaceholder.typicode.com/posts/1

n8n hará la petición y el resultado estará disponible en $json.

Autenticación: todos los métodos disponibles

API Key en header

La más común:

  • Authentication: Header Auth
  • Name: Authorization
  • Value: Bearer {{ $credentials.apiKey }}

O con las credenciales configuradas en n8n:

  1. Crea una credential de tipo Header Auth
  2. En el nodo: AuthenticationPredefined Credential TypeHeader Auth

Basic Auth

Para APIs que usan usuario/contraseña:

  • Authentication: Basic Auth
  • n8n codifica automáticamente usuario:contraseña en base64

OAuth 2.0

Para servicios como Google, Microsoft o Salesforce:

  1. Crea credenciales de tipo OAuth2
  2. Configura Client ID, Client Secret, Auth URL, Token URL
  3. n8n gestiona automáticamente el refresh token

AWS Signature (AWS APIs)

Para APIs de Amazon Web Services:

  • Authentication: AWS
  • Configura Access Key ID, Secret Access Key, Region, Service

Enviar datos en el body

JSON body

Para crear un recurso en una API REST:

  • Method: POST
  • Body Content Type: JSON
  • Body:
{
  "title": "{{ $json.titulo }}",
  "content": "{{ $json.contenido }}",
  "status": "publish"
}

Form Data

Para APIs que esperan application/x-www-form-urlencoded:

  • Body Content Type: Form-Data/URLEncoded
  • Añade los campos con nombre y valor

Multipart/Form Data (subir archivos)

Para subir un archivo binario:

  • Body Content Type: Multipart Form Data
  • Añade un campo de tipo Binary
  • Selecciona la propiedad binaria del item anterior

Paginación: extraer todos los resultados de una API

La mayoría de APIs pagina los resultados. n8n puede manejar la paginación automáticamente:

Activar la paginación en n8n

En el nodo HTTP Request, en la sección Pagination:

Tipo 1: Offset/Limit (lo más común)

  • Pagination Mode: Update a Parameter in Each Request
  • Parameter Type: Query
  • Parameter Name: page o offset
  • Expression: {{ $pageCount }}
  • Complete When: Expression → {{ $response.data.length === 0 }}

Tipo 2: Cursor (APIs modernas)

  • Guarda el cursor del resultado anterior:
Complete When: {{ !$response.body.next_cursor }}
Parameter Value: {{ $response.body.next_cursor }}

Tipo 3: Link Header (GitHub, etc.)

  • n8n extrae el link "next" automáticamente con el modo Response Contains Next URL
  • Next URL Expression: {{ $response.headers.link?.match(/<([^>]+)>;\s*rel="next"/)?.[1] }}

Técnicas avanzadas

Reintentos automáticos

Para APIs con rate limiting:

  • En el nodo: desplega Settings
  • On Error: Retry on Fail
  • Retry on Fail: actívalo
  • Wait Between Retries: 1000ms (1 segundo)
  • Max Tries: 3

Headers dinámicos

Cuando los headers cambian por petición (ej: firma HMAC):

// Nodo Code antes del HTTP Request:
const timestamp = Date.now().toString();
const signature = generateHmac(secret, timestamp + body);
return [{ timestamp, signature }];

En el HTTP Request:

  • Header X-Timestamp: {{ $json.timestamp }}
  • Header X-Signature: {{ $json.signature }}

Procesar respuestas grandes

Para APIs que devuelven arrays de miles de elementos:

  1. Activa Always Output Data
  2. En Split Into Items: si la respuesta es un array, n8n crea un item por elemento
  3. Usa Split in Batches para procesarlos en grupos

Descargar archivos binarios

Para descargar PDFs, imágenes u otros archivos:

  • Response Format: File
  • Binary Property: data (el nombre que usarás en nodos siguientes)

El archivo estará disponible como datos binarios en $binary.data.

Ejemplo completo: API de Typeform con paginación

Obtener todas las respuestas de un formulario:

URL: https://api.typeform.com/forms/{{ $json.form_id }}/responses
Method: GET
Authentication: Header Auth (Bearer TOKEN)
Query Parameters:
  - page_size: 200

Pagination:
  Mode: Response Contains Next URL
  Next URL: {{ $response.body._links.next }}
  Complete When: !$response.body._links.next

Esto descarga automáticamente todas las páginas de respuestas.

Depurar peticiones HTTP

Cuando algo falla, activa Continue on Fail y comprueba el error:

// Después del HTTP Request, en un nodo IF:
$json.error !== undefined

Para ver la petición exacta que envía n8n, activa temporalmente el log de debug:

N8N_LOG_LEVEL=debug docker compose restart n8n

Verás en los logs la petición completa con headers y body.

Conclusión

El nodo HTTP Request de n8n es la navaja suiza de las integraciones. Con los métodos de autenticación disponibles, el soporte de paginación automática y la capacidad de enviar cualquier tipo de datos, puedes conectar n8n con prácticamente cualquier API del mercado. Dominar este nodo significa que n8n nunca te quedará pequeño por falta de integraciones nativas.