Daily

class pipecat.transports.services.daily.DailyTransportMessageFrame(message, participant_id=None)[source]

Bases: TransportMessageFrame

Frame for transport messages in Daily calls.

Parameters:
  • message (Any)

  • participant_id (str | None)

participant_id

Optional ID of the participant this message is for/from.

Type:

str | None

participant_id: str | None = None
class pipecat.transports.services.daily.DailyTransportMessageUrgentFrame(message, participant_id=None)[source]

Bases: TransportMessageUrgentFrame

Frame for urgent transport messages in Daily calls.

Parameters:
  • message (Any)

  • participant_id (str | None)

participant_id

Optional ID of the participant this message is for/from.

Type:

str | None

participant_id: str | None = None
class pipecat.transports.services.daily.WebRTCVADAnalyzer(*, sample_rate=None, params=None)[source]

Bases: VADAnalyzer

Voice Activity Detection analyzer using WebRTC.

Implements voice activity detection using Daily’s native WebRTC VAD.

Parameters:
  • sample_rate (int | None) – Audio sample rate in Hz.

  • params (VADParams | None) – VAD configuration parameters (VADParams).

num_frames_required()[source]
Return type:

int

voice_confidence(buffer)[source]
Return type:

float

class pipecat.transports.services.daily.DailyDialinSettings(*, call_id='', call_domain='')[source]

Bases: BaseModel

Settings for Daily’s dial-in functionality.

Parameters:
  • call_id (str)

  • call_domain (str)

call_id

CallId is represented by UUID and represents the sessionId in the SIP Network.

Type:

str

call_domain

Call Domain is represented by UUID and represents your Daily Domain on the SIP Network.

Type:

str

call_id: str
call_domain: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pipecat.transports.services.daily.DailyTranscriptionSettings(*, language='en', model='nova-2-general', profanity_filter=True, redact=False, endpointing=True, punctuate=True, includeRawResponse=True, extra={'interim_results': True})[source]

Bases: BaseModel

Configuration settings for Daily’s transcription service.

Parameters:
  • language (str)

  • model (str)

  • profanity_filter (bool)

  • redact (bool)

  • endpointing (bool)

  • punctuate (bool)

  • includeRawResponse (bool)

  • extra (Mapping[str, Any])

language

ISO language code for transcription (e.g. “en”).

Type:

str

model

Transcription model to use (e.g. “nova-2-general”).

Type:

str

profanity_filter

Whether to filter profanity from transcripts.

Type:

bool

redact

Whether to redact sensitive information.

Type:

bool

endpointing

Whether to use endpointing to determine speech segments.

Type:

bool

punctuate

Whether to add punctuation to transcripts.

Type:

bool

includeRawResponse

Whether to include raw response data.

Type:

bool

extra

Additional parameters passed to the Deepgram transcription service.

Type:

Mapping[str, Any]

language: str
model: str
profanity_filter: bool
redact: bool
endpointing: bool
punctuate: bool
includeRawResponse: bool
extra: Mapping[str, Any]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pipecat.transports.services.daily.DailyParams(*, camera_in_enabled=False, camera_out_enabled=True, camera_out_is_live=False, camera_out_width=1024, camera_out_height=768, camera_out_bitrate=800000, camera_out_framerate=30, camera_out_color_format='RGB', audio_out_enabled=False, audio_out_sample_rate=None, audio_out_channels=1, audio_out_bitrate=96000, audio_out_10ms_chunks=4, audio_out_mixer=None, audio_out_destinations=<factory>, audio_in_enabled=False, audio_in_sample_rate=None, audio_in_channels=1, audio_in_filter=None, audio_in_stream_on_start=True, audio_in_passthrough=True, video_in_enabled=False, video_out_enabled=False, video_out_is_live=False, video_out_width=1024, video_out_height=768, video_out_bitrate=800000, video_out_framerate=30, video_out_color_format='RGB', video_out_destinations=<factory>, vad_enabled=False, vad_audio_passthrough=False, vad_analyzer=None, turn_analyzer=None, api_url='https://api.daily.co/v1', api_key='', dialin_settings=None, microphone_out_enabled=True, transcription_enabled=False, transcription_settings=DailyTranscriptionSettings(language='en', model='nova-2-general', profanity_filter=True, redact=False, endpointing=True, punctuate=True, includeRawResponse=True, extra={'interim_results': True}))[source]

