Update knowledge base metadata and crawl settings
Metadata (name, description, chunking_strategy, parser,
file_parsing) plus the engine-global crawl_settings (partial
object). Provider, embedding, and index are immutable. Per-seed
listing lives in /web_sources (url + crawler_options only).
crawl_settings.webpages_limit is governance-capped (Platform →
Org); null re-inherits the resolved governance default - it
can never bypass the cap (the resolved value is persisted, a
snapshot: later org-cap changes do not retro-apply).
crawl_settings.paused writes the store-level pause directly:
creating or mutating seeds can never change it. A crawler-sync
failure fails the PATCH (CRAWLER_SYNC_FAILED, 502) before any
metadata mutation. Requires editor+.
Authorizations
User session JWT or instance API key (iak_*). Send as Authorization: Bearer <token>.
Path Parameters
Knowledge base id. Legacy physical prefix vs_ (the kb_ rename is deferred).
128^vs_[A-Za-z0-9-]+$Query Parameters
Agent context for agent-owned knowledge bases.
Body
Response
Updated knowledge base.
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.