Deploy

Embeddable chat widget

The widget is the fastest way to put an agent in front of users: a snippet you paste on your site, backed by a public key that's safe to ship in the browser.

Chat or voice

The widget runs in one mode, and you don't set it on the widget. It follows the agent's own Where it talks setting: an agent set to Voice gets a voice-call widget, where visitors talk to it and the transcript sits behind a toggle, and any other agent gets the text chat widget. This is the second place a voice agent takes calls, alongside a phone number, and it needs no number of its own: a voice and a widget key are enough.

Changing that setting rewrites widgets that are already live. Switch an agent from Chat to Voice and every embed on your site becomes a voice call the next time a visitor loads the page, with the text input gone. Switching back returns them to text chat. The dashboard warns you before you save.

A public, domain-restricted key

The widget runs in the browser, so it uses a dedicated widget key (prefix hania_) rather than your account key. The widget key is public by design and restricted to the domains you allow, with its own hourly rate limit. Create one per agent, naming it for where it'll live (for example, "Marketing site").

Never use your account hania_sk_ key in the widget or any client-side code; that key is a full-tenant secret for your backend only. The widget uses the public hania_ key.

Customize the look

Tune the widget's appearance and copy to match your site: theme color, position, title, greeting and welcome message, placeholder text, avatar, and whether to show branding. Changes apply to the live widget, with no redeploy needed.

Get the embed snippet

Once you have an agent, a widget key, and your customization, grab the ready-to-paste embed snippet for that agent and key, and drop it into your site's HTML. You can manage keys, customization, and the embed code in the Widgets area of the dashboard, or over the Widgets API.

Restrict each widget key to the exact domains it should run on. If a key is ever misused elsewhere, the domain restriction and rate limit contain the blast radius, and you can revoke it any time.