Joe, I finally figured out a solution.
First I set up a page that has exactly the layout I want in Kentico admin ui with the webparts and widgets. I then went in and to the CMS_Document table and pulled the xml for both DocumentContent and DocumentWebParts.
I deserialized both xml to objects and managed the data by matching up guids which I first chagne to a random guid. The guids need to match in both xml strings. The layout is in documentwebparts and the content is then in documentcontent xml. I then added my content into documentcontent xml, serialized it back to a string and put into my page treenode.
TreeNode tnSample = DocumentHelper.GetDocuments()
.Path(path)
.OnCurrentSite()
.FirstOrDefault();
page = TreeNode.New(<<pagetype here>>);
page.SetValue("DocumentContent", contentXml);
page.SetValue("DocumentWebParts", resultXml);
page.Insert(tnSample);