Documentación: Nodo de Solicitud HTTP¶
Descripción General¶
El Nodo de Solicitud HTTP permite realizar peticiones HTTP/HTTPS a APIs externas, servicios web o cualquier endpoint REST desde tus automatizaciones. Este nodo soporta todos los métodos HTTP estándar y múltiples tipos de autenticación.
¿Cuándo usar este nodo?¶
Utiliza este nodo cuando necesites:
- Integrar con APIs de terceros (servicios externos, webhooks)
- Enviar datos a sistemas externos
- Consultar información de servicios web
- Activar acciones en plataformas externas (abrir puertas, encender luces)
- Sincronizar datos con otros sistemas
- Enviar comandos a dispositivos IoT
Configuración del Nodo¶
El nodo tiene dos pestañas de configuración: Data Configuration y Auth Configuration.

Pestaña 1: Data Configuration¶
Paso 1: URL del Endpoint¶
- En el campo "URL", ingresa la dirección completa del endpoint al que deseas hacer la petición
- Debe incluir el protocolo (
http://ohttps://) - Puede incluir parámetros de consulta (query parameters)
Ejemplos:
https://api.ejemplo.com/v1/usuarios
https://ejemplo.com/webhook?evento=alerta
http://192.168.1.100:8080/api/dispositivos
Note
Se recomienda usar https:// para conexiones seguras cuando sea posible.
Paso 2: Método HTTP¶
- En el campo "Method", selecciona o ingresa el método HTTP a usar
- Métodos comunes:
- GET - Obtener información (consultas, lecturas)
- POST - Crear recursos, enviar datos
- PUT - Actualizar recursos completos
- PATCH - Actualizar recursos parcialmente
- DELETE - Eliminar recursos
- HEAD - Obtener solo encabezados
- OPTIONS - Consultar métodos soportados
Note
El método predeterminado es GET. Asegúrate de usar el método correcto según la documentación de la API.
Paso 3: Headers (Encabezados)¶
- En el campo "Headers", ingresa los encabezados HTTP en formato JSON
- Los encabezados son opcionales pero comúnmente necesarios
- Encabezados comunes:
Content-Type- Tipo de contenido del bodyAccept- Tipo de respuesta esperadaUser-Agent- Identificador del cliente
Ejemplo:
{
"Content-Type": "application/json",
"Accept": "application/json",
"User-Agent": "Netsocs-Automation/1.0"
}
Para tipos de contenido específicos:
{
"Content-Type": "application/x-www-form-urlencoded"
}
Note
Si dejas este campo vacío, se usarán los encabezados predeterminados. Los encabezados de autenticación se agregan automáticamente según la configuración en la pestaña Auth.
Paso 4: Body (Cuerpo de la Petición)¶
- En el campo "Body", ingresa el contenido que deseas enviar
- Solo aplica para métodos: POST, PUT, PATCH
- El formato debe coincidir con el
Content-Typeespecificado en Headers
Ejemplo con JSON:
{
"nombre": "Juan Pérez",
"email": "juan@ejemplo.com",
"evento": "acceso_concedido",
"timestamp": "2026-01-28T14:30:45Z"
}
Ejemplo con form-urlencoded:
nombre=Juan+Pérez&email=juan@ejemplo.com&evento=acceso_concedido
Ejemplo con texto plano:
Alerta: Movimiento detectado en zona restringida
Note
Puedes usar variables en el body: {"usuario": "{{userName}}", "evento": "{{eventType}}"}
Pestaña 2: Auth Configuration¶
La pestaña de autenticación te permite configurar credenciales para acceder a APIs protegidas. Hay tres tipos de autenticación disponibles:
Opción 1: Basic Auth (Autenticación Básica)¶

Usa esta opción cuando la API requiera usuario y contraseña en formato Basic Authentication.
Configuración:
- Selecciona "Basic Auth" en el campo "Auth Type"
- Nombre de usuario: Ingresa el usuario proporcionado por la API
- Contraseña: Ingresa la contraseña (el campo está oculto por seguridad)
Cuándo usar:
- APIs que requieren usuario/contraseña tradicional
- Sistemas legacy que usan autenticación básica HTTP
- Dispositivos IoT con autenticación simple
Ejemplo de configuración:
{
"authType": "basic",
"authUsername": "admin",
"authPassword": "mi_contraseña_segura"
}
Note
Las credenciales se codifican automáticamente en Base64 y se envían en el header Authorization: Basic <credenciales>.
Opción 2: Bearer Token¶

Usa esta opción cuando la API requiera un token de portador (Bearer Token), común en APIs modernas con OAuth 2.0.
Configuración:
- Selecciona "Bearer Token" en el campo "Auth Type"
- Bearer Token: Ingresa el token proporcionado por la API (el campo está oculto por seguridad)
Cuándo usar:
- APIs con OAuth 2.0
- Servicios que proporcionan JWT tokens
- Plataformas cloud modernas (AWS, Azure, GCP)
- APIs de redes sociales (Twitter, Facebook, etc.)
Ejemplo de configuración:
{
"authType": "bearer",
"authToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Dónde obtener el token:
- Generalmente se obtiene a través de un endpoint de login/autenticación
- Puede ser un token JWT (JSON Web Token)
- Algunos servicios proporcionan tokens de larga duración en su panel de administración
Note
El token se envía automáticamente en el header Authorization: Bearer <token>.
Opción 3: API Key¶

Usa esta opción cuando la API requiera una clave de API en un header personalizado.
Configuración:
- Selecciona "API Key" en el campo "Auth Type"
- API Key Name: Nombre del header donde se enviará la clave (ejemplo:
X-API-Key,api_key,apikey) - API Key Value: El valor de la clave API proporcionada por el servicio (el campo está oculto por seguridad)
Cuándo usar:
- Servicios que usan claves API simples
- APIs públicas con autenticación por clave
- Servicios meteorológicos, mapas, traducción, etc.
Ejemplos de nombres comunes:
X-API-Keyapi_keyapikeyX-Api-TokenAuthorization(en algunos casos)
Ejemplo de configuración:
{
"authType": "apikey",
"authUsername": "X-API-Key",
"authPassword": "sk_test_abc123xyz789..."
}
Note
El sistema agrega automáticamente el header con el nombre y valor especificados: <API-Key-Name>: <API-Key-Value>.
Estructura JSON Completa¶
{
"url": "https://api.ejemplo.com/v1/eventos",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json"
},
"body": "{\"evento\": \"alerta\", \"mensaje\": \"Movimiento detectado\"}",
"authType": "bearer",
"authToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Campos Requeridos¶
url- URL del endpoint (debe incluir protocolo)method- Método HTTP (GET, POST, PUT, PATCH, DELETE, etc.)
Campos Opcionales¶
headers- Objeto JSON con encabezados personalizadosbody- Contenido de la petición (para POST, PUT, PATCH)authType- Tipo de autenticación:basic,bearer, oapikeyauthUsername- Usuario (Basic Auth) o nombre de API KeyauthPassword- Contraseña (Basic Auth) o valor de API KeyauthToken- Token (Bearer Token)
Ejemplos de Uso¶
Ejemplo 1: GET Simple sin Autenticación¶
Caso: Consultar información pública de una API
Configuración:
- URL:
https://api.openweathermap.org/data/2.5/weather?q=Madrid&appid=API_KEY - Method:
GET - Headers:
{} - Auth: Ninguna (API Key en URL)
JSON:
{
"url": "https://api.openweathermap.org/data/2.5/weather?q=Madrid&appid=abc123",
"method": "GET",
"headers": {},
"body": ""
}
Ejemplo 2: POST con Basic Auth¶
Caso: Crear un usuario en un sistema con autenticación básica
Configuración:
- URL:
https://sistema.ejemplo.com/api/usuarios - Method:
POST - Headers:
{"Content-Type": "application/json"} - Body: Datos del usuario
- Auth: Basic Auth (admin / contraseña123)
JSON:
{
"url": "https://sistema.ejemplo.com/api/usuarios",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": "{\"nombre\": \"Juan Pérez\", \"email\": \"juan@ejemplo.com\"}",
"authType": "basic",
"authUsername": "admin",
"authPassword": "contraseña123"
}
Ejemplo 3: POST con Bearer Token¶
Caso: Enviar alerta a Slack
Configuración:
- URL:
https://slack.com/api/chat.postMessage - Method:
POST - Headers:
{"Content-Type": "application/json"} - Body: Mensaje de Slack
- Auth: Bearer Token
JSON:
{
"url": "https://slack.com/api/chat.postMessage",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": "{\"channel\": \"#alertas\", \"text\": \"Movimiento detectado en Entrada Principal\"}",
"authType": "bearer",
"authToken": "xoxb-1234567890-1234567890123-abcdefghijklmnopqrstuvwx"
}
Ejemplo 4: GET con API Key¶
Caso: Consultar datos de una API con clave
Configuración:
- URL:
https://api.servicio.com/v1/datos - Method:
GET - Auth: API Key (X-API-Key)
JSON:
{
"url": "https://api.servicio.com/v1/datos",
"method": "GET",
"headers": {},
"body": "",
"authType": "apikey",
"authUsername": "X-API-Key",
"authPassword": "sk_live_abc123xyz789def456ghi012"
}
Ejemplo 5: Controlar Dispositivo IoT¶
Caso: Abrir una puerta mediante API REST del dispositivo
Configuración:
- URL:
http://192.168.1.50/api/door/open - Method:
POST - Headers:
{"Content-Type": "application/json"} - Body: Comando
- Auth: Basic Auth
JSON:
{
"url": "http://192.168.1.50/api/door/open",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": "{\"duration\": 5, \"reason\": \"acceso_autorizado\"}",
"authType": "basic",
"authUsername": "admin",
"authPassword": "dispositivo123"
}
Ejemplo 6: Webhook con Variables¶
Caso: Enviar evento con datos dinámicos
Configuración:
- URL:
https://webhook.ejemplo.com/eventos - Method:
POST - Body: Datos con variables de la automatización
JSON:
{
"url": "https://webhook.ejemplo.com/eventos",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": "{\"evento\": \"{{eventType}}\", \"ubicacion\": \"{{location}}\", \"usuario\": \"{{userName}}\", \"timestamp\": \"{{timestamp}}\"}"
}
Respuestas HTTP¶
El nodo captura la respuesta del servidor y la hace disponible para nodos posteriores en la automatización.
Códigos de Estado Comunes¶
| Código | Significado | Descripción |
|---|---|---|
| 200 | OK | Petición exitosa |
| 201 | Created | Recurso creado exitosamente |
| 204 | No Content | Petición exitosa sin contenido en respuesta |
| 400 | Bad Request | Error en la petición (datos inválidos) |
| 401 | Unauthorized | Autenticación requerida o inválida |
| 403 | Forbidden | Sin permisos para acceder |
| 404 | Not Found | Recurso no encontrado |
| 429 | Too Many Requests | Límite de peticiones excedido |
| 500 | Internal Server Error | Error en el servidor |
| 503 | Service Unavailable | Servicio no disponible |
Manejo de Respuestas¶
La respuesta incluye:
- Status Code: Código de estado HTTP
- Body: Cuerpo de la respuesta (generalmente JSON)
- Headers: Encabezados de respuesta
Ejemplo de respuesta exitosa:
{
"statusCode": 200,
"body": {
"success": true,
"message": "Usuario creado",
"id": "12345"
},
"headers": {
"content-type": "application/json"
}
}
Solución de Problemas¶
Error: "Cannot connect to URL"¶
Causa: No se puede establecer conexión con el servidor
Solución:
- Verifica que la URL sea correcta y esté accesible
- Confirma que incluye el protocolo (
http://ohttps://) - Verifica conectividad de red desde el servidor Netsocs
- Si es una URL local, asegúrate de que el servicio esté activo
- Revisa firewall y reglas de red
Error: "401 Unauthorized"¶
Causa: Credenciales de autenticación incorrectas o faltantes
Solución:
- Verifica que el tipo de autenticación sea correcto
- Confirma que las credenciales sean válidas
- Para Bearer Token, verifica que no haya expirado
- Para API Key, confirma el nombre del header correcto
- Revisa la documentación de la API para el formato de autenticación esperado
Error: "400 Bad Request"¶
Causa: El servidor rechaza la petición por datos inválidos
Solución:
- Verifica el formato del body (debe ser JSON válido si el Content-Type es
application/json) - Confirma que todos los campos requeridos estén presentes
- Revisa que los tipos de datos sean correctos (números como números, no strings)
- Valida que el método HTTP sea el correcto
- Consulta la documentación de la API para el formato esperado
Error: "404 Not Found"¶
Causa: El endpoint no existe
Solución:
- Verifica que la URL sea exactamente la documentada por la API
- Confirma que no haya errores tipográficos
- Revisa la versión de la API en la URL (v1, v2, etc.)
- Algunos endpoints requieren parámetros en la URL
Error: "SSL Certificate Error"¶
Causa: Problema con el certificado HTTPS
Solución:
- Si es un servidor de desarrollo, considera usar
http://temporalmente - Verifica que el certificado del servidor sea válido
- Para certificados autofirmados, puede ser necesario configuración adicional
- Confirma que la fecha/hora del servidor Netsocs sea correcta
El body no se envía correctamente¶
Causa: Formato o encoding incorrecto
Solución:
- Asegúrate de que el body sea un string válido
- Si es JSON, usa comillas dobles (
") no simples (') - Escapa caracteres especiales si es necesario
- Verifica que el
Content-Typeheader coincida con el formato del body - Para JSON, usa:
{"Content-Type": "application/json"}
Variables no se reemplazan en el body¶
Causa: Sintaxis incorrecta de variables
Solución:
- Usa el formato correcto:
{{nombreVariable}} - Verifica que la variable exista en el contexto de la automatización
- Si el body es JSON, las variables de texto deben estar entre comillas:
"nombre": "{{userName}}" - Para variables numéricas:
"edad": {{userAge}}(sin comillas)
Mejores Prácticas¶
1. Seguridad¶
- Usa HTTPS siempre que sea posible para proteger credenciales en tránsito
- No expongas credenciales en logs o mensajes de error
- Rota tokens y claves periódicamente según políticas de seguridad
- Usa variables de entorno para almacenar credenciales sensibles
- Limita permisos de las cuentas usadas para autenticación
2. Manejo de Errores¶
- Implementa reintentos para fallos temporales de red
- Valida respuestas antes de procesar los datos
- Log de peticiones para debugging (sin exponer credenciales)
- Notifica fallos a administradores cuando sea crítico
- Timeouts apropiados para evitar bloqueos
3. Rendimiento¶
- Evita peticiones innecesarias usando caché cuando sea posible
- Respeta límites de tasa (rate limits) de las APIs
- Usa métodos apropiados (GET para lecturas, POST para escrituras)
- Comprime datos grandes cuando la API lo soporte
- Paginación para grandes conjuntos de datos
4. Documentación¶
- Documenta cada integración con propósito y configuración
- Incluye ejemplos de peticiones y respuestas
- Mantén registro de cambios en APIs externas
- Versiona configuraciones cuando sea posible
5. Testing¶
- Prueba en desarrollo antes de producción
- Valida todos los códigos de estado posibles
- Prueba con credenciales inválidas para verificar manejo de errores
- Simula timeouts y errores de red
- Documenta comportamiento esperado
Casos de Uso por Industria¶
Integración con Sistemas de Control de Acceso¶
{
"url": "https://sistema-acceso.ejemplo.com/api/v1/doors/open",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": "{\"door_id\": \"MAIN-ENTRANCE\", \"duration\": 5, \"authorized_by\": \"{{userName}}\"}",
"authType": "bearer",
"authToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Notificación a Sistema de Gestión de Incidentes¶
{
"url": "https://incidents.ejemplo.com/api/create",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": "{\"title\": \"Alerta de Seguridad\", \"description\": \"Movimiento detectado en zona restringida\", \"priority\": \"high\", \"location\": \"{{location}}\"}",
"authType": "apikey",
"authUsername": "X-API-Key",
"authPassword": "sk_live_abc123xyz"
}
Actualizar Base de Datos Externa¶
{
"url": "https://api.basedatos.com/v2/registros",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": "{\"tipo_evento\": \"{{eventType}}\", \"timestamp\": \"{{timestamp}}\", \"datos\": {{eventData}}}",
"authType": "basic",
"authUsername": "api_user",
"authPassword": "secure_password_123"
}
Consultar Estado de Dispositivo IoT¶
{
"url": "http://192.168.1.100/api/status",
"method": "GET",
"headers": {
"Accept": "application/json"
},
"authType": "apikey",
"authUsername": "api_key",
"authPassword": "device_key_xyz789"
}
Preguntas Frecuentes¶
P: ¿Puedo hacer peticiones a servicios sin HTTPS?
R: Sí, pero solo para entornos de desarrollo o redes internas seguras. Evita enviar credenciales por HTTP en producción.
P: ¿Cómo obtengo un Bearer Token?
R: Generalmente se obtiene haciendo una petición de login/autenticación al endpoint de la API. Algunos servicios proporcionan tokens de larga duración en su panel.
P: ¿Puedo usar múltiples tipos de autenticación?
R: No, solo puedes usar un tipo a la vez. Elige el que requiera la API según su documentación.
P: ¿Qué pasa si la petición falla?
R: El nodo captura el error y lo hace disponible en la automatización. Puedes usar nodos condicionales para manejar fallos.
P: ¿Puedo usar variables en la URL?
R: Sí, puedes usar variables: https://api.ejemplo.com/usuarios/{{userId}}/perfil
P: ¿Hay límite en el tamaño del body?
R: Depende del servidor de destino. La mayoría de APIs tienen límites documentados (comúnmente 1-10 MB).
P: ¿Cómo manejo respuestas con paginación?
R: Necesitarás crear un flujo que haga múltiples peticiones, incrementando el parámetro de página en cada iteración.
P: ¿Puedo descargar archivos?
R: Sí, pero ten en cuenta el tamaño y almacenamiento. Para archivos grandes, considera streaming o almacenamiento temporal.