Overview
A widget is an embeddable voice call entry point. You create a widget, configure its appearance and linked assistant, then embed it in your product. When a user clicks the call button, your frontend callsPOST /v1/widgets/create-call to get a WebSocket URL and starts the audio session.
Required scopes: widgets:read (read), widgets:write (create/update/delete/call)
POST /v1/widgets
Creates a new widget for your organization. Pass assistantId to attach an existing agent at creation time — if a widget already exists for that agent, the existing widget is returned instead of creating a duplicate. Omit it to create an unattached widget you configure later via PATCH /v1/widgets/{id}.
201 Created
403 missing widgets:write scope
GET /v1/widgets
Lists all widgets for your organization.
GET /v1/widgets/{id}
Returns a single widget by ID.
PATCH /v1/widgets/{id}
Updates a widget’s appearance, assistant, and allowed origins.
400 validation error · 403 missing widgets:write scope · 404 widget not found
POST /v1/widgets/create-call
Creates a call session for a widget. Call this from your server when a user clicks the call button in your UI.
201 Created
gateway.url to your browser client to open the WebSocket connection. The call_id can be used later to retrieve the transcript via GET /v1/calls/{id}/transcripts.
Common errors: 400 invalid payload · 403 missing widgets:write scope · 404 widget not found
DELETE /v1/widgets/{id}
Permanently deletes a widget.
403 missing widgets:write scope · 404 widget not found