Because “zwave.xxx” is not a switch. It’s the zwave entity associated with the switch. You need to figure out what the name of the “switch.xxx” entity is.
Probably the second one “works” because -H requires a parameter, which is probably sucking up the -d. The data (in quotes) is probably being interpreted (by curl) as another URL, but it’s ignoring it because it’s not correct. The end result is you’re calling the service without specifying an entity_id, which means operate on all the entities in that domain (i.e., switch.)
Just realized how simple the answer was to my question its
curl -X POST -H “Content-Type: application/json”
-d ‘{“entity_id”: “switch.telldus_tzwp100_plugin_switch_switch”}’ http://192.168.1.15:8123/api/services/switch/turn_off