# Categories Categories help organize your Products into various classifications. Customers can navigate a shop by browsing for related Products based on each Category. Products can belong to multiple Categories, and there can be different Category hierarchies for various purposes and Channels. Categories are embedded in the Product search, enabling you to filter and search for Products by their respective parent and child Categories. You can create Categories and customize existing ones based on your specific content, workflows, and metadata requirements. Categories include built-in fields for search engine optimization, such as unique and internationalizable URL slugs. Because slugs are an API resource for each Category, they can handle large quantities of Categories. The Merchant Center is also designed to handle these classifications of Categories. A maximum number of **10000** Categories can be created per Project. This is a soft limit that can be increased per Project after a performance impact review. See [Limit increase guidance](/api/limit-increase-guidance.md#resource-count-limits). Learn more about modeling Categories for shop navigation and other purposes in our self-paced [Categorization](/learning-model-your-product-catalog/categorization/overview.md) module. Learn more about how to build website navigation using Categories in our self-paced [Category queries best practices](/learning-implement-product-discovery-and-presentation/category-queries-best-practices/overview.md) module. ## Representations #### Category [type definition](/api/projects/categories.md?urn=ctp:api:type:Category). #### CategoryDraft [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryDraft). #### CategoryPagedQueryResponse [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryPagedQueryResponse). #### CategoryReference [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryReference). #### CategoryKeyReference [type definition](/api/projects/categories.md?urn=ctp:import:type:CategoryKeyReference). #### CategoryResourceIdentifier [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryResourceIdentifier). ## Get Category ### Get Category by ID [endpoint definition](/api/projects/categories.md?urn=ctp:api:endpoint:/\{projectKey}/categories/\{id}:GET). ### Get Category by Key [endpoint definition](/api/projects/categories.md?urn=ctp:api:endpoint:/\{projectKey}/categories/key=\{key}:GET). ## Query Categories [endpoint definition](/api/projects/categories.md?urn=ctp:api:endpoint:/\{projectKey}/categories:GET). ## Check if Category exists ### Check if Category exists by ID [endpoint definition](/api/projects/categories.md?urn=ctp:api:endpoint:/\{projectKey}/categories/\{id}:HEAD). ### Check if Category exists by Key [endpoint definition](/api/projects/categories.md?urn=ctp:api:endpoint:/\{projectKey}/categories/key=\{key}:HEAD). ### Check if Category exists by Query Predicate [endpoint definition](/api/projects/categories.md?urn=ctp:api:endpoint:/\{projectKey}/categories:HEAD). ## Create Category [endpoint definition](/api/projects/categories.md?urn=ctp:api:endpoint:/\{projectKey}/categories:POST). ## Update Category ### Update Category by ID [endpoint definition](/api/projects/categories.md?urn=ctp:api:endpoint:/\{projectKey}/categories/\{id}:POST). ### Update Category by Key [endpoint definition](/api/projects/categories.md?urn=ctp:api:endpoint:/\{projectKey}/categories/key=\{key}:POST). ## Update actions #### Set Key [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetKeyAction). #### Change Name [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryChangeNameAction). #### Change Slug [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryChangeSlugAction). #### Set Description [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetDescriptionAction). #### Change Parent Changing parents should not be done concurrently. Concurrent changes of parent categories might lead to corrupted ancestor lists (paths). [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryChangeParentAction). #### Change OrderHint [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryChangeOrderHintAction). #### Set External ID [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetExternalIdAction). #### Set Meta Title [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetMetaTitleAction). #### Set Meta Description [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetMetaDescriptionAction). #### Set Meta Keywords [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetMetaKeywordsAction). #### Set Custom Type [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetCustomTypeAction). #### Set CustomField [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetCustomFieldAction). #### Add Asset [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryAddAssetAction). #### Remove Asset [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryRemoveAssetAction). #### Set Asset Key [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetAssetKeyAction). #### Change Asset Order [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryChangeAssetOrderAction). #### Change Asset Name [type definition](/api/projects/categories.md?urn=ctp:api:type:CategoryChangeAssetNameAction). #### Set Asset Description [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetAssetDescriptionAction). #### Set Asset Tags [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetAssetTagsAction). #### Set Asset Sources [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetAssetSourcesAction). #### Set Asset Custom Type [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetAssetCustomTypeAction). #### Set Asset CustomField [type definition](/api/projects/categories.md?urn=ctp:api:type:CategorySetAssetCustomFieldAction). ## Delete Category The deleted Category will be removed from all the Products that had the Category assigned in their [ProductData](/urn?urn=ctp%3Aapi%3Atype%3AProductData). Deleting a root Category deletes the whole Category tree. ### Delete Category by ID [endpoint definition](/api/projects/categories.md?urn=ctp:api:endpoint:/\{projectKey}/categories/\{id}:DELETE). ### Delete Category by Key [endpoint definition](/api/projects/categories.md?urn=ctp:api:endpoint:/\{projectKey}/categories/key=\{key}:DELETE). ## Related pages - [Area overview page with navigation](/api.md) - [Previous page: Product Tailoring](/api/projects/product-tailoring.md) - [Next page: Reviews](/api/projects/reviews.md)