Delvng through the bug reports on github led me to find a solution that works. Here's Nate Sanden's PHP code that I've used successfully:
$curl = curl_init();
//path to the image you want to upload
//can be local path or remote url
$image_url = dirname(__FILE__).'/thumb.jpg';
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => [
'image' => new CURLFile($image_url),
'name' => basename($image_url),
],
CURLOPT_HTTPHEADER => array(
'Content-Type: multipart/form-data',
'x-api-key: '.$client_id,
'Authorization: Bearer '.$access_token,
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;