Started/Stopped Speaking Event
conversation.started_speaking and conversation.stopped_speaking with properties.role set to "pal" or "user".
For PAL turns, Tavus also sends a legacy duplicate app-message with the same payload except properties.role is "replica" instead of "pal". New integrations should handle "pal"; keep accepting "replica" until you drop legacy support.
On conversation.stopped_speaking, properties also includes duration (seconds) and interrupted (whether the speaker was cut off).Outbound: Tavus notifies you when the PAL or the user starts or stops speaking, using one event stream and a properties.role field instead of separate user- versus PAL-only events.
conversation.started_speaking fires when either party begins speaking; conversation.stopped_speaking when either stops.
For PAL turns, Tavus sends duplicate app-messages with the same payload except properties.role: "pal" (new integrations) and "replica" (legacy).
conversation for conversation-layer app messages.
"conversation"
conversation.started_speaking or conversation.stopped_speaking.
conversation.started_speaking, conversation.stopped_speaking "conversation.started_speaking"
Unix timestamp (seconds since epoch) indicating when this event was created. Use this to build timestamped transcripts or reconstruct the timeline of a conversation.
1746000000.123
Monotonic per event; a higher seq was emitted later. Use with turn_idx as in Event ordering and turn tracking.
42
Identifier for correlating this speaking span with conversation.utterance, conversation.tool_call, and other events from the same turn.
"83294d9f-8306-491b-a284-791f56c8383f"
Turn index; increments when conversation.respond is processed. Groups utterances, tool calls, and speaking-state events for the same turn. See Event ordering and turn tracking.
3
Always includes role ("pal" or "user") identifying who started or stopped speaking. Legacy duplicate PAL events use "replica" instead of "pal".
On conversation.stopped_speaking only, also includes interrupted (whether the speaker was cut off mid-speech before finishing naturally) and duration (how long they spoke, in seconds; may be null if the start time could not be determined).

