---
title: "Create category"
method: POST
path: "/beta/knowledge/categories"
tags: ["Knowledge"]
---

# Create category

`POST /beta/knowledge/categories`

## Request

- Base URL: `https://dev.dixa.io`
- URL: `https://dev.dixa.io/beta/knowledge/categories`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/dixa/apis/dixa-api/docs/beta/knowledge/categories/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a knowledge category. Every category belongs to a collection: pass a collection ID as `parentId` to create a top-level category, or a category ID to create a subcategory

## Request body

- CreateKnowledgeCategoryInput
  - `translations` CategoryTranslationInput[]: Initial translations for the category
    - `languageId` string, required: ISO language code (e.g. en, da, de)
    - `title` string, required: Title of the translation
  - `parentId` string, required: ID of the parent. Use a collection ID to create a top-level category, or a category ID to create a subcategory

## Response `200`

The created knowledge category

- CreateKnowledgeCategoryOutput
  - `data` Category, required
    - `id` string, required: ID of the category
    - `title` TranslationTitle
      - `languageId` string, required
      - `title` string, required
    - `isDefaultLocation` boolean: Whether this is the category's default placement. Always `true`, or empty if the category has no parent
    - `isLocked` boolean, required: Whether the category is synced from an Elevio workspace import. Locked categories cannot be modified (deleted, moved or renamed) while the import is active
    - `restrictions` Restrictions, required
      - `isRestricted` boolean, required: Whether a restriction is set directly on this item. The only restriction is internal use: the content is available only to logged-in users
      - `inheritedRestrictions` InheritedRestriction[]: Restrictions inherited from parent collections or categories. When several parents have the same restriction, only the top-most parent is listed
        - `fromCollection` string: ID of the collection the restriction is inherited from. Empty if it comes from a category
        - `fromCategory` string: ID of the category the restriction is inherited from. Empty if it comes from a collection
    - `parentCategory` string: ID of the parent category. Empty for a top-level category, whose parent is a collection
    - `parentCollections` string[]: IDs of all collections the category belongs to

## Other responses

- `400`
- `404`: An entity in this request could not be found
- `500`: Internal failure during request processing

## Changes

- **2026-10-19** `2d55af7340b9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/dixa/apis/dixa-api/changes/beta/knowledge/categories/post.md)

---

[API](https://skmtc.dev/dixa/apis/dixa-api.md) - [All operations](https://skmtc.dev/dixa/apis/dixa-api/llms.txt) - [OpenAPI document](https://skmtc.dev/dixa/apis/dixa-api/revisions/4c9e4ef864d1?raw)
