Upload files when the content has no URL to crawl. Each file becomes one document and is answered from like any other page. Available on every plan.

Set up

1

Start the source

Open the knowledge base, go to Sources → Add source, pick File Upload and click Continue. Enter a Display name and click Next.
2

Pick files

Drop files onto the panel, click it to browse, or click Upload a folder. A Description is optional. Files of the wrong type or over 32 MB are set aside before anything is sent.
3

Add the source

Click Next, check the Review step, and click Add source. The files are uploaded then, and indexed in the background. Open the source’s Files tab to see each file. Ask a question in the knowledge base’s Playground tab to check.
To add more files later, open the source’s Files tab. Pick files there and click Upload N files. The panel shows Indexing X of Y, then Indexed. You can leave the page.

Supported formats

FormatWhat is extracted
.pdfText, with headings worked out from font size. Repeated headers, footers and page numbers are dropped. See PDF Extraction.
.docxParagraphs and tables. Word heading styles become headings.
.xlsx .xlsm .xltx .xltmOne section per sheet, as a table. Hidden sheets are skipped. Up to 2,000 rows per sheet.
.csv .tsvA table, split into short sections with the header row repeated in each.
.html .htmCleaned like a crawled page. The <title> becomes the document title.
.md .mdx .txtIndexed as written.
The title is the file name without its extension. Files keep their folder path, so handbook/auth.pdf and sdk/auth.pdf stay two documents.

Limits

LimitValue
File size32 MB per file
One request10 files and 32 MB in total. The dashboard splits bigger batches for you.
PDF length7,000 pages. Longer PDFs are not indexed.

Check each file

The Files tab lists every file as Indexed, Skipped or Failed, with the reason. A file that indexed but may answer badly is also counted under Need a look — for example Almost no text (a scanned PDF: run OCR and upload it again) or Very large sheet (only the first 2,000 rows were indexed). See PDF Extraction for every PDF note.

Update or remove files

  • Replace a file: upload the new version with the same name and folder path.
  • Remove a file: on the Documents tab, click Remove from the index. The document is deleted.
  • There is no Sync Now: Kelu does not keep the file once it is indexed.
To keep uploads visible only to workspace members, add the source to an internal knowledge base. PII masking applies to uploads too.

Upload from a script

curl https://app.kelu.dev/api/v1/sources/SOURCE_ID/files \
  -H "Authorization: Bearer <token>" \
  -F "files=@handbook/auth.pdf" \
  -F "[email protected]"
Use a dashboard sign-in token — client keys and workspace API keys do not work here. Put every file in a field named files. The reply is 202 with upload_id, accepted and rejected (each rejected file with its reason), 400 if no file was accepted, 409 if the knowledge base is archived, or 503 if too many uploads are running — wait and send the batch again.