A widget embedded with data-knowledge-base-id calls this when it loads. One embedded with data-widget-id, as the dashboard’s snippet is, calls the saved-settings route instead. Call it yourself if you build your own UI and need the same answers: does this key need a CAPTCHA token, may the branding be hidden, and where is the MCP server.
GET https://app.kelu.dev/api/v1/public/knowledge-bases/:knowledgeBaseId/widget-config
Auth: client key. No CAPTCHA token needed.
curl https://app.kelu.dev/api/v1/public/knowledge-bases/KB_ID/widget-config \
  -H "X-Client-Key: kl_pk_..."

Response

{
  "knowledge_base_id": "3f6a...",
  "knowledge_base_name": "Acme Docs",
  "captcha_required": true,
  "recaptcha_site_key": "6Lc...",
  "hide_branding_allowed": false,
  "mcp_available": true,
  "mcp_url": "https://app.kelu.dev/mcp/acme",
  "mcp_oauth": true
}
FieldTypeDescription
knowledge_base_idstringThe knowledge base this key belongs to
knowledge_base_namestringIts name. The widget shows it in the header when data-product-name is not set
captcha_requiredboolWhether this key must send a reCAPTCHA v3 token on chat, search, feedback and form-deflect. Always false for a secret pair
recaptcha_site_keystringThe site key to mint reCAPTCHA v3 tokens with
hide_branding_allowedbooltrue on the Enterprise plan. Without it, the “Powered by Kelu” line stays even if data-hide-branding is set
mcp_availableboolWhether readers can connect AI tools to this knowledge base through the MCP server. Turns on the widget’s Use MCP button, whose menu is titled “Connect to AI Tools”. If the knowledge base has no Public MCP server yet, this call creates one
mcp_urlstringThe MCP server address to show readers. Left out when mcp_available is false
mcp_oauthbooltrue when mcp_url is a Public MCP server. Readers sign in themselves, so the install steps carry no key. Left out when false

Using it in a custom UI

  1. Fetch widget-config on load.
  2. If captcha_required is true, load reCAPTCHA v3 with recaptcha_site_key. Get a fresh token for each gated request. See CAPTCHA.
  3. Show “Powered by Kelu” unless hide_branding_allowed is true.
  4. If mcp_available is true, offer the MCP install at mcp_url.

Saved widget settings

If you saved a widget under Integrations → Website widget, its settings are here too:
GET https://app.kelu.dev/api/v1/public/widget-integrations/:widgetId/config
It returns every field above, plus id, enabled and config (the saved settings). One exception: config always has exit_feedback_enabled and satisfaction_feedback_enabled set to false and never has satisfaction_after_answers, whatever was saved. Readers rate answers with thumbs only. The widget must belong to the key’s knowledge base.
StatusWhen
403 WIDGET_DISABLEDThe widget is turned off
403 ORIGIN_NOT_ALLOWEDThe page’s origin is not in the widget’s allowed domains
404Unknown widget id, or a widget from another knowledge base
The same checks run on every chat, search and WebSocket request that sends this id as widget_id. A refused widget cannot answer questions either. The widget itself sends widget_id only with questions. Its Search tab and its matches while typing send none, so the server does not check the widget’s Off switch or site list for them. Only the client key’s own allowed origins apply.