Botevent data model

This object has no API endpoints of its own; it is delivered only through webhooks.

View field support, webhooks, and list parameters for each integration on the Supported Integrations page.

FieldTypeRequiredDescription
idstringNo
created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
bot_idstringNoReference to the calendar_bot
typeenumNoValues: BOT_STATUS_CHANGE, PARTICIPANT_JOINED, PARTICIPANT_LEFT, PARTICIPANT_UPDATED, PARTICIPANT_WEBCAM_ON, PARTICIPANT_WEBCAM_OFF, PARTICIPANT_SCREENSHARE_ON, PARTICIPANT_SCREENSHARE_OFF, PARTICIPANT_SPEECH_ON, PARTICIPANT_SPEECH_OFF, CHAT_MESSAGE_RECEIVED, TRANSCRIPT_RECEIVED, TRANSCRIPT_PARTIAL, VIDEO_FRAME_RECEIVED, AUDIO_FRAME_RECEIVED, RECORDING_STARTED, RECORDING_STOPPED, RECORDING_READY
status_changeobjectNoFor BOT_STATUS_CHANGE
status_change.statusenumNoValues: READY, JOINING_CALL, IN_WAITING_ROOM, IN_CALL_NOT_RECORDING, RECORDING_PERMISSION_ALLOWED, RECORDING_PERMISSION_DENIED, IN_CALL_RECORDING, CALL_ENDED, DONE, FATAL
status_change.changed_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
status_change.sub_codestringNoPlatform-specific status sub-code
status_change.messagestringNoHuman-readable status message
participantobjectNoFor participant events
participant.idstringNo
participant.namestringNo
participant.emailstringNo
participant.is_hostbooleanNo
participant.is_cohostbooleanNo
participant.joined_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
participant.left_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
participant.platformstringNoPlatform-specific participant identifier
participant.is_botbooleanNoWhether this participant is a bot
participant.is_selfbooleanNoWhether this participant is the current bot
participant.speakingbooleanNoWhether participant is currently speaking
participant.webcam_onbooleanNoWhether participant's webcam is on
participant.screenshare_onbooleanNoWhether participant is sharing screen
participant.platform_metadataobjectNoPlatform-specific metadata
transcriptobjectNoFor TRANSCRIPT_RECEIVED, TRANSCRIPT_PARTIAL
transcript.idstringNo
transcript.created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
transcript.start_atstring (date-time)NoRelative timestamp from recording start (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
transcript.end_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
transcript.textstringYes
transcript.participantCalendarBotevent_transcript_participantNo
transcript.participant.idstringNo
transcript.participant.namestringNo
transcript.participant.emailstringNo
transcript.participant.is_hostbooleanNo
transcript.participant.is_cohostbooleanNo
transcript.participant.joined_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
transcript.participant.left_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
transcript.participant.platformstringNoPlatform-specific participant identifier
transcript.participant.is_botbooleanNoWhether this participant is a bot
transcript.participant.is_selfbooleanNoWhether this participant is the current bot
transcript.participant.speakingbooleanNoWhether participant is currently speaking
transcript.participant.webcam_onbooleanNoWhether participant's webcam is on
transcript.participant.screenshare_onbooleanNoWhether participant is sharing screen
transcript.participant.platform_metadataobjectNoPlatform-specific metadata
transcript.languagestringNoISO language code
transcript.is_finalbooleanNoWhether this is a final transcript (vs. partial)
transcript.wordsCalendarBotTranscriptWord[]NoWord-level breakdown with timestamps
transcript.words[].textstringNo
transcript.words[].start_atstring (date-time)NoRelative timestamp from recording start (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
transcript.words[].end_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
transcript.words[].confidencenumberNo0-1 confidence score
transcript.confidencenumberNo0-1 confidence score
chat_messageobjectNoFor CHAT_MESSAGE_RECEIVED
chat_message.idstringNo
chat_message.created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
chat_message.senderCalendarBotevent_chat_message_senderNo
chat_message.sender.idstringNo
chat_message.sender.namestringNo
chat_message.sender.emailstringNo
chat_message.sender.is_hostbooleanNo
chat_message.sender.is_cohostbooleanNo
chat_message.sender.joined_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
chat_message.sender.left_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
chat_message.sender.platformstringNoPlatform-specific participant identifier
chat_message.sender.is_botbooleanNoWhether this participant is a bot
chat_message.sender.is_selfbooleanNoWhether this participant is the current bot
chat_message.sender.speakingbooleanNoWhether participant is currently speaking
chat_message.sender.webcam_onbooleanNoWhether participant's webcam is on
chat_message.sender.screenshare_onbooleanNoWhether participant is sharing screen
chat_message.sender.platform_metadataobjectNoPlatform-specific metadata
chat_message.messagestringNo
chat_message.is_privatebooleanNoWhether sent privately vs. to everyone
chat_message.recipientCalendarBotevent_chat_message_recipientNoIf private message, who it was sent to
chat_message.recipient.idstringNo
chat_message.recipient.namestringNo
chat_message.recipient.emailstringNo
chat_message.recipient.is_hostbooleanNo
chat_message.recipient.is_cohostbooleanNo
chat_message.recipient.joined_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
chat_message.recipient.left_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
chat_message.recipient.platformstringNoPlatform-specific participant identifier
chat_message.recipient.is_botbooleanNoWhether this participant is a bot
chat_message.recipient.is_selfbooleanNoWhether this participant is the current bot
chat_message.recipient.speakingbooleanNoWhether participant is currently speaking
chat_message.recipient.webcam_onbooleanNoWhether participant's webcam is on
chat_message.recipient.screenshare_onbooleanNoWhether participant is sharing screen
chat_message.recipient.platform_metadataobjectNoPlatform-specific metadata
audio_frameobjectNoFor AUDIO_FRAME_RECEIVED
audio_frame.datastringNoBase64 encoded audio data
audio_frame.sizenumberNoSize in bytes
audio_frame.timestampnumberNoTimestamp in milliseconds
audio_frame.sample_ratenumberNoAudio sample rate (e.g., 16000 Hz)
audio_frame.channelsnumberNoNumber of audio channels (1 = mono, 2 = stereo)
audio_frame.formatstringNoAudio format (e.g., 'PCM', 'OPUS')
audio_frame.participant_identifierstringNoPlatform participant identifier (not a unified object ref)
video_frameobjectNoFor VIDEO_FRAME_RECEIVED
video_frame.datastringNoBase64 encoded video data
video_frame.sizenumberNoSize in bytes
video_frame.timestampnumberNoTimestamp in milliseconds
video_frame.widthnumberNoFrame width in pixels
video_frame.heightnumberNoFrame height in pixels
video_frame.formatstringNoVideo format (e.g., 'H264', 'VP8')
video_frame.fpsnumberNoFrames per second
video_frame.participant_identifierstringNoPlatform participant identifier (not a unified object ref)

TypeScript

TypeScript
export type CalendarBotevent = {
	id?: string;
	created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	bot_id?: string; // Reference to the calendar_bot
	type?: 'BOT_STATUS_CHANGE' | 'PARTICIPANT_JOINED' | 'PARTICIPANT_LEFT' | 'PARTICIPANT_UPDATED' | 'PARTICIPANT_WEBCAM_ON' | 'PARTICIPANT_WEBCAM_OFF' | 'PARTICIPANT_SCREENSHARE_ON' | 'PARTICIPANT_SCREENSHARE_OFF' | 'PARTICIPANT_SPEECH_ON' | 'PARTICIPANT_SPEECH_OFF' | 'CHAT_MESSAGE_RECEIVED' | 'TRANSCRIPT_RECEIVED' | 'TRANSCRIPT_PARTIAL' | 'VIDEO_FRAME_RECEIVED' | 'AUDIO_FRAME_RECEIVED' | 'RECORDING_STARTED' | 'RECORDING_STOPPED' | 'RECORDING_READY';
	status_change?: {
		status?: 'READY' | 'JOINING_CALL' | 'IN_WAITING_ROOM' | 'IN_CALL_NOT_RECORDING' | 'RECORDING_PERMISSION_ALLOWED' | 'RECORDING_PERMISSION_DENIED' | 'IN_CALL_RECORDING' | 'CALL_ENDED' | 'DONE' | 'FATAL'; 
		changed_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format) 
		sub_code?: string; // Platform-specific status sub-code 
		message?: string; // Human-readable status message 
	}; // For BOT_STATUS_CHANGE
	participant?: {
		id?: string; 
		name?: string; 
		email?: string; 
		is_host?: boolean; 
		is_cohost?: boolean; 
		joined_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format) 
		left_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format) 
		platform?: string; // Platform-specific participant identifier 
		is_bot?: boolean; // Whether this participant is a bot 
		is_self?: boolean; // Whether this participant is the current bot 
		speaking?: boolean; // Whether participant is currently speaking 
		webcam_on?: boolean; // Whether participant's webcam is on 
		screenshare_on?: boolean; // Whether participant is sharing screen 
		platform_metadata?: any; // Platform-specific metadata 
	}; // For participant events
	transcript?: {
		id?: string; 
		created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format) 
		start_at?: string-time; // Relative timestamp from recording start (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format) 
		end_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format) 
		text: string; 
		participant?: any; 
		language?: string; // ISO language code 
		is_final?: boolean; // Whether this is a final transcript (vs. partial) 
		words?: []; // Word-level breakdown with timestamps 
		confidence?: number; // 0-1 confidence score 
	}; // For TRANSCRIPT_RECEIVED, TRANSCRIPT_PARTIAL
	chat_message?: {
		id?: string; 
		created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format) 
		sender?: any; 
		message?: string; 
		is_private?: boolean; // Whether sent privately vs. to everyone 
		recipient?: any; // If private message, who it was sent to 
	}; // For CHAT_MESSAGE_RECEIVED
	audio_frame?: {
		data?: string; // Base64 encoded audio data 
		size?: number; // Size in bytes 
		timestamp?: number; // Timestamp in milliseconds 
		sample_rate?: number; // Audio sample rate (e.g., 16000 Hz) 
		channels?: number; // Number of audio channels (1 = mono, 2 = stereo) 
		format?: string; // Audio format (e.g., 'PCM', 'OPUS') 
		participant_identifier?: string; // Platform participant identifier (not a unified object ref) 
	}; // For AUDIO_FRAME_RECEIVED
	video_frame?: {
		data?: string; // Base64 encoded video data 
		size?: number; // Size in bytes 
		timestamp?: number; // Timestamp in milliseconds 
		width?: number; // Frame width in pixels 
		height?: number; // Frame height in pixels 
		format?: string; // Video format (e.g., 'H264', 'VP8') 
		fps?: number; // Frames per second 
		participant_identifier?: string; // Platform participant identifier (not a unified object ref) 
	}; // For VIDEO_FRAME_RECEIVED
	raw?: any;
} 

