Developers
Embed your assistant on any website with a single snippet, or call the chat API from your own backend. Generate a publishable API key below to get started.
API keys
Publishable keys grant the ability to chat with your agents only; they can't read your inbox, contacts, or billing. Safe to embed in client-side code. Rotate freely.
Outbound webhooks
Get an HTTPS POST to your server when things happen in your workspace. Each delivery is signed with your endpoint secret (X-BMRelay-Signature: sha256=HMAC(secret, timestamp.body)) and retried with backoff. Endpoints that keep failing are disabled automatically.
Embed the chat widget
Paste this just before the closing </body> tag on any page of your website. A chat bubble appears in the bottom-right corner and talks to your agent in real time.
<script
src="https://your-app.example.com/widget.js"
data-api-key="YOUR_API_KEY"
data-agent-id="YOUR_AGENT_ID"
data-title="Chat with us"
defer
></script>- Create an API key above and copy it into
data-api-key. - The widget loads from your workspace, so it works on any domain.
- Conversations from the widget show up in your Inbox automatically.
Call the API directly
Prefer to build your own UI? POST to the chat endpoint. Reuse a stable session_id per visitor to keep conversation context across messages.
POST https://your-app.example.com/api/v1/public/agent/chatcurl -X POST https://your-app.example.com/api/v1/public/agent/chat \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{
"message": "What are your business hours?",
"agent_id": "YOUR_AGENT_ID",
"session_id": "visitor-123"
}'{
"reply": "We're open Mon–Fri, 9am–6pm.",
"status": "answered",
"session_id": "visitor-123",
"conversation_id": "cnv_…",
"agent_name": "Support Agent",
"citations": [{ "title": "Business hours", "score": 0.82 }]
}Authenticate with the header X-Api-Key: wak_… (or Authorization: Bearer wak_…). Requests are rate-limited to 30/min per key. If the agent can't answer confidently the reply returns status: "low_confidence" and the conversation is handed to a human in your Inbox.