Knowledge Base API
Manage knowledge bases, wiki pages, sources, and configuration.
Base URL: https://api.bluenexus.ai/api/v1
Auth: Bearer token with account scope
Knowledge Bases
Each account can have multiple knowledge bases. One is always the default. Pages, sources, and logs are scoped to a specific knowledge base via the :kbId path parameter.
List Knowledge Bases
GET /knowledge/bases
Returns all knowledge bases for the account. Ensures the default KB exists.
Get Knowledge Base
GET /knowledge/bases/:kbId
Create Knowledge Base
POST /knowledge/bases
Body:
{
"name": "Product Docs",
"description": "Product documentation and FAQs",
"customInstructions": "Focus on extracting action items.",
"maxPagesLimit": 500
}
| Field | Required | Default | Description |
|---|---|---|---|
name |
Yes | — | Human-readable name (unique per account) |
description |
No | — | Description of the knowledge base |
customInstructions |
No | "" |
Custom instructions for the compilation LLM |
maxPagesLimit |
No | 500 |
Maximum wiki pages allowed |
Update Knowledge Base
PUT /knowledge/bases/:kbId
Body: same fields as create (all optional).
Set as Default
POST /knowledge/bases/:kbId/set-default
Atomically unsets the previous default and sets this knowledge base as the new default.
Delete Knowledge Base
DELETE /knowledge/bases/:kbId
Cannot delete the default knowledge base. Cascades: deletes all pages, sources, versions, conversation trackers, and logs in the KB.
Run Lint / Health Check
POST /knowledge/bases/:kbId/lint
Manually triggers the wiki health check (broken links, orphans, stale pages, duplicates, consolidation).
Knowledge Pages
All page endpoints are scoped to a knowledge base.
List Pages
GET /knowledge/bases/:kbId/pages
Query parameters:
| Param | Type | Description |
|---|---|---|
page |
number | Page number (default: 1) |
limit |
number | Items per page (default: 20) |
tag |
string | Filter by tag |
pageType |
string | Filter by type: entity, concept, summary, index, custom |
Get Page
GET /knowledge/bases/:kbId/pages/:slug
Returns the full page content including backlinks, confidence level, and typed relationships.
The relationships array contains typed connections to other pages:
{
"slug": "alice-smith",
"title": "Alice Smith",
"content": "...",
"confidence": "high",
"relationships": [
{ "targetSlug": "acme-corp", "type": "works_at" },
{ "targetSlug": "project-alpha", "type": "attended" }
],
"backlinks": ["team-structure", "q1-meeting-notes"]
}
Available relationship types: related_to, works_at, employed_by, founded, co_founded, attended, part_of, depends_on, mentioned_in.
Get Index
GET /knowledge/bases/:kbId/pages/index
Returns the _index page — the table of contents listing all pages.
Search Pages
GET /knowledge/bases/:kbId/pages/search?q=:query
Full-text search with content snippets. Returns matching pages ranked by relevance, boosted by backlink count (more-referenced pages rank higher).
Query parameters:
| Param | Type | Description |
|---|---|---|
q |
string | Search query (required) |
tags |
string | Comma-separated tag filter (optional) |
Response fields include:
| Field | Type | Description |
|---|---|---|
slug |
string | Page identifier |
title |
string | Page title |
content |
string | Snippet with keyword context |
tags |
string[] | Page tags |
pageType |
string | Page type |
confidence |
string | "low", "medium", or "high" — based on source count |
updatedAt |
string | Last update timestamp |
Update Page
PUT /knowledge/bases/:kbId/pages/:slug
Manually edit a page. Sets lastCompiledBy: "user" — the compiler won't overwrite user edits.
Body:
{
"title": "Updated Title",
"content": "Updated markdown content...",
"tags": ["tag1", "tag2"]
}
Delete Page
DELETE /knowledge/bases/:kbId/pages/:slug
Returns 204 No Content. Triggers async lint to repair broken wiki links.
List Page Versions
GET /knowledge/bases/:kbId/pages/:slug/versions
Query parameters:
| Param | Type | Description |
|---|---|---|
page |
number | Page number (default: 1) |
limit |
number | Items per page (default: 20) |
Get Page Version
GET /knowledge/bases/:kbId/pages/:slug/versions/:version
Returns a specific historical version of a page.
Knowledge Sources
All source endpoints are scoped to a knowledge base.
List Sources
GET /knowledge/bases/:kbId/sources
Query parameters:
| Param | Type | Description |
|---|---|---|
page |
number | Page number (default: 1) |
limit |
number | Items per page (default: 20) |
type |
string | Filter by type: file, url, text, conversation |
status |
string | Filter by status: pending, processing, compiled, failed |
Get Source
GET /knowledge/bases/:kbId/sources/:sourceId
Create Source
POST /knowledge/bases/:kbId/sources
Creates a source and triggers automatic compilation.
Body:
{
"type": "text",
"name": "Product FAQ",
"rawContent": "# FAQ\n\nQ: What is the pricing?\nA: ...",
"url": "https://example.com/doc",
"metadata": {}
}
| Field | Required | Description |
|---|---|---|
type |
Yes | "text", "url", or "file" |
name |
Yes | Human-readable name |
rawContent |
For text/file | Document content |
url |
For url | URL to fetch |
metadata |
No | Additional metadata |
Reprocess Source
PUT /knowledge/bases/:kbId/sources/:sourceId/reprocess
Re-triggers compilation for an existing source.
Delete Source
DELETE /knowledge/bases/:kbId/sources/:sourceId
Returns 204 No Content.
Knowledge Logs
List Logs
GET /knowledge/bases/:kbId/logs
Returns compilation and lint logs for the knowledge base.
Knowledge Config
Account-level configuration (not scoped to a specific knowledge base).
Get Config
GET /knowledge/config
Auto-creates the config if it doesn't exist.
Update Config
PUT /knowledge/config
Body:
{
"enabled": true,
"autoIngestConversations": true
}
| Field | Type | Default | Description |
|---|---|---|---|
enabled |
boolean | true |
Master toggle for the knowledge base system |
autoIngestConversations |
boolean | false |
Auto-capture conversations after 30 min idle |
Per-knowledge-base settings (customInstructions, maxPagesLimit) are configured via the knowledge base CRUD endpoints above.
Chat File Upload
Upload File
POST /v1/agents/:agentId/chat/files
Content-Type: multipart/form-data
Scope: agents-all or agents-use
Upload a file for use in chat messages. Stored in GridFS.
| Field | Type | Description |
|---|---|---|
file |
binary | The file to upload (multipart form field) |
Response:
{
"fileId": "abc123...",
"filename": "report.pdf",
"mimeType": "application/pdf",
"size": 245760,
"purpose": "chat"
}
Max file size: configurable via MAX_FILE_UPLOAD_SIZE_MB env var (default: 10MB).
Supported formats: PDF, DOCX, CSV, TXT, MD, PNG, JPG, GIF, WEBP.