The following example demonstrates how to accomplish it via CSOM:
/// <summary>
/// Hide the content type from List
/// </summary>
/// <param name="ctx"></param>
/// <param name="listTitle"></param>
/// <param name="ctName">The name of content type to hide</param>
private static void HideContentTypeFromList(ClientContext ctx, string listTitle,string ctName)
{
var list = ctx.Web.Lists.GetByTitle(listTitle);
//List Content Types
ctx.Load(list, l => l.ContentTypes, l => l.RootFolder.UniqueContentTypeOrder);
ctx.ExecuteQuery();
var contentTypeOrder = (from ct in list.ContentTypes where ct.Name != ctName select ct.Id).ToList();
list.RootFolder.UniqueContentTypeOrder = contentTypeOrder;
list.RootFolder.Update();
ctx.ExecuteQuery();
}
Usage
using (var ctx = new ClientContext(webUri))
{
HideContentTypeFromList(ctx, listTitle, "Workflow Task (SharePoint 2013)");
}