Skip to main content
Until now the first thing your server heard about a meeting was meeting.ended. Live meeting events tell you what happens during the call, within about a second, so your systems can react — and so your agent can be told to. Two ways to consume them, from the same source of truth:
  • Webhooks — subscribe an endpoint to the event types below, exactly like meeting.ended. Same envelope, same signature, same retries. See Webhooks.
  • The event log — GET /v1/meetings/{meeting_id}/events returns everything recorded for a meeting, including the actions you pushed in through Meeting Actions.

Event types

participant is { "id": "<transport session id>", "name": "<display name>" }. It identifies the person within this call; it is not the meeting_participants row that participant.joined carries, because screen and camera state belongs to a connection, not to an invitation. Use name for display and id to correlate events from the same connection. Not events (yet): frames. Nothing here carries an image. A snapshot of the shared screen or camera on demand is planned as an explicit, per-scenario opt-in.

Webhook example

event_id is the row in the meeting’s event log, so a webhook and a later GET …/events can be matched one to one.

The event log

Rows of type action.<type> (action.say, action.context, action.stage.open, …) are the Meeting Actions you or a skill pushed in, with the action body in data. They are recorded but not delivered as webhooks — you sent them. Who may read: anyone who may read the meeting (the scenario’s workspace). A meeting outside your workspace answers 404.

What the agent hears

Every screen_share.* and camera.* transition also lands in the agent’s context as a one-line silent note (“Alex started sharing their screen.”), so it can respond to what it is now looking at without being told again. Stage events reach it the way screen apps always have.

Where it works

Studio meetings, the inline embed and the sidebar assistant: all events. Google Meet, Zoom and Teams bot calls: meeting.started only for now — the bot sees the room as a composite video, so it cannot tell whose camera or screen changed.