Catalog and MeshPart/SpecialMesh asset IDs are not the same. Catalog IDs only point to the product, while Mesh IDs point to the accessory/hair/hat’s geometry.
You have to somehow insert the accessory using a Catalog ID, find the Accessory part, and place it on your model.
Programmatically, you must use InsertService:LoadAsset(CatalogID), find the first accoutrement (FindFirstChildWhichIsA("Accoutrement") for both Accessory and Hat items), store that accessory for later instead of loading it again, clone it, and parent the copy to your model.
here is a code I made (for future people) which ended up working. Thanks for the idea of using insertservice!!!
--// process the hat
local hat = game:GetService("InsertService"):LoadAsset(7259123616)
--// extract valuable information
for i,v in pairs(hat:GetChildren()) do
v.Parent = workspace.Dummy
end
--// remove excess waste
hat:Destroy()