Bases: TransportParams

Configuration parameters for Daily transport.

Parameters:
  • api_url (str) – Daily API base URL

  • api_key (str) – Daily API authentication key

  • dialin_settings (DailyDialinSettings | None) – Optional settings for dial-in functionality

  • camera_out_enabled (bool) – Whether to enable the main camera output track. If enabled, it still needs video_out_enabled=True

  • microphone_out_enabled (bool) – Whether to enable the main microphone track. If enabled, it still needs audio_out_enabled=True

  • transcription_enabled (bool) – Whether to enable speech transcription

  • transcription_settings (DailyTranscriptionSettings) – Configuration for transcription service

  • camera_in_enabled (bool)

  • camera_out_is_live (bool)

  • camera_out_width (int)

  • camera_out_height (int)

  • camera_out_bitrate (int)

  • camera_out_framerate (int)

  • camera_out_color_format (str)

  • audio_out_enabled (bool)

  • audio_out_sample_rate (int | None)

  • audio_out_channels (int)

  • audio_out_bitrate (int)

  • audio_out_10ms_chunks (int)

  • audio_out_mixer (BaseAudioMixer | Mapping[str | None, BaseAudioMixer] | None)

  • audio_out_destinations (List[str])

  • audio_in_enabled (bool)

  • audio_in_sample_rate (int | None)

  • audio_in_channels (int)

  • audio_in_filter (BaseAudioFilter | None)

  • audio_in_stream_on_start (bool)

  • audio_in_passthrough (bool)

  • video_in_enabled (bool)

  • video_out_enabled (bool)

  • video_out_is_live (bool)

  • video_out_width (int)

  • video_out_height (int)

  • video_out_bitrate (int)

  • video_out_framerate (int)

  • video_out_color_format (str)

  • video_out_destinations (List[str])

  • vad_enabled (bool)

  • vad_audio_passthrough (bool)

  • vad_analyzer (VADAnalyzer | None)

  • turn_analyzer (BaseTurnAnalyzer | None)

api_url: str
api_key: str
dialin_settings: DailyDialinSettings | None
camera_out_enabled: bool
microphone_out_enabled: bool
transcription_enabled: bool
transcription_settings: DailyTranscriptionSettings
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pipecat.transports.services.daily.DailyCallbacks(*, on_active_speaker_changed, on_joined, on_left, on_error, on_app_message, on_call_state_updated, on_client_connected, on_client_disconnected, on_dialin_connected, on_dialin_ready, on_dialin_stopped, on_dialin_error, on_dialin_warning, on_dialout_answered, on_dialout_connected, on_dialout_stopped, on_dialout_error, on_dialout_warning, on_participant_joined, on_participant_left, on_participant_updated, on_transcription_message, on_recording_started, on_recording_stopped, on_recording_error)[source]

Bases: BaseModel

Callback handlers for Daily events.

