HTTPRequest enviando una única variable como JSON

Describe el problema/error/pregunta

¿Cuál es el mensaje de error (si hay alguno)? Bad request - please check your parameters

Por favor, comparte tu flujo de trabajo

{
“nodes”: [
{
“parameters”: {
“method”: “POST”,
“url”: “http://host.docker.internal:8082/api/assistant/intent”,
“sendHeaders”: true,
“headerParameters”: {
“parameters”: [
{
“name”: “Content-Type”,
“value”: “application/json”
},
{
“name”: “Accept”,
“value”: “application/json”
}
]
},
“sendBody”: true,
“contentType”: “raw”,
“body”: “={{ $json.cleanOutput }}”,
“options”: {}
},
“type”: “n8n-nodes-base.httpRequest”,
“typeVersion”: 4.4,
“position”: [
240,
-112
],
“id”: “bc555ae5-8565-4c9b-b871-4d3f4a20899b”,
“name”: “HTTP Request”
}
],
“connections”: {},
“pinData”: {},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “02f1001f8f2d972f69be23b2f2dcfdcc65885dd6f6ff6d04c911329ee6f7f3dd”
}
}

Información sobre tu configuración de n8n

  • versión de n8n: latest / local
  • Base de datos (por defecto: SQLite): N/A
  • Configuración n8n EXECUTIONS_PROCESS (por defecto: own, main): default
  • Ejecutando n8n mediante (Docker, npm, n8n cloud, desktop app): Docker
  • Sistema operativo: Windows 10

Hola @GeoForeman

Cambia tu campo Body a esto:

{
  "intent": "{{ $json.cleanOutput }}"
}

(Reemplaza "intent" con el nombre de clave actual requerido por tu API).

¡Hola @GeoForeman! ¡Bienvenido!
El tipo de contenido raw envía el valor literal de la expresión como cuerpo. Si cleanOutput no es un JSON válido, host.docker.internal:8082 recibe texto sin formato bajo un encabezado Content-Type: application/json, y su analizador lo rechaza antes de que se ejecute tu lógica de endpoint.
Envuelve el valor con JSON.stringify en lugar de escribir comillas alrededor de la expresión; las comillas manuales fallan en el momento en que cleanOutput contiene una comilla o salto de línea:

{{ JSON.stringify({ yourKey: $json.cleanOutput }) }}

Como se trata de tu propio servicio local, su cuerpo de respuesta real o registro del servidor mostrarán el motivo de validación real en lugar del mensaje genérico de n8n.

Gracias, funcionó