and converting it to a command (curl) along with a series of options, separated by spaces. Most of the quote-marks used above are to help the shell split the values correctly. (see below)
System.cmd/2 operates at a level of abstraction lower than that - it expects the caller to provide the command as a string, and the arguments as a list of strings. Because of that, most of the quotes are not only not required, but could cause bugs. For instance:
-H "Content-Type: application/json"
# parsed by the shell as two arguments:
# Content-Type: application/json
But passing ["-H", "\"Content-Type: application/json\""] to System.cmd will send the double-quotes along to the program, which isn’t the intent.
For the input given, all of these quote-marks are formatting for the shell that isn’t wanted in the actual data sent to curl: