Faqs
Import batch
Bulk import of manually created FAQs (max 1000 per request). Duplicates and empty rows
are skipped; embeddings are generated in the background.
POST
/api/{tenant:minlength(2)}/v{version:apiVersion}/faqs/import_batch
- Authorisation
- Minimum role: USER
Request arguments
Request body example
Response
- Status
- 200 (OK)
- Type
- DTO_faq_import_result
- Wrapper
- DTO_response_wrap
- Other statuses
- 400 (BadRequest), 401 (Unauthorized), 403 (Forbidden), 429 (TooManyRequests)
Response body example
DTO_faq_import_batch
| Name | Type | ReadOnly | Description |
| items | DTO_faq_create[] | | Items |
| category_id | Int32 | | Optional knowledge base category for every imported item; 0/omitted = uncategorized |
DTO_faq_import_result
| Name | Type | ReadOnly | Description |
| created_count | Int32 | | Created count |
| skipped_duplicate_count | Int32 | | Rows skipped because an identical question/answer already exists (or repeats within the batch) |
| skipped_invalid_count | Int32 | | Rows skipped because question or answer was empty |
| created_category_count | Int32 | | Categories that were created because rows named categories that didn't exist yet |
DTO_faq_create
| Name | Type | ReadOnly | Description |
| question | String | | Question |
| answer | String | | Plain text answer. Ignored when sys_content_rich carries content |
| sys_content_rich | DTO_rich_text | | Optional rich answer (tiptap). The server extracts the plain text variant from it,
and only keeps the rich document when it actually contains formatting |
| category_id | Int32 | | Optional knowledge base category; 0/omitted = uncategorized |
| category_name | String | | Import only: optional category by NAME for this row. Wins over the batch category;
matched case-insensitively against existing categories, unknown names are created
automatically as top-level categories |
DTO_rich_text
| Name | Type | ReadOnly | Description |
| plain_preview | String | ReadOnly | Plain preview |
| html | String | | Html |
| editorjs | DTO_editorjs | | Editorjs |
| tiptap | DTO_tiptap | | Tiptap |
| read_minutes | Int32 | | Read minutes |
DTO_editorjs
| Name | Type | ReadOnly | Description |
| time | Int64 | | Time |
| version | String | | Version |
| blocks | DTO_editorjs_block[] | | Blocks |
DTO_editorjs_block
| Name | Type | ReadOnly | Description |
| id | String | | Id |
| type | String | | Type |
| data | Object | | Data |
DTO_tiptap_attrs
| Name | Type | ReadOnly | Description |
| textAlign | String | | Textalign |
| level | Int32 (nullable) | | Level |
| checked | Boolean (nullable) | | Checked |
| id | Int32 (nullable) | | Id |
| alt | String | | Alt |
| title | String | | Title |
| width | String | | Width |
| wrapperStyle | String | | Wrapperstyle |
| containerStyle | String | | Containerstyle |
| files | DTO_tiptap_file_ref[] | | Files |
| href | String | | Href |
| target | String | | Target |
| colspan | Int32 (nullable) | | Colspan |
| rowspan | Int32 (nullable) | | Rowspan |
| color | String | | Color |
| text | String | | Text |
| name | String | | For emoji |
| native | String | | For emoji |
DTO_tiptap_file_ref
| Name | Type | ReadOnly | Description |
| id | Int32 | | Id |
| label | String | | Label |
Generated Sep 18, 2026 09:31