Skip to content
Try Free →

Audience on knowledge sources

Last updated: · 2 min read

What Audience does

Most knowledge bases mix content you are happy to say to anyone (product pages, public help articles) with content you are not (internal runbooks, pricing tactics, partner notes). Audience is the switch that keeps the second kind out of the public chatbot.

  • public: the default. Eligible for every channel, including the website widget and the hosted chat page.
  • internal: excluded from retrieval whenever the request runs on a public channel.

Audience is set per knowledge source (a document or a snippet). There is no workspace-level switch to turn it on: the filter is always applied on public channels.

How the filter works

The filter runs in the retrieval layer, not in the prompt. When a public-channel request retrieves chunks, any chunk whose source is marked internal is dropped from the candidate set before the list is handed to the model. The model is never given that text, so it cannot quote it or paraphrase it in that answer.

Two limits worth knowing:

  • This is a retrieval filter, not an access-control system for your data. It governs which chunks reach the model on a public channel. It is not a substitute for not uploading content you cannot risk being surfaced by a mistake, a misconfiguration, or a future bug.
  • Internal sources remain visible inside your dashboard. Anyone on your team who can open the workspace can read them.

Setting the Audience

In the dashboard. Open Knowledge, open a source's settings, and pick an Audience:

  • Public (Website Chatbot & Internal Team)
  • Internal Team Only

The same dialog carries the source's Priority setting. The change takes effect on new chat requests; a short cache window (about 30 seconds) applies before every request sees it.

Over the API.

Terminal window
curl -X PATCH \
"https://api.askvault.co/api/workspaces/{workspace_id}/knowledge-sources/{source_type}/{source_id}/settings" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"audience": "internal"}'

source_type is document or snippet. audience accepts public or internal only. Any other value is rejected with a validation error. The same endpoint also accepts enabled and priority.

Common pitfalls

A value other than public or internal is rejected. Plan names, team names and custom segments are not audience values. Use internal for anything that should not reach the public chatbot.

Marked internal but still answered publicly. Confirm the setting saved on the source that owns the content. Audience is per document and per snippet, and it is not inherited from the source it was crawled or imported from.

A whole crawled site should be internal. There is no bulk audience control today. Set it on each source, or keep internal content in a separate workspace.

Was this page helpful?