Track Meeting Status

Learn how to receive real-time meeting status updates via WebSocket to track bot progress from creation to completion.

Overview
The WebSocket API sends meeting.status events whenever a meeting's status changes. This allows you to build real-time status indicators and track bot progress.

Status Flow

requestedjoiningawaiting_admissionactivecompleted

The failed status can occur at any point if an error happens.

Implementation
Subscribe to WebSocket events and handle meeting.status messages
JavaScript/TypeScript Example
// Connect to WebSocket
const ws = new WebSocket('wss://your-api-url/ws?api_key=your-api-key');

ws.onopen = () => {
  // Subscribe to meeting
  ws.send(JSON.stringify({
    action: 'subscribe',
    meetings: [
      { platform: 'google_meet', native_id: 'abc-defg-hij' }
    ]
  }));
};

ws.onmessage = (event) => {
  const message = JSON.parse(event.data);
  
  if (message.type === 'meeting.status') {
    const status = message.payload.status;
    const meeting = message.meeting;
    
    console.log(`Meeting ${meeting.native_id} status: ${status}`);
    
    // Handle different statuses
    switch (status) {
      case 'requested':
        console.log('Bot is starting up...');
        break;
      case 'joining':
        console.log('Bot is connecting to meeting...');
        break;
      case 'awaiting_admission':
        console.log('Bot is waiting in the waiting room');
        console.log('Please admit the bot to the meeting');
        break;
      case 'active':
        console.log('Bot is actively transcribing!');
        // Now you'll receive transcript events
        break;
      case 'completed':
        console.log('Transcription completed');
        // Disconnect or handle completion
        ws.close();
        break;
      case 'failed':
        console.error('Bot failed:', message.payload.error);
        ws.close();
        break;
    }
    
    // Update your UI with the new status
    updateStatusIndicator(meeting.native_id, status);
  }
};
Status Details
Understanding each status and what actions to take

requested

The bot container is being created and initialized. This typically takes 10-30 seconds.

What to show: "Bot is starting up..." or a loading indicator

joining

The bot is launching the browser and connecting to the meeting platform. This typically takes 5-15 seconds.

What to show: "Connecting to meeting..." or a connection indicator

awaiting_admission

The 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.

What to show: "Please admit the bot to the meeting" with instructions to check the waiting room. This is a critical state that requires user action.

active

The bot is admitted to the meeting and actively transcribing. You will now receive transcript.mutable and transcript.finalized events.

What to show: "Transcribing..." or a recording indicator. Start displaying transcript segments as they arrive.

completed

The transcription has finished. The meeting ended or the bot was stopped. Final transcripts are available via REST API.

What to show: "Transcription completed" and provide a link to view/download the final transcript. You can safely disconnect the WebSocket.

failed

An error occurred. Common reasons include: admission timeout, meeting ended before bot joined, connection failure, or bot was removed.

What to show: Error message with details. Allow the user to retry or create a new bot. You can safely disconnect the WebSocket.

Best Practices
  • Handle all statuses: Make sure your UI handles all possible status values, including edge cases like failed.
  • Show user action required: When status is awaiting_admission, clearly indicate that the user needs to admit the bot from the waiting room.
  • Handle timeouts: If a bot stays in requested or joining for too long (e.g., 60+ seconds), show a warning or allow the user to cancel.
  • Clean up on completion: When status becomes completed or failed, you can disconnect the WebSocket to save resources.
  • Store status history: Keep a log of status changes with timestamps to help debug issues or show progress to users.