Parameters:
  • on_active_speaker_changed (Callable[[Mapping[str, Any]], Awaitable[None]])

  • on_joined (Callable[[Mapping[str, Any]], Awaitable[None]])

  • on_left (Callable[[], Awaitable[None]])

  • on_error (Callable[[str], Awaitable[None]])

  • on_app_message (Callable[[Any, str], Awaitable[None]])

  • on_call_state_updated (Callable[[str], Awaitable[None]])

  • on_client_connected (Callable[[Mapping[str, Any]], Awaitable[None]])

  • on_client_disconnected (Callable[[Mapping[str, Any]], Awaitable[None]])

  • on_dialin_connected (Callable[[Any], Awaitable[None]])

  • on_dialin_ready (Callable[[str], Awaitable[None]])

  • on_dialin_stopped (Callable[[Any], Awaitable[None]])

  • on_dialin_error (Callable[[Any], Awaitable[None]])

  • on_dialin_warning (Callable[[Any], Awaitable[None]])

  • on_dialout_answered (Callable[[Any], Awaitable[None]])

  • on_dialout_connected (Callable[[Any], Awaitable[None]])

  • on_dialout_stopped (Callable[[Any], Awaitable[None]])

  • on_dialout_error (Callable[[Any], Awaitable[None]])

  • on_dialout_warning (Callable[[Any], Awaitable[None]])

  • on_participant_joined (Callable[[Mapping[str, Any]], Awaitable[None]])

  • on_participant_left (Callable[[Mapping[str, Any], str], Awaitable[None]])

  • on_participant_updated (Callable[[Mapping[str, Any]], Awaitable[None]])

  • on_transcription_message (Callable[[Mapping[str, Any]], Awaitable[None]])

  • on_recording_started (Callable[[Mapping[str, Any]], Awaitable[None]])

  • on_recording_stopped (Callable[[str], Awaitable[None]])

  • on_recording_error (Callable[[str, str], Awaitable[None]])

on_active_speaker_changed

Called when the active speaker of the call has changed.

Type:

Callable[[Mapping[str, Any]], Awaitable[None]]

on_joined

Called when bot successfully joined a room.

Type:

Callable[[Mapping[str, Any]], Awaitable[None]]

on_left

Called when bot left a room.

Type:

Callable[[], Awaitable[None]]

on_error

Called when an error occurs.

Type:

Callable[[str], Awaitable[None]]

on_app_message

Called when receiving an app message.

Type:

Callable[[Any, str], Awaitable[None]]

on_call_state_updated

Called when call state changes.

Type:

Callable[[str], Awaitable[None]]

on_client_connected

Called when a client (participant) connects.

Type:

Callable[[Mapping[str, Any]], Awaitable[None]]

on_client_disconnected

Called when a client (participant) disconnects.

Type:

Callable[[Mapping[str, Any]], Awaitable[None]]

on_dialin_connected

Called when dial-in is connected.

Type:

Callable[[Any], Awaitable[None]]

on_dialin_ready

Called when dial-in is ready.

Type:

Callable[[str], Awaitable[None]]

on_dialin_stopped

Called when dial-in is stopped.

Type:

Callable[[Any], Awaitable[None]]

on_dialin_error

Called when dial-in encounters an error.

Type:

Callable[[Any], Awaitable[None]]

on_dialin_warning

Called when dial-in has a warning.

Type:

Callable[[Any], Awaitable[None]]

on_dialout_answered

Called when dial-out is answered.

Type:

Callable[[Any], Awaitable[None]]

on_dialout_connected

Called when dial-out is connected.

Type:

Callable[[Any], Awaitable[None]]

on_dialout_stopped

Called when dial-out is stopped.

Type:

Callable[[Any], Awaitable[None]]

on_dialout_error

Called when dial-out encounters an error.

Type:

Callable[[Any], Awaitable[None]]

on_dialout_warning

Called when dial-out has a warning.

Type:

Callable[[Any], Awaitable[None]]

on_participant_joined

Called when a participant joins.

Type:

Callable[[Mapping[str, Any]], Awaitable[None]]

on_participant_left

Called when a participant leaves.

Type:

Callable[[Mapping[str, Any], str], Awaitable[None]]

on_participant_updated

Called when participant info is updated.

Type:

Callable[[Mapping[str, Any]], Awaitable[None]]

on_transcription_message

Called when receiving transcription.

Type:

Callable[[Mapping[str, Any]], Awaitable[None]]

on_recording_started

Called when recording starts.

Type:

Callable[[Mapping[str, Any]], Awaitable[None]]

on_recording_stopped

Called when recording stops.

Type:

Callable[[str], Awaitable[None]]

on_recording_error

