Create Matrix Block via Module
Fixed using the following code. Also includes fetching an API via Guzzle and parsing it into Craft CMS. Thought I would post here so that if anyone else is having trouble they can decipher bits from this. 

                // Set a base URI
                $baseUri = 'http://domain.com';
                // Build the Guzzle Client and use the Base URI
                $client = Craft::createGuzzleClient([
                  'base_uri' =&gt; $baseUri,
                ]);
                // Send a Request!
                $response = $client-&gt;request('GET', '/mytestendpoint/');
                // Parse the Response
                $json = $response-&gt;getBody();
                // Decode it
                $data = json_decode($json, true);

                // Set some values from it!
                $user-&gt;setFieldValue('userTotalFollowers', $data['followers'] );
                $user-&gt;setFieldValue('userEngagementRating', $data['details']['total_likes'] );
                $user-&gt;setFieldValue('verified', $data['is_verified'] );

                $number = 0;
                $matrixData = array();

                foreach($data['media'] as $element) {
                  $number++;
                  $matrixData["new$number"] = array(
                    'type' =&gt; 'media',
                    'enabled' =&gt; true,
                    'fields' =&gt; array(
                      'mediaDescription' =&gt; $element['likes'],
                      'mediaLikes' =&gt; count($element),
                    )
                  );
                }
                $user-&gt;setFieldValue('recentPosts', $matrixData);