В общем столкнулся с такой неприятностью.
Мне нужно было отправить три запроса, первый GET с одним Content-Type (application/x-www-form-urlencoded) и два POST запроса с другим Content-Type (application/json).
Прописал я условие, чтобы мой headers менялся.
Но к моему удивлению отправлялся постоянно один и тот-же Content-Type (application/x-www-form-urlencoded).
Долго не мог понять в чем дело (возможно по незнанию).
Помогло добавление параметра requestConfig при создании модели Client.

Добавил условие, которое проверяло метод и добавляло данный параметр:

Код:

$settings = ['baseUrl' => $this->url];
if ($method == "POST") {
    $settings = array_merge($settings, [
        'requestConfig' => [
             'format' => Client::FORMAT_JSON
         ],
        'responseConfig' => [
             'format' => Client::FORMAT_JSON
        ],
     ]);
}
$client = new Client($settings);