Knowledge bases store reference documents that the AI agent retrieves during conversations for context. Documents are automatically processed through the ingestion pipeline: text extraction, chunking, embedding, and vector indexing.
Create Knowledge Base
POST /v1/console/knowledge-bases
Create a new knowledge base. A Qdrant collection and slug are auto-generated if not provided.
Authentication
Requires KNOWLEDGE_BASES.can_create permission.
Request body
Knowledge base name. Max 255 characters.
URL-safe slug. Auto-generated from the name if omitted.
Description. Max 2000 characters.
Qdrant collection name. Auto-generated if omitted.
embedding_model
string
default:"all-MiniLM-L12-v2"
Embedding model to use.
Whether the knowledge base is active.
Example request
curl -X POST https://mind-be.staging.miva.university/v1/console/knowledge-bases \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Diabetes Guidelines",
"description": "Clinical guidelines for diabetes management."
}'
Response
{
"success": true,
"data": {
"id": "6650d4e5f6a7b8c9d0e1f2a3",
"name": "Diabetes Guidelines",
"slug": "diabetes-guidelines",
"description": "Clinical guidelines for diabetes management.",
"qdrant_collection": "kb_diabetes_guidelines_6650d4e5",
"embedding_model": "all-MiniLM-L12-v2",
"is_active": true,
"created_at": "2025-06-01T14:00:00Z",
"updated_at": null
},
"message": "Knowledge base created successfully"
}
List Knowledge Bases
GET /v1/console/knowledge-bases
List all knowledge bases in the tenant.
Authentication
Requires KNOWLEDGE_BASES.can_view permission.
Query parameters
Number of records to skip.
Max records to return (1-100).
Include inactive knowledge bases.
Example request
curl "https://mind-be.staging.miva.university/v1/console/knowledge-bases" \
-H "Authorization: Bearer <access_token>"
Response
{
"success": true,
"data": [
{
"id": "6650d4e5f6a7b8c9d0e1f2a3",
"name": "Diabetes Guidelines",
"slug": "diabetes-guidelines",
"is_active": true,
"created_at": "2025-06-01T14:00:00Z"
}
],
"total": 1,
"page": 1,
"page_size": 20,
"total_pages": 1,
"message": null
}
Get Knowledge Base
GET /v1/console/knowledge-bases/{kb_id}
Get a knowledge base’s full details.
Authentication
Requires KNOWLEDGE_BASES.can_view permission.
Path parameters
Example request
curl https://mind-be.staging.miva.university/v1/console/knowledge-bases/6650d4e5f6a7b8c9d0e1f2a3 \
-H "Authorization: Bearer <access_token>"
Response
{
"success": true,
"data": {
"id": "6650d4e5f6a7b8c9d0e1f2a3",
"name": "Diabetes Guidelines",
"slug": "diabetes-guidelines",
"description": "Clinical guidelines for diabetes management.",
"qdrant_collection": "kb_diabetes_guidelines_6650d4e5",
"embedding_model": "all-MiniLM-L12-v2",
"is_active": true,
"created_at": "2025-06-01T14:00:00Z",
"updated_at": null
},
"message": null
}
Update Knowledge Base
PATCH /v1/console/knowledge-bases/{kb_id}
Partial update.
Authentication
Requires KNOWLEDGE_BASES.can_edit permission.
Path parameters
Request body
Updated Qdrant collection name.
Example request
curl -X PATCH https://mind-be.staging.miva.university/v1/console/knowledge-bases/6650d4e5f6a7b8c9d0e1f2a3 \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{ "description": "Updated diabetes management guidelines v2." }'
Response
Returns the full updated knowledge base object.
Delete Knowledge Base
DELETE /v1/console/knowledge-bases/{kb_id}
Soft-delete a knowledge base.
Authentication
Requires KNOWLEDGE_BASES.can_delete permission.
Path parameters
Example request
curl -X DELETE https://mind-be.staging.miva.university/v1/console/knowledge-bases/6650d4e5f6a7b8c9d0e1f2a3 \
-H "Authorization: Bearer <access_token>"
Response
Returns the soft-deleted knowledge base object with is_active: false.
Upload Document
POST /v1/console/knowledge-bases/{kb_id}/documents
Upload a file to a knowledge base. Automatically queued for ingestion.
Authentication
Requires KNOWLEDGE_BASES.can_create permission.
Path parameters
Request body
Content-Type: multipart/form-data
Supported file types: PDF, DOCX, DOC, PPTX, PPT, TXT, Markdown
Max file size: 50 MB
Example request
curl -X POST https://mind-be.staging.miva.university/v1/console/knowledge-bases/6650d4e5f6a7b8c9d0e1f2a3/documents \
-H "Authorization: Bearer <access_token>" \
-F "file=@diabetes-guidelines.pdf"
Response
{
"success": true,
"data": {
"id": "6650f6a7b8c9d0e1f2a3b4c5",
"knowledge_base_id": "6650d4e5f6a7b8c9d0e1f2a3",
"filename": "diabetes-guidelines.pdf",
"file_size": 2048576,
"content_type": "application/pdf",
"status": "pending",
"error_message": null,
"chunk_count": 0,
"created_at": "2025-06-01T14:00:00Z"
},
"message": "Document uploaded and queued for ingestion"
}
Ingestion status
| Status | Description |
|---|
pending | Uploaded, waiting for processing |
processing | Text extraction and embedding in progress |
completed | Fully indexed and searchable |
failed | Ingestion failed — check error_message |
List Documents
GET /v1/console/knowledge-bases/{kb_id}/documents
List all documents in a knowledge base.
Authentication
Requires KNOWLEDGE_BASES.can_view permission.
Path parameters
Query parameters
Number of records to skip.
Max records to return (1-100).
Example request
curl "https://mind-be.staging.miva.university/v1/console/knowledge-bases/6650d4e5f6a7b8c9d0e1f2a3/documents" \
-H "Authorization: Bearer <access_token>"
Response
{
"success": true,
"data": [
{
"id": "6650f6a7b8c9d0e1f2a3b4c5",
"filename": "diabetes-guidelines.pdf",
"status": "completed",
"chunk_count": 42,
"created_at": "2025-06-01T14:00:00Z"
}
],
"total": 1,
"page": 1,
"page_size": 20,
"total_pages": 1,
"message": null
}
Get Document
GET /v1/console/knowledge-bases/{kb_id}/documents/{doc_id}
Get a document’s details and ingestion status.
Authentication
Requires KNOWLEDGE_BASES.can_view permission.
Path parameters
Example request
curl https://mind-be.staging.miva.university/v1/console/knowledge-bases/6650d4e5f6a7b8c9d0e1f2a3/documents/6650f6a7b8c9d0e1f2a3b4c5 \
-H "Authorization: Bearer <access_token>"
Response
Returns the full document object (same shape as Upload Document response data).
Delete Document
DELETE /v1/console/knowledge-bases/{kb_id}/documents/{doc_id}
Permanently deletes the document record, removes its vectors from Qdrant, and deletes the file from S3.
Authentication
Requires KNOWLEDGE_BASES.can_delete permission.
Path parameters
Example request
curl -X DELETE https://mind-be.staging.miva.university/v1/console/knowledge-bases/6650d4e5f6a7b8c9d0e1f2a3/documents/6650f6a7b8c9d0e1f2a3b4c5 \
-H "Authorization: Bearer <access_token>"
Response
Returns the deleted document object.
Re-ingest Document
POST /v1/console/knowledge-bases/{kb_id}/documents/{doc_id}/reingest
Re-trigger the ingestion pipeline for a document. Resets status to pending and queues a new ingestion job.
Authentication
Requires KNOWLEDGE_BASES.can_edit permission.
Path parameters
Example request
curl -X POST https://mind-be.staging.miva.university/v1/console/knowledge-bases/6650d4e5f6a7b8c9d0e1f2a3/documents/6650f6a7b8c9d0e1f2a3b4c5/reingest \
-H "Authorization: Bearer <access_token>"
Response
{
"success": true,
"data": {
"id": "6650f6a7b8c9d0e1f2a3b4c5",
"knowledge_base_id": "6650d4e5f6a7b8c9d0e1f2a3",
"filename": "diabetes-guidelines.pdf",
"file_size": 2048576,
"content_type": "application/pdf",
"status": "pending",
"error_message": null,
"chunk_count": 42,
"created_at": "2025-06-01T14:00:00Z"
},
"message": "Document re-ingestion queued"
}