API to Perform a build: How to put parameters inside request body?

Jenkins setup:
Jenkins version is Jenkins 2.426.3

I know there is api /job/{jobName}/buildWithParameters?longParam=longValue . Usually this works. However, for some reason, if the longValue is very long, it will give a 414 error.
Then I am trying to move the very long parameter from http parameters to request body.
Learned from internet that it can be done by putting into a json list, wrapped with parameter, e.g.:

{
  "parameter": [
    {
      "name": "longParam",
      "value": "this_is_a_very_very_long_paramter!"
    }
  ]
}

Though it gives an 201, the build does not recognize this parameter and uses the default value.

Am I using it in a somewhat wrong way? Or the it must be put in http parameters?

When you pass data as json you need to do it this way (this basically mimics posting via the UI):
Here I have a pipeline job that has a parameter named test.

curl --user <user>:<token> -X POST http://localhost:9090/job/testpipeline/build --data-urlencode json='{"parameter": [{"name": "test", "value": "TEST"}]}'

You don’t need to pass all parameters, parameters that are not defined will get the default.