Skip to main content

Overview

This page documents all TypeScript types, interfaces, and enums used when working with bots in the Recall AI SDK.

Core Types

BotStatus

type BotStatus = 
  | "ready"
  | "joining_call"
  | "in_waiting_room"
  | "in_call_not_recording"
  | "recording_permission_allowed"
  | "recording_permission_denied"
  | "in_call_recording"
  | "recording_done"
  | "call_ended"
  | "done"
  | "fatal"
  | "media_expired"
  | "analysis_done"
  | "analysis_failed";
Represents the current status of a bot throughout its lifecycle. Status Progression:
  1. ready - Bot is initialized and ready to join a meeting
  2. joining_call - Bot is attempting to join the meeting
  3. in_waiting_room - Bot is in the meeting’s waiting room (if enabled)
  4. in_call_not_recording - Bot has joined but is not yet recording
  5. recording_permission_allowed - Host has granted recording permission
  6. recording_permission_denied - Host has denied recording permission
  7. in_call_recording - Bot is actively recording the meeting
  8. recording_done - Recording has completed
  9. call_ended - The meeting has ended
  10. done - Bot has finished all processing
  11. fatal - An unrecoverable error occurred
  12. media_expired - Recorded media has expired
  13. analysis_done - Post-meeting analysis is complete
  14. analysis_failed - Post-meeting analysis failed

Request Parameters

CreateParams

interface CreateParams extends MeetingConfigurationParams {
  meeting_url: string;
  [key: string]: any;
}
Parameters for creating a new bot to join a meeting. Properties:

MeetingConfigurationParams

interface MeetingConfigurationParams {
  bot_name?: string;
  join_at?: Date;
  real_time_transcription?: RealTimeTranscription;
  real_time_media?: RealTimeMedia;
  transcription_options?: TranscriptionOptions;
  recording_mode?: string;
  recording_mode_options?: RecordingModeOptions;
  automatic_video_output?: AutomaticVideoOutput;
  [key: string]: any;
}
Configuration options for bot behavior during meetings. Properties:
  • bot_name: Display name for the bot in the meeting
  • join_at: Scheduled time for the bot to join (if not immediate)
  • real_time_transcription: Configuration for live transcription streaming
  • real_time_media: Configuration for real-time media streaming
  • transcription_options: Provider-specific transcription settings
  • recording_mode: Recording behavior mode
  • recording_mode_options: Additional recording mode configuration
  • automatic_video_output: Visual display settings for the bot

UpdateScheduledParams

interface UpdateScheduledParams extends MeetingConfigurationParams {
  id: string;
  meeting_url?: string;
}
Parameters for updating a scheduled bot. Properties:
  • id (required): The bot’s unique identifier
  • meeting_url: Updated meeting URL (optional)
  • Inherits all properties from MeetingConfigurationParams

BaseBotParams

interface BaseBotParams {
  id: string;
}
Base parameters for bot-specific operations that require only the bot ID.

ListQueryParams

interface ListQueryParams {
  join_at_after?: Date;
  join_at_before?: Date;
  meeting_url?: string;
  page?: number;
  status?: BotStatus;
}
Query parameters for filtering and paginating bot lists. Properties:
  • join_at_after: Filter bots that joined after this date
  • join_at_before: Filter bots that joined before this date
  • meeting_url: Filter bots by meeting URL
  • page: Page number for pagination
  • status: Filter bots by their current status

GetTranscriptParams

interface GetTranscriptParams extends BaseBotParams {
  enhanced_diarization?: boolean;
}
Parameters for retrieving a bot’s transcript. Properties:
  • id: Bot identifier (inherited from BaseBotParams)
  • enhanced_diarization: Enable enhanced speaker identification (optional)

ListChatMessagesParams

interface ListChatMessagesParams extends BaseBotParams {
  cursor?: string;
  ordering?: string;
}
Parameters for retrieving chat messages from a bot’s meeting. Properties:
  • id: Bot identifier (inherited from BaseBotParams)
  • cursor: Pagination cursor for fetching next page
  • ordering: Sort order for messages

OutputAudioParams

interface OutputAudioParams extends BaseBotParams {
  kind: string;
  b64_data: string;
}
Parameters for sending audio output through the bot. Properties:
  • id: Bot identifier (inherited from BaseBotParams)
  • kind: Type of audio output
  • b64_data: Base64-encoded audio data

Response Types

