 <p>this code works, you need to Stringify your json object using JSON.stringify , and use the methode write of the object request to send the sample json object </p> <pre><code>, http = require('http') , bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); var sample = JSON.stringify({ "callback": "http://www.example.com/callback" , "total": 3 , "urls": [{ "url": "http://www.domain.com/index1.html" }, { "url": "http://www.domain.com/index2.html" }, { "url": "http://www.domain.com/index3.html" } ] }); var options = { hostname: 'localhost' , port: 80 , path: '/test/a' , method: 'POST' , headers: { 'Content-Type': 'application/json' , 'Content-Length': sample.length } }; app.get('/', function (req, res) { var r = http.request(options, (response) =&gt; { console.log(`STATUS: ${response.statusCode}`); console.log(`HEADERS: ${JSON.stringify(response.headers)}`); response.setEncoding('utf8'); response.on('data', (chunk) =&gt; { console.log(`BODY: ${chunk}`); }); response.on('end', () =&gt; { console.log('No more data in response.'); }); }); r.on('error', (e) =&gt; { console.log(`problem with request: ${e.message}`); }); r.write(sample); r.end(); res.send('ok'); }); </code></pre> <p>a link for more details about http.request <a href="https://nodejs.org/api/http.html#http_http_request_options_callback" rel="nofollow">nodejs.org http.request(options[, callback])</a></p>