How do I use Guzzle to send a post request from my plugin?
It is pretty obvious now, but indeed the API is looking for json formatted values and I was in fact sending name:value pairs.

Here is what the updated logic looks like for anyone who comes across this.

MyPlugin.php

$client = new \Guzzle\Http\Client('http://api.site.dev/');
$uri = 'my/endpoint/path';
$post_data = array(
    'craft_id' =&gt; $event-&gt;params['user']-&gt;id,
    'name' =&gt; $event-&gt;params['user']-&gt;friendlyName,
    'email' =&gt; $event-&gt;params['user']-&gt;email
);

$data = json_encode($post_data);

$request = $client-&gt;post($uri, array(
    'content-type' =&gt; 'application/json'
));

$request-&gt;setBody($data);
$response = $request-&gt;send();