Skip to content

Documentation

One script tag.

There is not much to learn. Everything below fits on one page deliberately.

Install

Paste one line before your closing </body> tag. The defer attribute means it never blocks your page render, and the widget mounts after your content is interactive.

<script
  src="https://chatbrace.com/widget.js"
  data-key="cb_live_YOUR_WIDGET_KEY"
  defer
></script>

Lock it to your domains

The widget key is public by design — it is visible in your page source and always will be. It is a scope, not a secret. Add your domains to the allow-list in the dashboard and requests from anywhere else are refused. An empty list means any origin, so you are never locked out of your own widget by a typo.

https://yourdomain.com
https://*.yourdomain.com
http://localhost:3000

Override the design tokens

Pick any of the 24 designs, then layer your own brand colour, corner radius and screen position over it. You are changing tokens, not forking a design, so the design keeps getting improvements.

{
  "accent": "#0f7b6c",
  "onAccent": "#ffffff",
  "radius": 16,
  "position": "left"
}

Call the API directly

If you would rather build your own interface, the endpoint the widget uses is the endpoint you use. Never send conversation history from the client — the server owns it, and anything you send is ignored.

POST /api/widget/chat
Content-Type: application/json

{
  "widgetKey": "cb_live_YOUR_WIDGET_KEY",
  "conversationId": null,
  "message": "Do you ship to Germany?"
}

A note on AI disclosure

Every design states “AI assistant” at the start of the conversation, and this is not configurable. Under the EU AI Act, people must be told they are interacting with an AI before the conversation begins — so it is an obligation rather than a preference, and we would rather carry it for you than let you switch it off by accident. More in the terms.

Put it on your site
before you finish your coffee.

A hundred free messages, no card, and a playground to try it in before you touch a single line of your own markup.