Skip to main content
POST
Upload Knowledge File With Stream

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

knowledge_id
string
required

Knowledge base ID

Body

multipart/form-data
file
file
required

File content. The type is decided by the file name extension (case-insensitive), not the Content-Type. Supported: pdf / doc / docx / ppt / pptx, xlsx / xls / csv, txt / md / markdown / html / htm / xml, png / jpg, and mp3 / mp4 / m4a / wav / webm / mpga / mpeg / mov / flv. Any other extension returns 400.

folder_id
string | null

Target folder ID. Defaults to the knowledge base root folder

process_document
boolean
default:true

Whether to start the processing pipeline right away

document_metadata
string | null

Document metadata as a JSON string, merged into the document's metadata_info. Common fields: title, entity_names (tags written as "key:value" that drive metadata pre-filtering at retrieval time), time_periods, and custom_data (free-form key-values that are stored, indexed and returned but never used for filtering). A non-empty entity_names skips LLM metadata generation entirely, so title and time_periods are no longer produced automatically — pass title alongside it or the title stays empty. folder_id, folder_ids, url, source_url, file_path, file_size, file_name and file_type are filled in by the server from the uploaded file and are ignored if supplied. Invalid JSON is logged server-side and treated as if the field were absent; the request still succeeds. Example: {"title":"SY500 Service Manual","entity_names":["model:SY500"]}

document_setting
string | null

Processing settings for this upload as a JSON string. Omit it and every setting follows the knowledge base (pdf_parsing_mode, smart_indexing_mode, smart_indexing_enabled, overall_summarize_enabled, split_media_enabled, audio_parsing_mode, audio_chunk_mode, pdf_parsing_element_types). Supplying it is all-or-nothing rather than a patch: the settings are built from your JSON alone, so any field you leave out falls back to its model default instead of the knowledge base — pass {"pdf_parsing_mode":2} on its own and smart_indexing_mode becomes 0 and overall_summarize_enabled becomes true. Chunking (chunk size, overlap, separators) is never part of this field and always comes from the knowledge base. Smart indexing runs only when smart_indexing_enabled is true AND smart_indexing_mode is 2 (advanced); leaving it off is recommended. Invalid JSON is logged and treated as absent. Example: {"pdf_parsing_mode":2,"smart_indexing_enabled":false}

Response

Successful Response

org_id
string
required
Maximum string length: 20
user_id
string
required
Maximum string length: 20
dataset_id
string
required
file_id
string
required
document_id
string
required
created_at
integer
updated_at
integer
overall_summarize_enabled
boolean | null
default:true

Generate an overall summary. Boolean

smart_indexing_mode
integer | null
default:0

Smart indexing mode. 0: disabled (recommended), 1: standard, 2: advanced

smart_indexing_enabled
boolean | null
default:true

Enable smart indexing. Boolean. Takes effect only together with smart_indexing_mode 2 (advanced); leaving it false is recommended unless the corpus needs it, as it adds noticeable processing time and token cost

split_media_enabled
boolean | null
default:true

Generate media segments. Boolean

pdf_parsing_mode
integer | null
default:2

PDF parsing mode. 1: page, 2: section (recommended), 3: section v2

pdf_parsing_element_types
integer[] | null

pdf parsing element list, eg: [1, 2]. 1: table, 2: image, 3: formula

read_pdf_pages
string | null

read pdf pages, Example: '1,3,4' or '1,4-end' or 'all'

audio_parsing_mode
integer | null

audio parsing mode, 1: transcript, 2: speaker diarization

audio_chunk_mode
integer | null
default:1
name
string | null
Maximum string length: 256
document_type
integer | null
default:1
next_step
boolean | null
default:true

next step

llm
Llm · object | null
metadata_info
Metadata Info · object
task_priority
integer | null

task priority

description
string | null
default:""
Maximum string length: 512
summary
string | null
default:""
step_status
integer | null
default:100
status
integer | null
default:1
process_status
integer | null
default:100
version
integer | null
default:2
splitter_type
integer | null
default:1
splitter
Splitter · object
sections
Sections · object[]
content_text
string | null
trim_text
boolean | null
default:true