I'm a big fan of Guzzle it's great for making API calls.
My typical code when making calls looks like this:
use GuzzleHttp\Client;
use Exception;
try {
$client = new Client;
$response = $client->post($url, ['form_params' => $params]);
return json_decode($response->getBody()->getContents(), true);
} catch (Exception $e) {
return $e->getMessage();
}
That all works but when there is an error returned from the API the errors are truncated. Calling the usually $e->getMessage is not the correct way with Guzzle instead throw an exception with the same response call used for returned data.
throw new Exception($e->getResponse()->getBody()->getContents());