HTTP Request Node Sending [object Object] Instead of JSON

Hi everyone, I’m having an issue with the HTTP Request node. I’m trying to send JSON data, but the API receives the body as:
[object Object]
instead of proper JSON.
My workflow is:
Set → HTTP Request
In the Set node, I prepare the data:
{
“user”: {
“id”: 1,
“name”: “John”
}
}
Then in the HTTP Request node, I send it like this:
{
“user”: “{{$json.user}}”
}
But the API logs show:
user: “[object Object]”
I think it’s because I’m passing an object inside a string, but I’m not sure how to fix it properly in n8n.
What’s the correct way to send nested JSON objects in the HTTP Request node without it turning into [object Object]?

Describe the problem/error/question

What is the error message (if any)?

Please share your workflow

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)

Share the output returned by the last node

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

Hey! This is actually a common issue in n8n, don’t worry
The problem is the quotes around your expression. When you write “{{$json.user}}” with quotes, n8n treats the whole thing as a string and that’s why you’re seeing [object Object]. JavaScript is basically trying to convert your object into text.

The fix is pretty simple. Just remove the quotes and wrap it with JSON.stringify like this:

json
{
“user”: {{JSON.stringify($json.user)}}
}

No quotes around the expression this time that’s the important part!

Or honestly the even easier way is to just pass {{$json}} directly as your body if you want to send the whole object. Just make sure your Body Content Type in the HTTP Request node is set to JSON and you should be good.

Also double check that your Content-Type header is set to application/json on the request sometimes that alone causes weird behavior with APIs.

Give that a try and let me know if it works!

Remova as aspas em “user”: “{{$json.user}}”

Espero que resolva

Hi @Keira_Becky the issue is the quotes.

When you do:

{
“user”: “{{$json.user}}”
}

you’re turning the object into a string, which becomes [object Object]

Fix

Remove the quotes and use expression mode:

{
user: $json.user
}

Hi @Keira_Becky, others nailed the why but here’s a working workflow you can just import — set the body content type to JSON and pass the whole object with ={{ JSON.stringify($json) }}, that way n8n serializes it properly instead of coercing to string.

swap the url to your actual endpoint and you’re good.