I know you probably already figured this out, but better late than never!
set msg.headers={"content-type":"application/x-www-form-urlencoded"}
set msg.payload={"id":"[device_id]","auth_key":"[auth_key]"}
Example flow - [{"id":"5415b568.ecd0dc","type":"inject","z":"ef648c79.ead65","name":"ON","props":[{"p":"statusState","v":"on","vt":"str"},{"p":"headers","v":"{\"content-type\":\"application/x-www-form-urlencoded\"}","vt":"json"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":270,"y":1860,"wires":[["6a27a033.7ccb4"]]},{"id":"118448be.709267","type":"http request","z":"ef648c79.ead65","name":"ON/OFF","method":"POST","ret":"obj","paytoqs":"ignore","url":"https://shelly-23-eu.shelly.cloud/device/relay/control/","tls":"","persist":true,"proxy":"","authType":"","x":640,"y":1880,"wires":[["62d0a84f.201df8"]]},{"id":"62d0a84f.201df8","type":"debug","z":"ef648c79.ead65","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":810,"y":1880,"wires":[]},{"id":"6a27a033.7ccb4","type":"function","z":"ef648c79.ead65","name":"","func":"var1 = msg.statusState;\n\nmsg.payload = {\n \"channel\":\"0\",\n \"turn\":var1,\n \"id\":\"27cf76f3f60b\",\n \"auth_key\":\"NjY4Yzd1akldhmEA91B2720BB54fdgh816EBFF5F46F6dfyf16106D32JGH886GD49126E49CAFBC99536363CF69E\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":460,"y":1880,"wires":[["118448be.709267"]]},{"id":"ba6bf165.7f8f","type":"inject","z":"ef648c79.ead65","name":"OFF","props":[{"p":"statusState","v":"off","vt":"str"},{"p":"headers","v":"{\"content-type\":\"application/x-www-form-urlencoded\"}","vt":"json"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":270,"y":1900,"wires":[["6a27a033.7ccb4"]]}]
In the HTTP request node set your url to the one you want to hit and select POST, you should be good to go!
Thanks
Jake