Conversation Flow
1
Attach the Magic Canvas skill
Attach via Attaching enables every component with default settings, including components Tavus adds later. The exception is
PUT /v2/pals/{pal_id}/skills/magic_canvas; remove with DELETE on the same path:scheduling_embed, which stays inactive until you set its scheduling_url.config.components is a sparse overlay: add an entry only to configure or disable a component ({"enabled": false}); unlisted components stay on. See Configuring your PAL.2
Create a conversation
Video conversations get Canvas actions automatically. Audio-only, text-chat, and external-meeting (
meeting_url, e.g. Zoom/Teams/Meet) conversations never get them.3
PAL shows a card
The PAL invokes a Canvas action; the card renders in a side rail beside the PAL video, and the PAL can clear it mid-conversation.
4
Interaction flows back
When the user submits, skips, or dismisses a card:
- The PAL responds to it, as it does to speech.
- Tavus records it and delivers a
canvas.interactionevent to your conversation webhook, once per interaction.
When cards appear
The PAL decides when to show a card; you do not call an API to trigger one. Steer that behavior withusage_guidance on the skill, the PAL’s system prompt, or per-conversation context. See When cards appear for how each lever fits.
Hosted vs SDK
Both use the same PALs, components, and webhook; the difference is how much of the UI you own.Components
Seven components: four interactive (submit an answer or skip) and three display-only (dismiss only).Rendering
Components render in a sandboxed iframe that isolates styles and scripts in both directions, served from Tavus infrastructure. To render cards in your own React tree, register a renderer per component in the SDK; interactions flow back identically. See Custom rendering.Next Steps
- Configuring your PAL: attach the skill and configure components
- Hosted embed and widget: the no-code path
- React SDK:
<MagicCanvas>in your own app - Canvas interactions: webhooks, recording, and history

