The widget calls this when it loads. 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 “Connect to AI Tools” menu
mcp_urlstringThe MCP server address to show readers. Left out when there is none. Then use https://app.kelu.dev/mcp with the client key
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, or at https://app.kelu.dev/mcp when it is missing.

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). 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.