<tavus-embed>renders the conversation inline and fills its container.<tavus-widget>renders a floating launcher; clicking it opens the conversation.
Quickstart
1
Create a deployment
Follow Deployments overview to create a widget or embed deployment in the PAL Maker. For installation, sizing, and attributes, see Widget and Embed.
2
Attach the Magic Canvas skill to the PAL
scheduling_embed (the one component that requires config to activate), add entries under config.components; see
Canvas configuration.Hosted client behavior
The hosted client handles everything the@tavus/cvi-ui integration requires you to wire up:
- Rendering. Cards overlay the call within the element’s bounds and are cleaned up when the conversation moves on.
- Interaction delivery. User interactions post to
POST /v2/conversations/{conversation_id}/canvas/interactions. The endpoint is public during an active conversation. Your conversation webhook receives thecanvas.interactionevent. - Sandboxing. Components render in sandboxed iframes and load from Tavus-approved hosts only.
tavus:* events. For browser-side callbacks, use the onInteraction prop in the @tavus/cvi-ui integration. For server-side handling, use your webhook or fetch interaction history (requires your API key):
Local development override
Both elements accept the same attributes:There is no API-key attribute. The deployment endpoints the element calls (
/init, /start, /end) are public and scoped to the deployment. token is a preview token, not an API key. Never put a Tavus API key in page markup.deployment-id is omitted, the override is used as-is and nothing is fetched.