Called when recording encounters an error.

Type:

Callable[[str, str], Awaitable[None]]

on_active_speaker_changed: Callable[[Mapping[str, Any]], Awaitable[None]]
on_joined: Callable[[Mapping[str, Any]], Awaitable[None]]
on_left: Callable[[], Awaitable[None]]
on_error: Callable[[str], Awaitable[None]]
on_app_message: Callable[[Any, str], Awaitable[None]]
on_call_state_updated: Callable[[str], Awaitable[None]]
on_client_connected: Callable[[Mapping[str, Any]], Awaitable[None]]
on_client_disconnected: Callable[[Mapping[str, Any]], Awaitable[None]]
on_dialin_connected: Callable[[Any], Awaitable[None]]
on_dialin_ready: Callable[[str], Awaitable[None]]
on_dialin_stopped: Callable[[Any], Awaitable[None]]
on_dialin_error: Callable[[Any], Awaitable[None]]
on_dialin_warning: Callable[[Any], Awaitable[None]]
on_dialout_answered: Callable[[Any], Awaitable[None]]
on_dialout_connected: Callable[[Any], Awaitable[None]]
on_dialout_stopped: Callable[[Any], Awaitable[None]]
on_dialout_error: Callable[[Any], Awaitable[None]]
on_dialout_warning: Callable[[Any], Awaitable[None]]
on_participant_joined: Callable[[Mapping[str, Any]], Awaitable[None]]
on_participant_left: Callable[[Mapping[str, Any], str], Awaitable[None]]
on_participant_updated: Callable[[Mapping[str, Any]], Awaitable[None]]
on_transcription_message: Callable[[Mapping[str, Any]], Awaitable[None]]
on_recording_started: Callable[[Mapping[str, Any]], Awaitable[None]]
on_recording_stopped: Callable[[str], Awaitable[None]]
on_recording_error: Callable[[str, str], Awaitable[None]]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

pipecat.transports.services.daily.completion_callback(future)[source]
class pipecat.transports.services.daily.DailyAudioTrack(source: daily.CustomAudioSource, track: daily.CustomAudioTrack)[source]

Bases: object

Parameters:
  • source (daily.CustomAudioSource)

  • track (daily.CustomAudioTrack)

source: daily.CustomAudioSource
track: daily.CustomAudioTrack
class pipecat.transports.services.daily.DailyTransportClient(*args, **kwargs)[source]

Bases: EventHandler

Core client for interacting with Daily’s API.

Manages the connection to Daily rooms and handles all low-level API interactions.

Parameters:
  • room_url – URL of the Daily room to connect to.

  • token – Optional authentication token for the room.

  • bot_name – Display name for the bot in the call.

  • params – Configuration parameters (DailyParams).

  • callbacks – Event callback handlers (DailyCallbacks).

  • transport_name – Name identifier for the transport.

property room_url: str
property participant_id: str
property in_sample_rate: int
property out_sample_rate: int
async send_message(frame)[source]
Parameters:

frame (TransportMessageFrame | TransportMessageUrgentFrame)

async register_audio_destination(destination)[source]
Parameters:

destination (str)

async write_audio_frame(frame)[source]
Parameters:

frame (OutputAudioRawFrame)

async write_video_frame(frame)[source]
Parameters:

frame (OutputImageRawFrame)

async setup(setup)[source]
Parameters:

setup (FrameProcessorSetup)

async cleanup()[source]
async start(frame)[source]
Parameters:

frame (StartFrame)

async join()[source]
async leave()[source]
participants()[source]
participant_counts()[source]
async start_dialout(settings)[source]
async stop_dialout(participant_id)[source]
async send_dtmf(settings)[source]
async sip_call_transfer(settings)[source]
async sip_refer(settings)[source]
async start_recording(streaming_settings, stream_id, force_new)[source]
async stop_recording(stream_id)[source]
async start_transcription(settings)[source]
async stop_transcription()[source]
async send_prebuilt_chat_message(message, user_name=None)[source]
Parameters:
  • message (str)

  • user_name (str | None)

