The “Content-Type” header should be set to “application/json” for batch endpoints. In twurl, this can be done with the -A “Content-Type: application/json” flag. Taking that into account, your sample request should look like the below:
twurl -H ads-api.twitter.com -X POST -A “Content-Type: application/json” -d “operation_type=Create¶ms=[{“account_id”:“18ce53uuf0f”,“line_item_id”:“54wq8”,“targeting_type”:“PLATFORM”,“targeting_value”:“1”,“tailored_audience_expansion”:null,“tailored_audience_type”:null},{“account_id”:“18ce53uuf0f”,“line_item_id”:“54wq8”,“targeting_type”:“TAILORED_AUDIENCE”,“targeting_value”:“18wy”,“tailored_audience_expansion”:null,“tailored_audience_type”:null}]” “/1/batch/accounts/18ce53uuf0f/targeting_criteria”
Let us know if this works better for you.