Akili
Docs navigation

Embeddable webchat

Put an agent on your own website with a couple of script tags — isolated from your styles, locked to your origins.

1. Include the script

Anywhere before </body>
<script src="https://cdn.akili.io/embed/webchat.v1.js" defer></script>

The widget is a zero-dependency bundle around 15 KB gzipped, and it renders inside Shadow DOM — your site's CSS can't break it, and it can't leak styles into your site.

2. Initialize it

Initialize with your agent and public key
<script>
  window.Akili.init({
    agentId: "agt_your_agent_id",
    publicKey: "pk_live_...",     // an identifier, not a secret
    accentColor: "#0052ff",
    position: "bottom-right",
    headerText: "Ask us anything"
  });
</script>

Configuration reference

OptionWhat it does
agentIdWhich agent answers — build and version it like any other agent.
publicKeyPublic identifier for your workspace. Safe to ship in HTML; the real gate is the origin allowlist.
accentColor / position / headerText / avatarBasic theming. Full token-based theming and branding packs are available; white-label is a paid entitlement.
visitor metadataOptional context about the visitor your agent can use.

How it stays yours

  • Origins are allowlisted server-side — the widget only works on domains you've registered, no matter who copies your embed code.
  • Sessions use short-lived signed tokens scoped to the origin, with per-visitor daily caps.
  • Events (opened, closed, conversation started, message) are exposed on a bus for your own analytics.

Human handoff

When a conversation needs a person, the widget emits handoff events (requested, accepted, resolved) your systems can subscribe to — the agent doesn't pretend to be support staff it isn't.

CMS guides

Step-by-step embed guides exist for WordPress, Wix, and Webflow in the in-app docs. The widget speaks ten languages — English, Kiswahili, Spanish, French, German, Portuguese, Italian, Japanese, Chinese, and Arabic.