Events
This is a list with examples of all events that can be observed during a meeting.
room_update
Received after connection is established, when the room is ready, or room shutdown changes to true.
{
"type": "room_update",
"content": {
"id": "6576daef1f138900153d0762",
"name": "Observer demo",
"ready": true,
"started_at": "2023-12-11T09:48:32.031Z",
"shutdown": false,
"guest_token": "jCWzhzCWONkbIubUYF7PD3hP",
"options": {
"show_names": true,
"show_label": true,
"exit_url": null,
"recording_available": true,
"broadcast_available": true,
"layout_available": true,
"layout": "auto",
"reaction_available": true,
"suggest_guest_names": true,
"lock_available": true,
"kick_available": true,
"sfu_mode": "ptp",
"layout_users": null,
"layout_name": null,
"layout_map": null,
"voice_activation": false,
"custom_fields": {},
"widescreen": true,
"background_color": "#121212"
},
"participants": [],
"playbacks": [],
"presentation": null,
"broadcasts": [],
"recording": null
}
}
You can already see all current participants, playbacks, broadcasts, and the recording's active state.
When the meeting shuts down, the connection is automatically closed.
participant_update
As soon as a participant joins or leaves the meeting, this event is triggered and you can determine join or leave by the online
parameter.
{
"type": "participant_update",
"participant": {
"id": "test@observer.com",
"room_id": "6576daef1f138900153d0762",
"name": "Observer",
"avatar": null,
"guest": false,
"online": true
}
}
recording_update
Each recording has 3 states. Start, stop, and finish. So you will receive 3 events and you can distinguish them by the duration
and links.download
fields.
- At start, both are null
- At stop, duration is set, but download is null
- At finish, both are set
{
"type": "recording_update",
"recording": {
"id": "6576db593df56e00150ae3ce",
"created_at": 1702288218,
"duration": 5,
"links": {
"self": "https://api.eyeson.team/recordings/6576db593df56e00150ae3ce",
"download": "https://fs.eyeson.com/meetings/6576daf01f138900153d0763/6576db593df56e00150ae3ce.webm?X-Amz-Algorithm=..."
},
"user": {
"id": "test@observer.com",
"name": "Observer",
"avatar": null,
"guest": false,
"joined_at": "2023-12-11T09:48:34.433Z"
},
"room": {
"id": "6576daef1f138900153d0762",
"name": "Observer demo",
"ready": true,
"started_at": "2023-12-11T09:48:32.031Z",
"shutdown": false,
"guest_token": "jCWzhzCWONkbIubUYF7PD3hP"
}
}
}
broadcasts_update
When a live stream starts, the broadcasts array will be filled. When it ends, the broadcasts array is empty.
{
"type": "broadcasts_update",
"broadcasts": [
{
"id": "generic",
"platform": "generic",
"player_url": "",
"user": {
"id": "test@observer.com",
"name": "Observer",
"avatar": null,
"guest": false,
"joined_at": "2023-12-11T09:48:34.433Z"
},
"room": {
"id": "6576daef1f138900153d0762",
"name": "Observer demo",
"ready": true,
"started_at": "2023-12-11T09:48:32.031Z",
"shutdown": false,
"guest_token": "jCWzhzCWONkbIubUYF7PD3hP"
}
}
]
}
options_update
As soon as any of the options change, this event is triggered. But for now this is only usable for layout changes and its related fields
show_names, layout, layout_users, layout_name, layout_map, and voice_activation.
{
"type": "options_update",
"options": {
"show_names": true,
"show_label": true,
"exit_url": null,
"recording_available": true,
"broadcast_available": true,
"layout_available": true,
"layout": "auto",
"reaction_available": true,
"suggest_guest_names": true,
"lock_available": true,
"kick_available": true,
"sfu_mode": "ptp",
"layout_users": [
"",
"",
"",
"",
"",
"",
"",
"",
""
],
"layout_name": "nine",
"layout_map": null,
"voice_activation": false,
"custom_fields": {},
"widescreen": true,
"background_color": "#121212"
}
}
snapshot_update
You might already guessed it, whenever a snapshot has been created, you will find all information in this event. In future, the snapshots array might contain multiple objects if multiple snapshots have been created at the same time.
{
"type": "snapshot_update",
"snapshots": [
{
"id": "6576dd5ee71541001518fc11",
"name": "1702288734",
"links": {
"download": "https://fs.eyeson.com/meetings/6576daf01f138900153d0763/snapshots/1702288734.jpg?X-Amz-Algorithm=..."
},
"creator": {
"id": "test@observer.com",
"name": "Observer",
"avatar": null,
"guest": false,
"joined_at": "2023-12-11T09:48:34.433Z"
},
"created_at": "2023-12-11T09:58:54.498Z",
"room": {
"id": "6576daef1f138900153d0762",
"name": "Observer demo",
"ready": true,
"started_at": "2023-12-11T09:48:32.031Z",
"shutdown": false,
"guest_token": "jCWzhzCWONkbIubUYF7PD3hP"
}
}
]
}
chat and custom
Chat messages are messages with type "chat" sent over the API messages endpoint. You can also set any other type, like for example "custom".
{
"type": "chat",
"content": "Hello world!",
"cid": "6576daf01f138900153d0764",
"user_id": "test@observer.com",
"created_at": "2023-12-11T09:59:33.892Z"
}
{
"type": "custom",
"content": "Your custom message",
"cid": "6576daf01f138900153d0764",
"user_id": "test@observer.com",
"created_at": "2023-12-11T10:01:49.353Z"
}
playback_update
The playing
parameter is a list of all currently active playbacks. If one playback ends, a playback_update
event is received where the playing
list does not contain the ended playback anymore. When the list is empty, all playbacks have ended.
{
"type": "playback_update",
"playing": [
{
"play_id": "demo-video",
"url": "https://myawesomeapp.com/videos/demo-video.webm",
"name": null,
"audio": true,
"loop_count": 0,
"replacement_id": null
}
]
}
podium_update
That's a nice one. Here you can see the exact state of the visible podium. How it is segmented and for each segment either the id of the participant or the play_id of a playback.
This event includes layers! The list is empty if no layers are set.
Whenever the podium changes, you will receive 2 events! The first with the previous and the second with the current state.
{
"type": "podium_update",
"podium": [
{
"user_id": "test@observer.com",
"play_id": null,
"width": 427,
"height": 240,
"left": 0,
"top": 0,
"z-index": 0
},
{
"user_id": null,
"play_id": null,
"width": 427,
"height": 240,
"left": 427,
"top": 0,
"z-index": 1
},
{
"user_id": null,
"play_id": null,
"width": 426,
"height": 240,
"left": 854,
"top": 0,
"z-index": 2
},
{
"user_id": null,
"play_id": null,
"width": 427,
"height": 240,
"left": 0,
"top": 240,
"z-index": 3
},
{
"user_id": null,
"play_id": null,
"width": 427,
"height": 240,
"left": 427,
"top": 240,
"z-index": 4
},
{
"user_id": null,
"play_id": null,
"width": 426,
"height": 240,
"left": 854,
"top": 240,
"z-index": 5
},
{
"user_id": null,
"play_id": null,
"width": 427,
"height": 240,
"left": 0,
"top": 480,
"z-index": 6
},
{
"user_id": null,
"play_id": null,
"width": 427,
"height": 240,
"left": 427,
"top": 480,
"z-index": 7
},
{
"user_id": null,
"play_id": null,
"width": 426,
"height": 240,
"left": 854,
"top": 480,
"z-index": 8
}
],
"layers": [
{
"z-index": 1,
"id": "da9c96e70034e45d1ba2b80a304c0808"
},
{
"z-index": -1,
"id": "fc26523a13be45fcf1728a5f7360e611"
}
]
}
lock
When the meeting room gets locked, you will receive this information.
{
"type": "lock",
"locked": true
}
presentation_update
A presentation is indicated by the presentation
parameter. The user
is the
one who started the presentation. It is set to null
if the presentation has
stopped.
{
"type": "presentation_update",
"presentation": {
"room": {
"id": "6576daef1f138900153d0762",
"name": "Observer demo",
"ready": true,
"started_at": "2023-12-11T09:48:32.031Z",
"shutdown": false,
"guest_token": "jCWzhzCWONkbIubUYF7PD3hP"
},
"user": {
"id": "test@observer.com",
"name": "Observer",
"avatar": null,
"guest": false,
"joined_at": "2023-12-11T09:48:34.433Z"
}
}
}