Shell command variables passed via service call (and AppDaemon)

I have some shell_command, e.g.:

grocy_get_stock_list: "curl -X 'GET' 'http://{{server_ip}}/api/stock' -H 'accept: application/json' -H 'GROCY-API-KEY: {{grocy_key}}'"

where I’d like to pass data as variables - But I can’t get it to work, neither from “Services” in the UI using:

service: shell_command.grocy_get_item_list
data:
  server_ip: '10.0.30.21:9283'
  grocy_key: 'REDACTED'

or from AppDaemon (where I ultimately need it), e.g.:

        self.service_data = {
            'server_ip': '10.0.30.21:9283',
            'grocy_key': self.args['api_key'],
        }
        self.all_products = self.call_service("shell_command/grocy_get_item_list", data=self.service_data)

where self.args['api_key'] references the api key stored in secrets.yaml.

The shell_command itself works fine; if I write it without variables:

grocy_get_item_list_test: "curl -X 'GET' 'http://10.0.30.21:9283/api/stock' -H 'accept: application/json' -H 'GROCY-API-KEY: REDACTED'"

I get the data returned as expected. While the current example would be OK to do without variables, I also need to do some stuff where hardcoding would require 194 (and counting) individual shell_commands, so I really would like the variables to work.

Any ideas?