important-judge-78504
04/29/2026, 8:34 PMtall-airline-16756
04/29/2026, 8:34 PMtall-airline-16756
04/29/2026, 8:34 PMctx.connect().
The job ctx gives you participant information as soon as the job starts. For example, calling ctx.wait_for_participant() returns a Participant object whose attributes you can read (e.g., participant.attributes.get("key")) before calling ctx.connect(). You can also attach a participant_attributes_changed listener on the room object prior to connecting to observe updates.
If you want, tell me which SDK/language you’re using and I’ll show a short code example.
Sources: Job lifecycle | LiveKit Documentation, with interactive elementsimportant-judge-78504
04/29/2026, 9:29 PMtall-airline-16756
04/29/2026, 9:29 PMctx.wait_for_participant() returns a Participant, that object already includes attributes (you can call participant.attributes.get("key") immediately). Attributes can still change afterward, so if you need updates, subscribe to the participant_attributes_changed event on the room.
If you want, tell me your SDK/language and I’ll show a brief code example.
, with interactive elementsimportant-judge-78504
04/29/2026, 9:30 PMtall-airline-16756
04/29/2026, 9:30 PMimportant-judge-78504
04/29/2026, 9:33 PMtall-airline-16756
04/29/2026, 9:33 PMctx.wait_for_participant() before `ctx.connect()`; a Participant returned by ctx.wait_for_participant() includes its attributes immediately. You do not need an active room connection to retrieve that participant object or read its attributes.
Attributes can still change later, so if you need updates subscribe to the participant_attributes_changed event after you have a room (or when you call ctx.connect()).
If you’re seeing different behavior (e.g., from issue #2510), please paste the issue text or a link and state which SDK/language and a short repro so I can investigate.
, with interactive elements