HTTP Request Node Not Sending Query Parameters Correctly

Hi everyone, I’m having an issue with the HTTP Request node when trying to send query parameters. The API call works fine in Postman, but in n8n it either ignores the params or returns wrong results.
My workflow is:
Set → HTTP Request
In the Set node, I define:
{
“user_id”: 123,
“status”: “active”
}
Then in the HTTP Request node, I tried adding query params like this in the URL:
https://api.example.com/users?user_id={{$json.user_id}}&status={{$json.status}}
But sometimes:
The API doesn’t receive the params
Or it returns all users instead of filtered
I’m not sure if:
I should be using the Query Parameters section instead of URL
Or if my expressions are not resolving correctly

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:

Hi @Roseline This usually happens because adding params directly in the URL can be unreliable with expressions.
Best way is to Use the Query Parameters section in the HTTP Request node:
• user_id → {{$json.user_id}}
• status → {{$json.status}}

n8n will handle it properly.

good day @Roseline
I’d also check the final URL/request generated by the HTTP Request node in the execution details. That will show whether n8n actually sent user_id and status, which helps separate an n8n configuration issue from an API-side filtering issue.

Hi @Roseline, your expression {{$json.user_id} } has a stray space before the closing brace — that alone will break resolution and send a literal string instead of 123, which is why the API returns all users unfiltered.

Swap the URL for your real endpoint, the Query Parameters section handles encoding so you don’t need params in the URL at all.