Zod

Zod
import { z } from 'zod';

export const ZodCalendarBotevent = z.object({
	id: z.string().optional(),
	created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	bot_id: z.string().optional().describe("Reference to the calendar_bot"),
	type: z.enum("BOT_STATUS_CHANGE", "PARTICIPANT_JOINED", "PARTICIPANT_LEFT", "PARTICIPANT_UPDATED", "PARTICIPANT_WEBCAM_ON", "PARTICIPANT_WEBCAM_OFF", "PARTICIPANT_SCREENSHARE_ON", "PARTICIPANT_SCREENSHARE_OFF", "PARTICIPANT_SPEECH_ON", "PARTICIPANT_SPEECH_OFF", "CHAT_MESSAGE_RECEIVED", "TRANSCRIPT_RECEIVED", "TRANSCRIPT_PARTIAL", "VIDEO_FRAME_RECEIVED", "AUDIO_FRAME_RECEIVED", "RECORDING_STARTED", "RECORDING_STOPPED", "RECORDING_READY").optional(),
	status_change: z.object({
			status: z.enum("READY", "JOINING_CALL", "IN_WAITING_ROOM", "IN_CALL_NOT_RECORDING", "RECORDING_PERMISSION_ALLOWED", "RECORDING_PERMISSION_DENIED", "IN_CALL_RECORDING", "CALL_ENDED", "DONE", "FATAL").optional(),
			changed_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
			sub_code: z.string().optional().describe("Platform-specific status sub-code"),
			message: z.string().optional().describe("Human-readable status message")
}).optional().describe("For BOT_STATUS_CHANGE"),
	participant: z.object({
			id: z.string().optional(),
			name: z.string().optional(),
			email: z.string().optional(),
			is_host: z.boolean().optional(),
			is_cohost: z.boolean().optional(),
			joined_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
			left_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
			platform: z.string().optional().describe("Platform-specific participant identifier"),
			is_bot: z.boolean().optional().describe("Whether this participant is a bot"),
			is_self: z.boolean().optional().describe("Whether this participant is the current bot"),
			speaking: z.boolean().optional().describe("Whether participant is currently speaking"),
			webcam_on: z.boolean().optional().describe("Whether participant's webcam is on"),
			screenshare_on: z.boolean().optional().describe("Whether participant is sharing screen"),
			platform_metadata: z.unknown().optional().describe("Platform-specific metadata")
}).optional().describe("For participant events"),
	transcript: z.object({
			id: z.string().optional(),
			created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
			start_at: z.string-time().optional().describe("Relative timestamp from recording start (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
			end_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
			text: z.string(),
			participant: z.unknown().optional(),
			language: z.string().optional().describe("ISO language code"),
			is_final: z.boolean().optional().describe("Whether this is a final transcript (vs. partial)"),
			words: z.array().optional().describe("Word-level breakdown with timestamps"),
			confidence: z.number().optional().describe("0-1 confidence score")
}).optional().describe("For TRANSCRIPT_RECEIVED, TRANSCRIPT_PARTIAL"),
	chat_message: z.object({
			id: z.string().optional(),
			created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
			sender: z.unknown().optional(),
			message: z.string().optional(),
			is_private: z.boolean().optional().describe("Whether sent privately vs. to everyone"),
			recipient: z.unknown().optional().describe("If private message, who it was sent to")
}).optional().describe("For CHAT_MESSAGE_RECEIVED"),
	audio_frame: z.object({
			data: z.string().optional().describe("Base64 encoded audio data"),
			size: z.number().optional().describe("Size in bytes"),
			timestamp: z.number().optional().describe("Timestamp in milliseconds"),
			sample_rate: z.number().optional().describe("Audio sample rate (e.g., 16000 Hz)"),
			channels: z.number().optional().describe("Number of audio channels (1 = mono, 2 = stereo)"),
			format: z.string().optional().describe("Audio format (e.g., 'PCM', 'OPUS')"),
			participant_identifier: z.string().optional().describe("Platform participant identifier (not a unified object ref)")
}).optional().describe("For AUDIO_FRAME_RECEIVED"),
	video_frame: z.object({
			data: z.string().optional().describe("Base64 encoded video data"),
			size: z.number().optional().describe("Size in bytes"),
			timestamp: z.number().optional().describe("Timestamp in milliseconds"),
			width: z.number().optional().describe("Frame width in pixels"),
			height: z.number().optional().describe("Frame height in pixels"),
			format: z.string().optional().describe("Video format (e.g., 'H264', 'VP8')"),
			fps: z.number().optional().describe("Frames per second"),
			participant_identifier: z.string().optional().describe("Platform participant identifier (not a unified object ref)")
}).optional().describe("For VIDEO_FRAME_RECEIVED"),

});

Python

Python
import dataclasses

@dataclasses.dataclass
class CalendarBoteventType(str, Enum):
	BOT_STATUS_CHANGE = 'BOT_STATUS_CHANGE'
	PARTICIPANT_JOINED = 'PARTICIPANT_JOINED'
	PARTICIPANT_LEFT = 'PARTICIPANT_LEFT'
	PARTICIPANT_UPDATED = 'PARTICIPANT_UPDATED'
	PARTICIPANT_WEBCAM_ON = 'PARTICIPANT_WEBCAM_ON'
	PARTICIPANT_WEBCAM_OFF = 'PARTICIPANT_WEBCAM_OFF'
	PARTICIPANT_SCREENSHARE_ON = 'PARTICIPANT_SCREENSHARE_ON'
	PARTICIPANT_SCREENSHARE_OFF = 'PARTICIPANT_SCREENSHARE_OFF'
	PARTICIPANT_SPEECH_ON = 'PARTICIPANT_SPEECH_ON'
	PARTICIPANT_SPEECH_OFF = 'PARTICIPANT_SPEECH_OFF'
	CHAT_MESSAGE_RECEIVED = 'CHAT_MESSAGE_RECEIVED'
	TRANSCRIPT_RECEIVED = 'TRANSCRIPT_RECEIVED'
	TRANSCRIPT_PARTIAL = 'TRANSCRIPT_PARTIAL'
	VIDEO_FRAME_RECEIVED = 'VIDEO_FRAME_RECEIVED'
	AUDIO_FRAME_RECEIVED = 'AUDIO_FRAME_RECEIVED'
	RECORDING_STARTED = 'RECORDING_STARTED'
	RECORDING_STOPPED = 'RECORDING_STOPPED'
	RECORDING_READY = 'RECORDING_READY'

@dataclasses.dataclass
class CalendarBoteventStatus_changeStatus(str, Enum):
	READY = 'READY'
	JOINING_CALL = 'JOINING_CALL'
	IN_WAITING_ROOM = 'IN_WAITING_ROOM'
	IN_CALL_NOT_RECORDING = 'IN_CALL_NOT_RECORDING'
	RECORDING_PERMISSION_ALLOWED = 'RECORDING_PERMISSION_ALLOWED'
	RECORDING_PERMISSION_DENIED = 'RECORDING_PERMISSION_DENIED'
	IN_CALL_RECORDING = 'IN_CALL_RECORDING'
	CALL_ENDED = 'CALL_ENDED'
	DONE = 'DONE'
	FATAL = 'FATAL'

@dataclasses.dataclass
class PropertyCalendarBoteventStatus_change:
	status: Optional[CalendarBoteventStatus_changeStatus]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	changed_at: Optional[str]
	"""Platform-specific status sub-code"""
	sub_code: Optional[str]
	"""Human-readable status message"""
	message: Optional[str]

@dataclasses.dataclass
class PropertyCalendarBoteventParticipant:
	id: Optional[str]
	name: Optional[str]
	email: Optional[str]
	is_host: Optional[bool]
	is_cohost: Optional[bool]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	joined_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	left_at: Optional[str]
	"""Platform-specific participant identifier"""
	platform: Optional[str]
	"""Whether this participant is a bot"""
	is_bot: Optional[bool]
	"""Whether this participant is the current bot"""
	is_self: Optional[bool]
	"""Whether participant is currently speaking"""
	speaking: Optional[bool]
	"""Whether participant's webcam is on"""
	webcam_on: Optional[bool]
	"""Whether participant is sharing screen"""
	screenshare_on: Optional[bool]
	"""Platform-specific metadata"""
	platform_metadata: Optional[PropertyCalendarBoteventPlatform_metadata]

@dataclasses.dataclass
class PropertyCalendarBoteventTranscript:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""Relative timestamp from recording start (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	start_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	end_at: Optional[str]
	text: Optional[str]
	participant: Optional[PropertyCalendarBoteventParticipant]
	"""ISO language code"""
	language: Optional[str]
	"""Whether this is a final transcript (vs. partial)"""
	is_final: Optional[bool]
	"""Word-level breakdown with timestamps"""
	words: Optional[PropertyCalendarBoteventWords]
	"""0-1 confidence score"""
	confidence: Optional[int]

@dataclasses.dataclass
class PropertyCalendarBoteventChat_message:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	sender: Optional[PropertyCalendarBoteventSender]
	message: Optional[str]
	"""Whether sent privately vs. to everyone"""
	is_private: Optional[bool]
	"""If private message, who it was sent to"""
	recipient: Optional[PropertyCalendarBoteventRecipient]

@dataclasses.dataclass
class PropertyCalendarBoteventAudio_frame:
	"""Base64 encoded audio data"""
	data: Optional[str]
	"""Size in bytes"""
	size: Optional[int]
	"""Timestamp in milliseconds"""
	timestamp: Optional[int]
	"""Audio sample rate (e.g., 16000 Hz)"""
	sample_rate: Optional[int]
	"""Number of audio channels (1 = mono, 2 = stereo)"""
	channels: Optional[int]
	"""Audio format (e.g., 'PCM', 'OPUS')"""
	format: Optional[str]
	"""Platform participant identifier (not a unified object ref)"""
	participant_identifier: Optional[str]

@dataclasses.dataclass
class PropertyCalendarBoteventVideo_frame:
	"""Base64 encoded video data"""
	data: Optional[str]
	"""Size in bytes"""
	size: Optional[int]
	"""Timestamp in milliseconds"""
	timestamp: Optional[int]
	"""Frame width in pixels"""
	width: Optional[int]
	"""Frame height in pixels"""
	height: Optional[int]
	"""Video format (e.g., 'H264', 'VP8')"""
	format: Optional[str]
	"""Frames per second"""
	fps: Optional[int]
	"""Platform participant identifier (not a unified object ref)"""
	participant_identifier: Optional[str]

@dataclasses.dataclass
class CalendarBotevent:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""Reference to the calendar_bot"""
	bot_id: Optional[str]
	type: Optional[CalendarBoteventType]
	"""For BOT_STATUS_CHANGE"""
	status_change: Optional[PropertyCalendarBoteventStatus_change]
	"""For participant events"""
	participant: Optional[PropertyCalendarBoteventParticipant]
	"""For TRANSCRIPT_RECEIVED, TRANSCRIPT_PARTIAL"""
	transcript: Optional[PropertyCalendarBoteventTranscript]
	"""For CHAT_MESSAGE_RECEIVED"""
	chat_message: Optional[PropertyCalendarBoteventChat_message]
	"""For AUDIO_FRAME_RECEIVED"""
	audio_frame: Optional[PropertyCalendarBoteventAudio_frame]
	"""For VIDEO_FRAME_RECEIVED"""
	video_frame: Optional[PropertyCalendarBoteventVideo_frame]
Are we missing anything? Let us know
Was this page helpful?