DailyCallOptions is the configuration object accepted by Daily’s factory method (createCallObject()) and by join() and load(). Properties marked as dailyConfig must be nested inside a dailyConfig key.
Properties
Optional as a DailyCall property if a url is passed to the
join() method. Otherwise, required.Optional meeting token(Used with the
join() method).Optional: set to
true to disable the default behavior of automatically turning on your camera on the first call to either join() or startCamera().Note: this means that if you turn on your camera as part of or after startCamera(), using startVideoOff: true in a subsequent join() will have no effect.You can also control what happens on a direct join() (i.e. without startCamera() first) using token or room properties.Optional: set to
true to disable the default behavior of automatically turning on your microphone on the first call to either join() or startCamera().Note: this means that if you turn on your microphone as part of or after startCamera(), using startAudioOff: true in a subsequent join() will have no effect.You can also control what happens on a direct join() (i.e. without startCamera() first) using token or room properties.Optional: Sets the participant’s userName
Optional: Sets custom
userData on the participant. See setUserData() for more details and requirements.Optional: Receive all audio, video, and screen tracks from all call participantsDefault: trueApplies only when building with the Daily call object and while connected in SFU mode.A value of
false means no tracks will be received until they are explicitly subscribed to. Read more about manual track subscriptions in our docs.Optional: React Native-specific configuration options.
Optional: set the audio track, device, or initial state for the call.Default: true⚠️This configuration property is not supported when using Daily Prebuilt.Pass false only if the participant’s audio should remain muted the entire call.Pass a device ID string (like you get back from
enumerateDevices() to specify what audio input device to use.Or pass a MediaStreamTrack object to use that audio/video track directly. If you pass a MediaStreamTrack, you’re responsible for managing the lifecycle of that track. If you pass a Device ID string, the Daily API will manage the media track for that device.Optional: set the video track, device, or initial state for the call.Default: true⚠️This configuration property is not supported when using Daily Prebuilt.Pass false only if the participant’s video should remain muted the entire call.Pass a device ID string (like you get back from
enumerateDevices()) to specify what video input device to use.Or pass a MediaStreamTrack object to use that audio/video track directly. If you pass a MediaStreamTrack, you’re responsible for managing the lifecycle of that track. If you pass a Device ID string, the Daily API will manage the media track for that device.Optional: Takes a media receive settings object (see
updateReceiveSettings() for details). Specifies the receive settings to use right away upon joining the call.Optional: Takes a media send settings object (see
updateSendSettings() for details). Specifies the send settings to use right away upon joining the call.This property has been deprecated. Instead, use the
sendSettings iframe property to specify custom simulcast encodings.Optional: Requests that a participant sends video spatial layers with specific simulcast encodings (maxBitrate, maxFramerate, and scaleResolutionDownBy) to the server. Must be passed as a property of a dailyConfig object.DeprecatedOptional (Advanced): Configures the sender’s audio tracks (Default:
audio or screenAudio) to be either music or speech. When set to music, a 256kbps stereo audio track will be sent to other participants. When set to speech, browser defaults will be applied.Alternatively, an object can be provided in order to specify the audio bitrate and stereo mode. The bitrate is a number in bits per second and the stereo mode is a boolean, where true enables 2-channel stereo audio and false enables 1-channel mono audio.Must be passed as a property of a dailyConfig object.micAudioMode works in SFU mode only.Example object:nullMust be passed as a property in a
createCallObject().Optional: Setting to true will override Daily’s default behavior and allow multiple call instances to exist and work simultaneously. See this guide for more.Introduced in daily-js 0.67.0.Default: falseMust be passed as a property in a
createCallObject().Optional: Setting to false will override override Daily’s default behavior and allow a call instance to be used after it has been destroyed. Use of this flag is discouraged.Default: trueOptional (Advanced): Allows for specifying custom TURN servers rather than only using Daily’s default TURN servers.⚠️ This configuration property is part of the Advanced Firewall Control add-on. Please contact Sales to enable this functionality.Must be passed as a property of a After setting
dailyConfig object.Properties:
iceServers:- type:
RTCIceServer[] - description: Each object in the array has properties
urls,usernameandcredential. SeeRTCIceServer[]for full description. - default:
[]
placement:- type:
'front'|'back'|'replace' - description: Controls how the provided
iceServersare included relative to the Daily-provided servers.'front'means the providediceServersare included in the array first.'back'means the Daily-provided servers are included first.'replace'means that only the providediceServersare used. Since all known WebRTC implementations will try all includediceServersand pick one based on the lowest RTT, we recommend omitting this property unless using'replace'. - default:
'front'
iceTransportPolicy:- type:
'all'|'relay' - description:
'all'will use all of the candidates.'relay'will only use relay candidates, such as those passing through a TURN server. SeeRTCIceTransportPolicyEnum for more information. Note: Forcing the use of relay candidates is useful for testing, but for most production use cases, the default value of'all'should be used. - default:
'all'
iceConfig as a frame property, it will be necessary to call setIceConfig() periodically so that the iceServer credentials remain valid, in case they are needed for reconnections, or to connect to new peers in peer mode.It is recommended to use TURN server credentials that are valid for more than one hour, and call setIceConfig() every hour to refresh the credentials, if possible.Optional (Advanced): If defined, connections to Daily’s HTTPS and WebSocket endpoints will be sent instead to the specified proxy server.⚠️ This configuration property is part of the Advanced Firewall Control add-on. Please contact Sales to enable this functionality.Must be passed as a property of a If needed,
dailyConfig object. Defaults to null.Example:setProxyUrl() can be used to modify the property once set.Proxy requirements
The proxy server must proxy HTTPS connections to:It must also proxy HTTPS connections converting to WebSockets on*.wss.daily.co and *-wss.daily.co. If possible, proxying on *.daily.co is best.Note: the URLs listed here are subject to change in subsequent releases of daily-js.