async capture_participant_transcription(participant_id)[source]
Parameters:

participant_id (str)

async capture_participant_audio(participant_id, callback, audio_source='microphone', sample_rate=16000, callback_interval_ms=20)[source]
Parameters:
  • participant_id (str)

  • callback (Callable)

  • audio_source (str)

  • sample_rate (int)

  • callback_interval_ms (int)

async capture_participant_video(participant_id, callback, framerate=30, video_source='camera', color_format='RGB')[source]
Parameters:
  • participant_id (str)

  • callback (Callable)

  • framerate (int)

  • video_source (str)

  • color_format (str)

async add_custom_audio_track(track_name)[source]
Parameters:

track_name (str)

Return type:

DailyAudioTrack

async remove_custom_audio_track(track_name)[source]
Parameters:

track_name (str)

async update_transcription(participants=None, instance_id=None)[source]
async update_subscriptions(participant_settings=None, profile_settings=None)[source]
async update_publishing(publishing_settings)[source]
Parameters:

publishing_settings (Mapping[str, Any])

async update_remote_participants(remote_participants)[source]
Parameters:

remote_participants (Mapping[str, Any])

on_active_speaker_changed(participant)[source]
on_app_message(message, sender)[source]
Parameters:
  • message (Any)

  • sender (str)

on_call_state_updated(state)[source]
Parameters:

state (str)

on_dialin_connected(data)[source]
Parameters:

data (Any)

on_dialin_ready(sip_endpoint)[source]
Parameters:

sip_endpoint (str)

on_dialin_stopped(data)[source]
Parameters:

data (Any)

on_dialin_error(data)[source]
Parameters:

data (Any)

on_dialin_warning(data)[source]
Parameters:

data (Any)

on_dialout_answered(data)[source]
Parameters:

data (Any)

on_dialout_connected(data)[source]
Parameters:

data (Any)

on_dialout_stopped(data)[source]
Parameters:

data (Any)

on_dialout_error(data)[source]
Parameters:

data (Any)

on_dialout_warning(data)[source]
Parameters:

data (Any)

on_participant_joined(participant)[source]
on_participant_left(participant, reason)[source]
on_participant_updated(participant)[source]
on_transcription_started(status)[source]
on_transcription_stopped(stopped_by, stopped_by_error)[source]
on_transcription_error(message)[source]
on_transcription_message(message)[source]
on_recording_started(status)[source]
on_recording_stopped(stream_id)[source]
on_recording_error(stream_id, message)[source]
class pipecat.transports.services.daily.DailyInputTransport(transport, client, params, **kwargs)[source]

Bases: BaseInputTransport

Handles incoming media streams and events from Daily calls.

Processes incoming audio, video, transcriptions and other events from Daily.

Parameters:
  • client (DailyTransportClient) – DailyTransportClient instance.

  • params (DailyParams) – Configuration parameters.

  • transport (BaseTransport)

property vad_analyzer: VADAnalyzer | None
async start_audio_in_streaming()[source]
async setup(setup)[source]
Parameters:

setup (FrameProcessorSetup)

async cleanup()[source]
async start(frame)[source]
Parameters:

frame (StartFrame)

async stop(frame)[source]
Parameters:

frame (EndFrame)

async cancel(frame)[source]
Parameters:

frame (CancelFrame)

async process_frame(frame, direction)[source]
Parameters:
  • frame (Frame)

  • direction (FrameDirection)

async push_transcription_frame(frame)[source]
Parameters:

frame (TranscriptionFrame | InterimTranscriptionFrame)

async push_app_message(message, sender)[source]
Parameters:
  • message (Any)

  • sender (str)

async capture_participant_audio(participant_id, audio_source='microphone', sample_rate=16000)[source]
Parameters:
  • participant_id (str)

  • audio_source (str)

  • sample_rate (int)

