ancient-afternoon-45616
07/23/2025, 12:42 PMtall-airline-16756
07/23/2025, 12:42 PMtall-airline-16756
07/23/2025, 12:45 PMUNKNOWN_REASON – Default or unknown reason
• CLIENT_INITIATED – Client initiated the disconnect
• DUPLICATE_IDENTITY – Another participant with the same identity joined
• SERVER_SHUTDOWN – Server instance is shutting down
• PARTICIPANT_REMOVED – Participant was removed via API
• ROOM_DELETED – Room was deleted via API
• STATE_MISMATCH – Session resume failed due to state mismatch
• JOIN_FAILURE – Client failed to connect fully
• MIGRATION – Server requested migration (cloud only)
• SIGNAL_CLOSE – Signal websocket closed unexpectedly
• ROOM_CLOSED – Room closed after all participants left
• USER_UNAVAILABLE – SIP callee did not respond
• USER_REJECTED – SIP callee rejected the call (busy)
• SIP_TRUNK_FAILURE – SIP protocol failure or unexpected response
• CONNECTION_TIMEOUT – Session timed out
• MEDIA_FAILURE – Media stream failure or timeout
attributes is a key-value map in the webhook payload that can include custom participant data. For SIP users, attributes may include SIP call status (such as dialing, ringing, automation, active, hangup) and SIP headers mapped to attributes. SIP-specific headers (like Twilio or Telnyx IDs) can also be included as attributes.
The ParticipantInfo object in webhook payloads contains fields such as sid, name, identity, metadata, attributes, kind (including PARTICIPANT_KIND_SIP for SIP users), and disconnect_reason.
This structure allows you to track SIP user status and call details directly from webhook events.
Sources: lib/livekit/proto/livekit_sip_pb.rb | packages/javascript/CHANGELOG.md | livekit-ffi/src/livekit.proto.rs | packages/livekit-rtc/src/proto/participant_pb.ts | livekit-protocol/livekit/protocol/models.py