WebSocket Events
Reference for all WebSocket message types and their formats.
transcript.mutable
Live transcript segments that may be updated as the AI refines its transcription.
{
"type": "transcript.mutable",
"meeting": {
"id": 123
},
"payload": {
"segments": [
{
"text": "Hello everyone",
"speaker": "Alice",
"language": "en",
"start": 0,
"end_time": 2.5,
"absolute_start_time": "2024-01-01T12:00:00Z",
"absolute_end_time": "2024-01-01T12:00:02Z",
"session_uid": "session-123",
"updated_at": "2024-01-01T12:00:02Z"
}
]
},
"ts": "2024-01-01T12:00:02Z"
}transcript.finalized
Final transcript segments that will not be updated further.
{
"type": "transcript.finalized",
"meeting": {
"id": 123
},
"payload": {
"segments": [
{
"text": "Hello everyone, welcome to the meeting.",
"speaker": "Alice",
"language": "en",
"start": 0,
"end_time": 3.2,
"absolute_start_time": "2024-01-01T12:00:00Z",
"absolute_end_time": "2024-01-01T12:00:03Z",
"session_uid": "session-123",
"updated_at": "2024-01-01T12:00:03Z"
}
]
},
"ts": "2024-01-01T12:00:03Z"
}meeting.status
Meeting status updates. Sent when the meeting status changes. This is the primary way to track bot progress from creation to completion.
{
"type": "meeting.status",
"meeting": {
"platform": "google_meet",
"native_id": "abc-defg-hij"
},
"payload": {
"status": "active"
},
"ts": "2024-01-01T12:00:05Z"
}Status Flow
The bot progresses through these statuses in order:
requested- Bot creation requested, container starting upjoining- Bot is connecting to the meeting platformawaiting_admission- Bot is in the meeting waiting room, waiting for host to admitactive- Bot is admitted and actively transcribingcompleted- Transcription finished (meeting ended or bot stopped)failed- Bot failed to join or transcription error occurred
Status Descriptions
- requested:
- Bot container is being created and initialized. Usually takes 10-30 seconds.
- joining:
- Bot is launching the browser and connecting to the meeting platform. Usually takes 5-15 seconds.
- awaiting_admission:
- Bot is in the meeting waiting room. The meeting host must admit the bot. This can take any amount of time depending on when the host checks the waiting room.
- active:
- Bot is admitted to the meeting and actively transcribing audio. You will receive
transcript.mutableandtranscript.finalizedevents during this state. - completed:
- Transcription has finished. The meeting ended or the bot was stopped. Final transcripts are available via REST API.
- failed:
- An error occurred. Common reasons: admission timeout, meeting ended before bot joined, connection failure, or bot was removed.
Example: Status Progression
// 1. Bot created
{
"type": "meeting.status",
"payload": { "status": "requested" },
"ts": "2024-01-01T12:00:00Z"
}
// 2. Bot connecting
{
"type": "meeting.status",
"payload": { "status": "joining" },
"ts": "2024-01-01T12:00:15Z"
}
// 3. Bot in waiting room
{
"type": "meeting.status",
"payload": { "status": "awaiting_admission" },
"ts": "2024-01-01T12:00:30Z"
}
// 4. Bot admitted and transcribing
{
"type": "meeting.status",
"payload": { "status": "active" },
"ts": "2024-01-01T12:01:00Z"
}
// 5. Meeting ended
{
"type": "meeting.status",
"payload": { "status": "completed" },
"ts": "2024-01-01T13:00:00Z"
}subscribed
Confirmation message sent after successfully subscribing to meetings.
{
"type": "subscribed",
"meetings": [
123,
124
]
}pong
Response to ping messages. Confirms the connection is alive.
{
"type": "pong"
}error
Error messages sent when something goes wrong.
{
"type": "error",
"message": "Invalid meeting ID"
}