Skip to main content
Retrieves a list of all bots, with optional filters for meeting URL, status, and join time.

Method Signature

bot.list(params: ListQueryParams): Promise<ListResponse>

Parameters

meeting_url
string
Filter bots by the meeting URL they joined
status
BotStatus
Filter bots by their current status. Available values:
  • ready - Bot is ready to join
  • joining_call - Bot is connecting to the meeting
  • in_waiting_room - Bot is in the waiting room
  • in_call_not_recording - Bot joined but not recording
  • recording_permission_allowed - Permission granted to record
  • recording_permission_denied - Permission denied to record
  • in_call_recording - Bot is actively recording
  • recording_done - Recording completed
  • call_ended - Meeting has ended
  • done - All processing complete
  • analysis_done - Analysis completed successfully
  • analysis_failed - Analysis failed
  • fatal - Unrecoverable error occurred
  • media_expired - Media files have expired
join_at_after
Date
Filter bots that joined after this date/time
join_at_before
Date
Filter bots that joined before this date/time
page
number
Page number for pagination (starts at 1)

Response

Returns a paginated list of bot objects. Each bot includes:
id
string
Unique identifier for the bot
meeting_url
object
Meeting information
meeting_id
string
Meeting ID
meeting_password
string | undefined
Meeting password if applicable
platform
string
Meeting platform
status
BotStatus
Current status of the bot
join_at
string
ISO 8601 timestamp when the bot joined or will join
bot_name
string
Display name of the bot

Example

import { Recall } from '@recall.ai/sdk';

const client = new Recall({
  apiKey: 'your-api-key',
  region: 'us-west-2'
});

// List all bots
const response = await client.bot.list({});
console.log(`Total bots: ${response.results.length}`);

Example with Filters

// List bots that are currently recording
const recordingBots = await client.bot.list({
  status: 'in_call_recording'
});

console.log(`Bots currently recording: ${recordingBots.results.length}`);

Example with Date Range

// List bots that joined in the last 24 hours
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);

const recentBots = await client.bot.list({
  join_at_after: yesterday
});

console.log(`Bots from last 24 hours: ${recentBots.results.length}`);

Example with Pagination

// Get first page
const page1 = await client.bot.list({ page: 1 });

// Get second page
const page2 = await client.bot.list({ page: 2 });

Example with Meeting URL Filter

// List all bots for a specific meeting
const meetingBots = await client.bot.list({
  meeting_url: 'https://zoom.us/j/123456789'
});

for (const bot of meetingBots.results) {
  console.log(`Bot ${bot.id}: ${bot.status}`);
}

Build docs developers (and LLMs) love