{
"message_type": "conversation",
"event_type": "conversation.joined",
"conversation_id": "c69de076e8cf7494",
"timestamp": 1746000000.123,
"seq": 9,
"properties": {
"role": "user",
"participant_id": "hb5a4aae2d621",
"participant_name": "Alice"
}
}Joined/Left Event
Outbound: Tavus tells you when someone enters or leaves the conversation, so your own view of who is present can follow along.
conversation.joined fires when the PAL or a person arrives; conversation.left when they go. properties.role says which, and the other two properties follow from it.
A one-on-one conversation gets these too, and the same person keeps the same participant_id if they drop and reconnect, so you can key your own state on it.
participant_id and participant_name are the same two keys a turn carries on conversation.utterance and conversation.utterance.streaming, so you can match a turn to an arrival on the key name as well as the value.
conversation for conversation-layer app messages.
"conversation"
conversation.joined, conversation.left "conversation.joined"
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.
9
The unique identifier for the conversation.
"c69de076e8cf7494"
Show child attributes
Show child attributes