CreateResponse

interface CreateResponse {
  id: string;
  meeting_url: {
    meeting_id: string;
    meeting_password: string | undefined;
    platform: string;
  };
  join_at: string;
}
Response returned after creating a bot. Properties:
  • id: Unique identifier for the created bot
  • meeting_url: Parsed meeting information
    • meeting_id: The platform-specific meeting identifier
    • meeting_password: Meeting password if required
    • platform: Meeting platform (e.g., “zoom”, “google_meet”, “teams”)
  • join_at: ISO timestamp when the bot will/did join

Real-Time Configuration

RealTimeTranscription

interface RealTimeTranscription {
  destination_url?: string;
  partial_results?: boolean;
  enhanced_diarization?: boolean;
}
Configuration for streaming transcriptions in real-time. Properties:
  • destination_url: Webhook URL to receive transcription events
  • partial_results: Include partial/interim transcription results
  • enhanced_diarization: Enable advanced speaker identification

RealTimeMedia

interface RealTimeMedia {
  rtmp_destination_url?: string;
  websocket_video_destination_url?: string;
  websocket_audio_destination_url?: string;
  websocket_speaker_timeline_destionation_url?: string;
  websocket_speaker_timeline_exclude_null_speaker?: boolean;
  webhook_call_events_destination_url?: string;
  webhook_chat_messages_destination_url?: string;
}
Configuration for streaming media and events in real-time. Properties:
  • rtmp_destination_url: RTMP endpoint for video streaming
  • websocket_video_destination_url: WebSocket endpoint for video frames
  • websocket_audio_destination_url: WebSocket endpoint for audio streams
  • websocket_speaker_timeline_destionation_url: WebSocket endpoint for speaker timeline events
  • websocket_speaker_timeline_exclude_null_speaker: Filter out unknown speakers from timeline
  • webhook_call_events_destination_url: Webhook URL for call events (join, leave, etc.)
  • webhook_chat_messages_destination_url: Webhook URL for chat messages

Recording Configuration

TranscriptionOptions

interface TranscriptionOptions {
  provider: string;
  [key: string]: any;
}
Provider-specific transcription settings. Properties:
  • provider: Transcription provider identifier
  • Additional provider-specific options can be included

RecordingModeOptions

interface RecordingModeOptions {
  participant_video_when_screenshare?: string;
  start_recording_on?: string;
}
Advanced recording behavior options. Properties:
  • participant_video_when_screenshare: How to handle participant video during screen sharing
  • start_recording_on: Event or condition to trigger recording start

Visual Configuration

AutomaticVideoOutput

interface AutomaticVideoOutput {
  in_call_recording?: InCallDisplay;
  in_call_not_recording?: InCallDisplay;
}
Defines what the bot displays visually during different states. Properties:
  • in_call_recording: Display configuration when actively recording
  • in_call_not_recording: Display configuration when not recording

InCallDisplay

interface InCallDisplay {
  kind: string;
  b64_data: string;
}
Defines a visual display element for the bot. Properties:
  • kind: Type of display (e.g., “image”)
  • b64_data: Base64-encoded image or display data

Example Usage

Creating a Bot with Full Configuration

import { RecallAI } from '@recall-ai/sdk';
import type { CreateParams } from '@recall-ai/sdk';

const recall = new RecallAI({ apiKey: 'your-api-key' });

const params: CreateParams = {
  meeting_url: 'https://zoom.us/j/123456789',
  bot_name: 'Meeting Recorder',
  recording_mode: 'speaker_view',
  real_time_transcription: {
    destination_url: 'https://your-app.com/transcription-webhook',
    partial_results: true,
    enhanced_diarization: true
  },
  transcription_options: {
    provider: 'assembly_ai'
  }
};

const bot = await recall.bot.create(params);
console.log('Bot created:', bot.id);

Listing Bots with Filters

import type { ListQueryParams, BotStatus } from '@recall-ai/sdk';

const filters: ListQueryParams = {
  status: 'in_call_recording',
  join_at_after: new Date('2024-01-01'),
  page: 1
};

const bots = await recall.bot.list(filters);

Getting Transcript with Enhanced Diarization

import type { GetTranscriptParams } from '@recall-ai/sdk';

const params: GetTranscriptParams = {
  id: 'bot-123',
  enhanced_diarization: true
};

const transcript = await recall.bot.getTranscript(params);

Build docs developers (and LLMs) love