Create a knowledge base
Authorizations
User session JWT or instance API key (iak_*). Send as Authorization: Bearer <token>.
Body
2564096Defaults to the platform-configured provider. Not
strictly server-validated - an unsupported value
surfaces as a 500 from the vector router rather
than a 400.
mock, elasticsearch, opensearch, redis, pgvector, qdrant, pinecone Defaults to the platform-configured embedding model.
tika, tika-ocr, unstructured, unstructured-ocr, llm Binds the store to an agent (conversation scope).
Optional expiry policy persisted on the store row (e.g. conversation-scoped stores).
Response
Knowledge base created (status creating until provisioned, then active).
Knowledge base metadata. PATCH is metadata-only; web-crawl
configuration lives in /web_sources.
128^vs_[A-Za-z0-9-]+$knowledge_base 256mock, elasticsearch, opensearch, redis, pgvector, qdrant, pinecone Physical index name on the provider.
creating before external resources are provisioned;
active after metadata + physical setup + owner binding
succeed; failed is a visible failed state with a
cleanup-job hook; deleting is the transactional deletion
window.
creating, active, failed, deleting First-class owner principal (§F-6). For agent-owned
(conversation-scope) stores type: agent and id is the
agent id - represented as a principalType: agent binding
in the platform-managed product_bindings store, NOT a
blanked owner_user_id. owner_user_id / agent_id below
mirror this for convenience and filtering.
Tenant scope. All knowledge-base lookups are scoped by this field.
4096Default chunking for documents; overridable per document.
tika, tika-ocr, unstructured, unstructured-ocr, llm, null Per-status aggregate over this store's documents.
Maintained with transitions guarded by each document's
index_generation - duplicate or stale crawler callbacks
cannot corrupt counters.
owner.id when owner.type == user; null for agent-owned stores.
owner.id when owner.type == agent; null otherwise. Filterable on list.
Caller's effective role, computed at read time from access
bindings. Null on cross-workspace (workspace_jwt) reads.
owner, admin, editor, reader, null owner, admin_binding, editor_binding, reader_binding, agent_binding, trusted_workspace, null Knowledge-base processing / parser-backend health (§F-5). The
crawler is the universal parse/fetch backend for EVERY document
(uploads, single pages, web crawl), so this is present whenever
the knowledge base has documents - even with zero web sources.
Live fields come from the crawler; when it is unreachable
crawler_reachable is false and the live status/metrics
degrade to null rather than erroring (replacing the legacy
overloaded status:"unknown" + crawler_error). DB-derived
per-seed counts live on /web_sources and remain available
regardless.
Engine-global crawl settings - one Crawler instance per KB, so these are the single values the crawler honors (they are NOT per-seed). Read from the store-level columns; edited via the KB PATCH (added 2026-07-17, web-sources crawl-settings re-home).
Number of registered web sources (crawl seeds). Summary
metadata for list cards - the seed objects themselves stay
on /web_sources (added 2026-07-15, SPA migration F1).
x >= 0Unix seconds.