Connect Kiedo to your stack
A single async script tag for web. Webhook-based setup for messaging channels. A clean REST and WebSocket API for everything else.
Embed in under a minute
Paste this snippet into your site's <head> or just before </body>. The widget loads asynchronously and won't block your page render.
<!-- Kiedo Widget — async, non-blocking -->
<script>
(function(w,d,k){
var s=d.createElement('script');
s.async=true;
s.src='https://your-domain.com/widget/kiedo-widget.js';
w[k]=w[k]||function(){(w[k].q=w[k].q||[]).push(arguments)};
s.onload=function(){ KiedoWidget('init',{ apiKey:'cb_live_YOUR_KEY' }); };
d.head.appendChild(s);
})(window,document,'KiedoWidget');
</script>
API Keys
Keys follow the format cb_live_*. Generate them from the tenant admin panel. Each key is scoped to a single bot configuration.
i18n Ready
Pass a locale option to KiedoWidget('init', {...}) to serve the widget in the visitor's language. Widget strings are fully externalised.
Booking Mode
Pass features: ['booking'] to enable the appointment scheduling UI inside the widget. No third-party calendar integration required.
Connect via Meta Cloud API
Add your WhatsApp Business credentials to Kiedo's admin panel and point Meta's webhook to your Kiedo instance. All message routing, RAG, and escalation happens automatically.
-
1
Create a Meta App
In Meta for Developers, create a Business app and add the WhatsApp product.
-
2
Add credentials to Kiedo
Paste your Phone Number ID, Business Account ID, and access token into your tenant's WhatsApp settings.
-
3
Point Meta webhook to Kiedo
Set the webhook URL to
https://your-domain.com/api/v1/webhooks/whatsappand verify with your token. -
✓
Live
Send a test message. Your bot responds from the same knowledge base as your web widget.
# WhatsApp webhook endpoint
POST /api/v1/webhooks/whatsapp
# Kiedo verifies the Meta signature and routes the
# message through the full RAG + escalation pipeline.
# Replies are sent back via Meta Cloud API.
# Health check
GET /health
# Returns: { "db": "ok", "redis": "ok" }
Connect your Telegram bot
Register a bot with BotFather, paste the token into Kiedo's admin panel, and your Telegram bot is backed by the full RAG pipeline — in under two minutes.
# Telegram webhook endpoint
POST /api/v1/webhooks/telegram
# Set your bot webhook via Telegram Bot API:
curl -X POST https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook \
-H "Content-Type: application/json" \
-d '{"url": "https://your-domain.com/api/v1/webhooks/telegram"}'
Build on top of Kiedo
Every Kiedo capability is accessible via REST. WebSocket endpoints provide real-time streaming for chat sessions and operator consoles. Full OpenAPI docs at /api/docs.
API Surface
-
REST/api/v1/*— admin, superadmin, widget, public, auth, webhooks -
WS/ws/chat— visitor real-time streaming -
WS/ws/admin— operator console + escalation events -
DOCS/api/docs— OpenAPI / Swagger UI -
HEALTHGET /health— returnsdb+redisstatus
Authentication
- JWT RS256 — 15-minute access tokens, 7-day refresh tokens
- Widget API keys:
cb_live_*format viaX-API-Keyheader - Optional 2FA (TOTP) on all admin routes
- Rate-limited with Redis; lockout after failed attempts
# Health check
curl https://your-domain.com/health
# → {"db":"ok","redis":"ok"}
# Start a chat session (widget auth)
curl -X POST https://your-domain.com/api/v1/widget/session \
-H "X-API-Key: cb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"product_id": "prod_xxx"}'
# → {"session_token":"...","ws_url":"/ws/chat"}
# List tenants (superadmin)
curl https://your-domain.com/api/v1/admin/tenants \
-H "Authorization: Bearer <ACCESS_TOKEN>"
# Upload a document
curl -X POST https://your-domain.com/api/v1/documents \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-F "file=@knowledge-base.pdf" \
-F "bot_id=bot_xxx"