В общем проблема была в SSL и ещё возможно в том что файл нужно обернуть в "new CURLFile"
Итоговый код такой
$post_params = array(
"photo" => $img);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => new CURLFile($img)));
$result = curl_exec($ch);
Очень помогает отлаживал cUrl следующее
$curl_error_code = curl_errno($ch);
$curl_error_desc = curl_error($ch);
$curl_info = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($curl_error_code > 0) {
exit($curl_error_desc . ' (' . $curl_error_code . '); HTTP-код: ' . $curl_info);
}