async capture_participant_video(participant_id, framerate=30, video_source='camera', color_format='RGB')[source]
Parameters:
  • participant_id (str)

  • framerate (int)

  • video_source (str)

  • color_format (str)

async request_participant_image(frame)[source]
Parameters:

frame (UserImageRequestFrame)

class pipecat.transports.services.daily.DailyOutputTransport(transport, client, params, **kwargs)[source]

Bases: BaseOutputTransport

Handles outgoing media streams and events to Daily calls.

Manages sending audio, video and other data to Daily calls.

Parameters:
  • client (DailyTransportClient) – DailyTransportClient instance.

  • params (DailyParams) – Configuration parameters.

  • transport (BaseTransport)

async setup(setup)[source]
Parameters:

setup (FrameProcessorSetup)

async cleanup()[source]
async start(frame)[source]
Parameters:

frame (StartFrame)

async stop(frame)[source]
Parameters:

frame (EndFrame)

async cancel(frame)[source]
Parameters:

frame (CancelFrame)

async send_message(frame)[source]
Parameters:

frame (TransportMessageFrame | TransportMessageUrgentFrame)

async register_video_destination(destination)[source]
Parameters:

destination (str)

async register_audio_destination(destination)[source]
Parameters:

destination (str)

async write_dtmf(frame)[source]
Parameters:

frame (OutputDTMFFrame | OutputDTMFUrgentFrame)

async write_audio_frame(frame)[source]
Parameters:

frame (OutputAudioRawFrame)

async write_video_frame(frame)[source]
Parameters:

frame (OutputImageRawFrame)

class pipecat.transports.services.daily.DailyTransport(room_url, token, bot_name, params=None, input_name=None, output_name=None)[source]

Bases: BaseTransport

Transport implementation for Daily audio and video calls.

Handles audio/video streaming, transcription, recordings, dial-in,

dial-out, and call management through Daily’s API.

Parameters:
  • room_url (str) – URL of the Daily room to connect to.

  • token (str | None) – Optional authentication token for the room.

  • bot_name (str) – Display name for the bot in the call.

  • params (DailyParams | None) – Configuration parameters (DailyParams) for the transport.

  • input_name (str | None) – Optional name for the input transport.

  • output_name (str | None) – Optional name for the output transport.

input()[source]
Return type:

DailyInputTransport

output()[source]
Return type:

DailyOutputTransport

property room_url: str
property participant_id: str
async send_image(frame)[source]
Parameters:

frame (OutputImageRawFrame | SpriteFrame)

async send_audio(frame)[source]
Parameters:

frame (OutputAudioRawFrame)

participants()[source]
participant_counts()[source]
async start_dialout(settings=None)[source]
async stop_dialout(participant_id)[source]
async send_dtmf(settings)[source]
async sip_call_transfer(settings)[source]
async sip_refer(settings)[source]
async start_recording(streaming_settings=None, stream_id=None, force_new=None)[source]
async stop_recording(stream_id=None)[source]
async start_transcription(settings=None)[source]
async stop_transcription()[source]
async send_prebuilt_chat_message(message, user_name=None)[source]

Sends a chat message to Daily’s Prebuilt main room.

Args: message: The chat message to send user_name: Optional user name that will appear as sender of the message

Parameters:
  • message (str)

  • user_name (str | None)

async capture_participant_transcription(participant_id)[source]
Parameters:

participant_id (str)

async capture_participant_audio(participant_id, audio_source='microphone', sample_rate=16000)[source]
Parameters:
  • participant_id (str)

  • audio_source (str)

  • sample_rate (int)

async capture_participant_video(participant_id, framerate=30, video_source='camera', color_format='RGB')[source]
Parameters:
  • participant_id (str)

  • framerate (int)

  • video_source (str)

  • color_format (str)

async update_publishing(publishing_settings)[source]
Parameters:

publishing_settings (Mapping[str, Any])

async update_subscriptions(participant_settings=None, profile_settings=None)[source]
async update_remote_participants(remote_participants)[source]
Parameters:

remote_participants (Mapping[str, Any])