The chat embed is a self-contained IIFE bundle that drops the WaniWani chat into any website. It talks directly toDocumentation Index
Fetch the complete documentation index at: https://docs.waniwani.ai/llms.txt
Use this file to discover all available pages before exploring further.
app.waniwani.ai, so no backend proxy is required on your side.
Platform feature. The dashboard generates the embed snippet for your project. Open app.waniwani.ai to get yours, or read more about the Platform.
<div data-waniwani-embed></div> marker. You control the size by sizing that container with CSS. There is no floating bubble.
Quick start
- Open your project on app.waniwani.ai and copy the chat embed snippet from the project settings.
- Paste it into your site’s HTML, alongside a mount point where you want the chat to appear:
Sizing
The embed fills its container. Give the<div data-waniwani-embed> a definite size via CSS:
ResizeObserver mirrors the container’s max-height onto the embed so padding and borders are respected.
Overriding attributes
The snippet you paste is a starting point. After pasting, you can editdata-* attributes on the <script> tag to tweak behavior:
| Attribute | Type | Notes |
|---|---|---|
data-title | string | Header title. Defaults to "Assistant". |
data-welcome-message | string | Greeting shown before the first message. |
data-placeholder | string | Input field placeholder. |
data-suggestions | string (comma-separated) | Initial suggestion chips. |
data-enable-thread-history | boolean | Persist threads in IndexedDB. Defaults to false. |
data-css | string | URL to a custom stylesheet loaded into the shadow root. |
data-primary-color | string | Brand color (bubble, send button). |
data-background-color | string | Panel background. |
data-text-color | string | Default text color. |
data-font-family | string | Custom font stack. |
data-token, data-channel-id, data-api, the script src) as the dashboard generated them.
Full type definitions: EmbedConfig and ChatTheme.
Programmatic init
For runtime control (computing options dynamically, mounting on demand), drop thedata-token attribute from the script tag and call init() manually. You still need the wiring attributes from a dashboard-issued snippet:
init() returns an instance with destroy() and sendMessage(text). You can also call window.WaniWani.chat.destroy() and window.WaniWani.chat.sendMessage("...") directly on the global.
Self-hosting the JS bundle
If you’d rather not load from a CDN, pin a specific SDK version and serve the bundled file yourself. Thedata-* attributes still come from the dashboard snippet — you’re only swapping where embed.js is served from:
How it works
- The script reads its own
data-*attributes (token, channel ID, theming, content overrides). - On
DOMContentLoaded(or immediately, if the DOM is already ready), it locates[data-waniwani-embed]and mounts the chat inside it via Shadow DOM. - The chat calls
app.waniwani.ai/api/mcp/chatwith the project token and streams responses back through Server-Sent Events. - Conversation history lives only in memory by default; set
data-enable-thread-historyto persist threads in IndexedDB on the user’s device.