ok, so there's some complexity here that is worth clearing up.
when you do a request to the server there are basically several moving parts. Let's see them as
VERB URL?parameters
HEADERS
DATA
There are "norms" but every so often there are variations to the norm, and this is one of those cases.
In your CURL example it is doing a "normal" GET - but with the verb changed from GET to POST. So
POST URL?Parameters
_without_ a Data section.
Your API also accepts data in the data section, instead of the parameters (which is considered much better), but then the data is in JSON format, not parameter format.
NetTalk starts with the norms, and goes from there. So your code is failing because when you do a POST the norm is to put data into the data part, not the parameters part, so the API at the other end is complaining.
Fortunately getting data in as Json is easy - especially in this case;
str.SetValue('{{"from":":"18339143526","text":"A text message sent using the Vonage SMS API", to":"18015575583","api_key":"74ab237f","api_secret":"s1n2GPpsWr0QBd2M"}')
net.Post('
https://rest.nexmo.com/sms/json',str)
For more complex Json I recommend jFiles.
Cheers
Bruce