Using the PVE API should work too. You could create a user that is only allowed to start/stop/reset VMs (only give the "VM.PowerMgmt" privilege). And you could give that user a token to authentificate with the API. So in worst case a VM might shutdown another VM and you revoke the token.