Build any answer experience on our pipeline

Everything the widget does is available to your code: streaming RAG chat, hybrid search, feedback, and suggested questions — via the public REST API, the hosted widget script, an MCP server per knowledge base, and the React and JavaScript SDKs.

The developer surface

Same pipeline as the widget, full control of the experience

Client-key authenticated

Public API

  • SSE streaming chat with citations
  • Hybrid search with ranked, scored results
  • Suggested questions and related articles
  • Form deflection with confidence scores
  • Feedback and threaded conversations

Widget & MCP

Available today
  • Hosted widget — one script tag from widget.kelu.dev
  • MCP server per knowledge base for AI tools and IDE assistants
  • Public keys for client-side, ID + secret for servers
  • React and JavaScript SDKs — npm install @keluhq/react or @keluhq/sdk

Keys & Scoping

Access you control
  • kl_pk_ public keys safe for browsers
  • kl_ci_/kl_cs_ credentials for backend calls
  • Keys scoped per knowledge base
  • Allowed source groups narrow retrieval per key
  • Revoke instantly from the dashboard
From script tag to full custom

Choose your integration depth

Start with the widget's one script tag. Drop to the REST API when you want your own UI, a server-side integration, or a mobile app. Connect AI tools and IDE assistants through the MCP server. Use the React or JavaScript SDK to skip the plumbing. Every level runs the same retrieval, grounding, and citations.

  • Widget: one script tag, themeable, chat/sidebar/search modes with Cmd+K
  • API: SSE streaming chat and search over HTTPS
  • MCP: a search tool named after the knowledge base, plus ask_question, for AI assistants
  • SDKs: @keluhq/react (<KeluChat />, useKeluChat) and @keluhq/sdk on npm
REST API (SSE)
curl -N https://app.kelu.dev/api/v1/public/knowledge-bases/KB_ID/chat \
-H "X-Client-Id: kl_ci_..." \
-H "X-Client-Secret: kl_cs_..." \
-H "Content-Type: application/json" \
-d '{"query": "How do I paginate the list endpoint?"}'

data: {"citations": [...], "done": false}
data: {"delta": "Pass the cursor from ", "done": false}
data: {"done": true, "thread_id": "9b1f...", "citations": [...]}
Why teams trust the answers

Answers you can check, from a system that won't guess

01

Every answer from your docs shows its sources

Numbered links point to the page and section each part of the answer came from, so anyone can check it in one click.

02

It says "I don't know"

When your content does not cover a question, Kelu does not guess. In a helpdesk it posts nothing and tags the ticket for your team.

03

Credentials are encrypted

Connection secrets are sealed with AES-256-GCM. If one can't be opened, the sync stops instead of running without it.

Got questions?

Frequently Asked Questions

Common questions about API & SDKs

Start building on the API

Grab a client key and stream your first cited answer in minutes.

Free to start · No credit card required