I have a working CLI
curl -X POST \
-H "X-Parse-Application-Id: ID" \
-H "X-Parse-REST-API-Key: KEY" \
-H "Content-Type: application/json" \
-d '{
    "channels": [
      "Giants",
      "Mets"
    ],
    "data": {
      "alert": "The Giants won against the Mets 2-3."
    }
  }' \
https://api.parse.com/1/push
which returns a string {"result":"success"}
But my php curl
$post = json_encode(array('channels'=>array('Giants','Mets'),'data'=>array('alert'=>'The Giants won against the Mets 2-3')));
$ch = curl_init();
curl_setopt_array($ch, array(
            CURLOPT_URL             =>  'https://api.parse.com/1/push',
            CURLOPT_HTTPHEADER      =>  array(
                                            'X-Parse-Application-Id: ID',
                                            'X-Parse-REST-API-Key: KEY',
                                            'Content-Type: application/json'
                                        ),
            CURLOPT_POST            =>  true,
            CURLOPT_POSTFIELDS      =>  $post,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_RETURNTRANSFER => true
        ));
$res = curl_exec($ch);
if (curl_error($ch)) {
     echo "Curl error: " . curl_error($ch);
}
curl_close($ch);
echo $res;
shows the message "The page you were looking for doesn't exist." and then below that a "1" which is the $res with no error
Thanks