Full reference documentation to help developers rapidly add calls to any site or app using the Daily real-time API built on WebRTC.
You’ve seen how the VCS simulator enables live testing of compositions within a web browser.Using the VCS web renderer library, you can integrate that same capability into your own app. This is useful whenever you want to render live views that match how the VCS composition gets rendered on Daily’s cloud. For example, you can offer your app’s users a preview of the various layout and graphics options. It’s much easier for users to understand how these options work if there’s a live preview, and it’s much easier for you to develop this live preview by using the VCS web renderer because it takes care of all the hard work of matching rendering.It’s even possible to use the VCS web renderer on its own, without using Daily’s cloud VCS capabilities. One such scenario would be an Interactive Live Streaming type of application. These apps usually have a “main view” or “main stage” which should be shared by all viewers and participants. There is also typically a producer or host role who controls what appears on the stage. You can use the VCS web renderer to ensure that everyone has the same rendering which is driven by the VCS commands sent by the producer/host. All the clients will render their own views locally, but they’re all guaranteed to match because they’re using the same VCS composition and same control data.In effect, the VCS web renderer on the client is like an advanced multi-track video player for a Daily room (or other media streams). You can configure it with all the rich options available in the VCS baseline composition, or you can even load your own composition with custom code. We’ll look at these two options next, starting with the common ground they share.
These are the basic steps for rendering a VCS composition in the browser:
Load the VCS web renderer library.
Create an instance of the renderer by pointing it to a DOM element (usually an empty <div>) which should contain the live content.
Feed your renderer instance with input data like video tracks and param value updates.
The VCS web renderer instance will play on its own until you call stop(). It takes care of managing display updates and all internal state. In that sense, it’s a “black box” player. There are no requirements or mandatory dependencies imposed on the web app that contains the VCS web renderer.
Even though VCS uses React internally, your web app doesn’t need to use React. But if you do use React in your web app, it won’t conflict with the internal React state of VCS because they are kept entirely separate. So it also doesn’t matter which version of React you’re using in your app.
You can also create multiple VCS renderer instances if needed. For example, the producer view of a “Live Studio” style application might show two live views next to each other: one labeled Preview, the other Output. The user would be able to test layout and graphics changes that only affect the preview, then click a button to commit those changes to the output (which is the stream that viewers receive). This kind of two-step setup needs separate VCS renderer instances for the Preview and Output views.
There are two ways to use the VCS web renderer library:
Load it from Daily’s pre-built npm packages.
Build your own composition and include it directly in your app.
If you are using a custom composition (i.e. you’ve written your own VCS React components or integrated other custom code), then you must choose the second option. Please see Building a JS package for more information.If you’re using Daily’s baseline composition, we provide a pre-built version in the npm package [@daily-co/vcs-composition-daily-baseline-web](https://www.npmjs.com/package/@daily-co/vcs-composition-daily-baseline-web).Note that this pre-built package is just the VCS composition and the web renderer library. It’s quite low-level because it’s independent of any web framework or even the Daily.js library. This means you don’t need any other dependencies, but it can be somewhat laborious to integrate this low-level package in your app because you need to explicitly manage things like passing media streams to the renderer (so that it can play video tracks).
To help with integrating the VCS web renderer into an app that’s using Daily.js and React, we are working on providing a high-level library that takes care of all the details.We intend to release this Daily-VCS-React library and associated sample code as part of the VCS 1.0 launch.
If you’re working on an application today that would benefit from this
library, we can also offer beta access — please for more details.
These instructions explain how to use the pre-built version of baseline composition from npm. As discussed above, the interface offered by this package is quite low-level because it’s independent of JavaScript frameworks and even Daily.js. You need to provide a DOM element to render into, as well as any media streams (or video elements) that provide the live video content. Because this API only uses standard DOM types, it is compatible with any framework including React (or anything else).Add the @daily-co/vcs-composition-daily-baseline-web to your web app project. Then import the package:
import * as vcsComp from '@daily-co/vcs-composition-daily-rundown-web';
(If you’re using your own custom composition, the instructions in Building a JS package will show you how to load vcsComp from a custom-built JS library.)The vcsComp library object exposes a single function named startDOMOutputAsync(). This async JavaScript function creates a VCS renderer instance. It returns an API object that manages the renderer instance. Its arguments are:
rootDOMElement must be a <div> or other empty HTML element which will contain the VCS renderer’s output.viewportWidth and viewportHeight must specify the viewport size, i.e. the resolution at which the VCS renderer will produce images.initialSources must be an object with two properties, videoSlots and imageAssets. These specify the initial inputs for the composition. See below for details on specifying composition input data.Supported properties for options are:
updateCb (function) - a callback that gets triggered when the composition is updated.
errorCb (function) - an error callback.
getAssetUrlCb (function) - a callback that gets called to load asset URLs requested by the composition.
fps (number) - the suggested frame rate for the VCS player (defaults to 30).
scaleFactor (number) - a display scale factor applied to the output within the given DOM element (defaults to 1).
enablePreload (boolean) - if true, the composition’s image preloads are completed before startDOMOutputAsync returns.
The API object returned by startDOMOutputAsync() offers a number of methods.The following are essential for controlling the renderer and settings its inputs:
stop() - stops the VCS renderer playback immediately.
setParamValue(paramId: string, value: any) - sets a value for param paramId.
setActiveVideoInputSlots(slots: Array) - sets the current video inputs.
The following additional methods provide information about the composition, let you provide optional room metadata, and send messages of known types like “chat” or “emoji reaction” (these are called standard sources):
getCompositionInterface() — returns the composition interface object which describes the params and other input types supported by the composition.
setRoomPeerDescriptionsById(peersById: Map) - sets room peer descriptions associated with video inputs (or audio-only participants who don’t have a video input).
addStandardSourceMessage(sourceId: string, data: any) - adds a standard source message of type sourceId.
To learn more about this API, you can read the VCS Simulator’s source code. The simulator makes use of all these methods to create its UI and send data to the composition. The VCS Simulator is a single-file HTML+JS application without a build step, so its source is entirely in devrig/vcs-rig.html.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Daily","colors":{"primary":"#FF6E4A","light":"#FF6E4A","dark":"#141c24"},"logo":{"light":"https://mintcdn.com/daily-co/UZ5SeZfPxiPGRDvT/logo/light.svg?fit=max\u0026auto=format\u0026n=UZ5SeZfPxiPGRDvT\u0026q=85\u0026s=e96bdb062d7c5b0d12c9b0e155ca32ee","dark":"https://mintcdn.com/daily-co/UZ5SeZfPxiPGRDvT/logo/dark.svg?fit=max\u0026auto=format\u0026n=UZ5SeZfPxiPGRDvT\u0026q=85\u0026s=f537bd7ef1b96c7b50130240a5a98111"},"favicon":"https://mintcdn.com/daily-co/UZ5SeZfPxiPGRDvT/favicon.ico?fit=max\u0026auto=format\u0026n=UZ5SeZfPxiPGRDvT\u0026q=85\u0026s=c35fb5852ca7a1df9ca8a63ef3a9b26b","api":{"openapi":"openapi.json","mdx":{"auth":{"method":"bearer"}}},"navbar":{"links":[{"icon":"discord","href":"https://discord.com/invite/dailyco","label":"Discord"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.daily.co"}},"footer":{"socials":{"x":"https://x.com/dailyco","github":"https://github.com/daily-co","discord":"https://discord.com/invite/dailyco"},"links":[{"header":"Company","items":[{"label":"Blog","href":"https://blog.daily.co"},{"label":"Pipecat","href":"https://docs.pipecat.ai"}]}]},"integrations":{"cookies":{"key":"daily_analytics_consent","value":"granted"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"daily-co","hasAudioNarration":false,"actualSubdomain":"daily-co","customDomains":["docs.daily.co"],"gitSource":{"type":"github","owner":"daily-co","repo":"daily-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"c517bf74-a3b0-4408-a32c-fd3e07743699","liveDeploymentHistoryId":"6ada298d959c31025f5842e1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ada298d959c31025f5842e1"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ada298d959c31025f5842e1","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Reference","count":411},{"language":"default","tag":"Instance Methods","count":202},{"language":"default","tag":"Daily JS","count":168},{"language":"default","tag":"Documentation","count":121},{"language":"default","tag":"REST API","count":118},{"language":"default","tag":"React Native","count":110},{"language":"default","tag":"Daily React","count":60},{"language":"default","tag":"Events","count":58},{"language":"default","tag":"Guides","count":40},{"language":"default","tag":"Hooks","count":39}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":false}},"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":".peer.is-center~.peer-\\[\\.is-center\\]\\:max-w-3xl{max-width:75rem;padding:0 3rem}"}],"page":{"pagePath":"docs/vcs/tools/vcs-web-renderer","slug":"/docs/vcs/tools/vcs-web-renderer","pageMetadata":{"title":"VCS web renderer","description":"Full reference documentation to help developers rapidly add calls to any site or app using the Daily real-time API built on WebRTC.","href":"/docs/vcs/tools/vcs-web-renderer"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Full reference documentation to help developers rapidly add calls to any site or app using the Daily real-time API built on WebRTC.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`You’ve seen how the `,_jsx(_components.a,{href:`/docs/vcs/tools/simulator`,children:`VCS simulator`}),` enables live testing of compositions within a web browser.`]}),`\n`,_jsxs(_components.p,{children:[`Using the `,_jsx(_components.strong,{children:`VCS web renderer library`}),`, you can integrate that same capability into your own app. This is useful whenever you want to render live views that match how the VCS composition gets rendered on Daily’s cloud. For example, you can offer your app’s users a preview of the various layout and graphics options. It’s much easier for users to understand how these options work if there’s a live preview, and it’s much easier for you to develop this live preview by using the VCS web renderer because it takes care of all the hard work of matching rendering.`]}),`\n`,_jsxs(_components.p,{children:[`It’s even possible to use the VCS web renderer on its own, without using Daily’s cloud VCS capabilities. One such scenario would be an `,_jsx(_components.a,{href:`/docs/guides/scaling-calls/interactive-live-streaming-rtmp-output`,children:`Interactive Live Streaming`}),` type of application. These apps usually have a “main view” or “main stage” which should be shared by all viewers and participants. There is also typically a producer or host role who controls what appears on the stage. You can use the VCS web renderer to ensure that everyone has the same rendering which is driven by the VCS commands sent by the producer/host. All the clients will render their own views locally, but they’re all guaranteed to match because they’re using the same VCS composition and same control data.`]}),`\n`,_jsx(_components.p,{children:`In effect, the VCS web renderer on the client is like an advanced multi-track video player for a Daily room (or other media streams). You can configure it with all the rich options available in the VCS baseline composition, or you can even load your own composition with custom code. We’ll look at these two options next, starting with the common ground they share.`}),`\n`,_jsx(Heading,{level:`3`,id:`vcs-renderer-and-the-dom`,children:`VCS renderer and the DOM`}),`\n`,_jsx(_components.p,{children:`These are the basic steps for rendering a VCS composition in the browser:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Load the VCS web renderer library.`}),`\n`,_jsxs(_components.li,{children:[`Create an instance of the renderer by pointing it to a DOM element (usually an empty `,_jsx(_components.code,{children:`\u003cdiv>`}),`) which should contain the live content.`]}),`\n`,_jsxs(_components.li,{children:[`Feed your renderer instance with `,_jsx(_components.a,{href:`/docs/vcs/core-concepts/input-and-compositing-models`,children:`input data`}),` like video tracks and param value updates.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The VCS web renderer instance will play on its own until you call `,_jsx(_components.code,{children:`stop()`}),`. It takes care of managing display updates and all internal state. In that sense, it’s a “black box” player. There are no requirements or mandatory dependencies imposed on the web app that contains the VCS web renderer.`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Even though VCS uses React internally, your web app doesn’t need to use React. But if you do use React in your web app, it won’t conflict with the internal React state of VCS because they are kept entirely separate. So it also doesn’t matter which version of React you’re using in your app.`})}),`\n`,_jsxs(_components.p,{children:[`You can also create multiple VCS renderer instances if needed. For example, the producer view of a “Live Studio” style application might show two live views next to each other: one labeled `,_jsx(_components.em,{children:`Preview`}),`, the other `,_jsx(_components.em,{children:`Output`}),`. The user would be able to test layout and graphics changes that only affect the preview, then click a button to commit those changes to the output (which is the stream that viewers receive). This kind of two-step setup needs separate VCS renderer instances for the Preview and Output views.`]}),`\n`,_jsx(Heading,{level:`3`,id:`library-options`,children:`Library options`}),`\n`,_jsx(_components.p,{children:`There are two ways to use the VCS web renderer library:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Load it from Daily’s pre-built npm packages.`}),`\n`,_jsx(_components.li,{children:`Build your own composition and include it directly in your app.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`If you are using a custom composition (i.e. you’ve written your own VCS React components or integrated other custom code), then you must choose the second option. Please see `,_jsx(_components.a,{href:`/docs/vcs/tools/build-a-js-package`,children:`Building a JS package`}),` for more information.`]}),`\n`,_jsxs(_components.p,{children:[`If you’re using Daily’s baseline composition, we provide a pre-built version in the npm package `,_jsx(_components.code,{children:`[@daily-co/vcs-composition-daily-baseline-web](https://www.npmjs.com/package/@daily-co/vcs-composition-daily-baseline-web)`}),`.`]}),`\n`,_jsx(_components.p,{children:`Note that this pre-built package is just the VCS composition and the web renderer library. It’s quite low-level because it’s independent of any web framework or even the Daily.js library. This means you don’t need any other dependencies, but it can be somewhat laborious to integrate this low-level package in your app because you need to explicitly manage things like passing media streams to the renderer (so that it can play video tracks).`}),`\n`,_jsx(Heading,{level:`4`,id:`helper-library-for-connecting-to-a-daily-room`,children:`Helper library for connecting to a Daily room`}),`\n`,_jsx(_components.p,{children:`To help with integrating the VCS web renderer into an app that’s using Daily.js and React, we are working on providing a high-level library that takes care of all the details.`}),`\n`,_jsx(_components.p,{children:`We intend to release this Daily-VCS-React library and associated sample code as part of the VCS 1.0 launch.`}),`\n`,_jsxs(Tip,{children:[_jsxs(_components.p,{children:[`If you’re working on an application today that would benefit from this\nlibrary, we can also offer beta access — please`,` `]}),` `,_jsx(_components.p,{children:`for more details.`})]}),`\n`,_jsx(Heading,{level:`3`,id:`using-the-composition-library-directly`,children:`Using the composition library directly`}),`\n`,_jsx(_components.p,{children:`These instructions explain how to use the pre-built version of baseline composition from npm. As discussed above, the interface offered by this package is quite low-level because it’s independent of JavaScript frameworks and even Daily.js. You need to provide a DOM element to render into, as well as any media streams (or video elements) that provide the live video content. Because this API only uses standard DOM types, it is compatible with any framework including React (or anything else).`}),`\n`,_jsxs(_components.p,{children:[`Add the `,_jsx(_components.code,{children:`@daily-co/vcs-composition-daily-baseline-web`}),` to your web app project. Then import the package:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` *`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` as`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` vcsComp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@daily-co/vcs-composition-daily-rundown-web'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`(If you’re using your own custom composition, the instructions in `,_jsx(_components.a,{href:`/docs/vcs/tools/build-a-js-package`,children:`Building a JS package`}),` will show you how to load `,_jsx(_components.code,{children:`vcsComp`}),` from a custom-built JS library.)`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`vcsComp`}),` library object exposes a single function named `,_jsx(_components.code,{children:`startDOMOutputAsync()`}),`. This async JavaScript function creates a VCS renderer instance. It returns an API object that manages the renderer instance. Its arguments are:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`startDOMOutputAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` rootDOMElement`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` viewportWidth`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` viewportHeight`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` initialSources`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` options`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`rootDOMElement`}),` must be a `,_jsx(_components.code,{children:`\u003cdiv>`}),` or other empty HTML element which will contain the VCS renderer’s output.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`viewportWidth`}),` and `,_jsx(_components.code,{children:`viewportHeight`}),` must specify the viewport size, i.e. the resolution at which the VCS renderer will produce images.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`initialSources`}),` must be an object with two properties, `,_jsx(_components.code,{children:`videoSlots`}),` and `,_jsx(_components.code,{children:`imageAssets`}),`. These specify the initial inputs for the composition. See below for details on specifying composition input data.`]}),`\n`,_jsxs(_components.p,{children:[`Supported properties for `,_jsx(_components.code,{children:`options`}),` are:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`updateCb`}),` (function) - a callback that gets triggered when the composition is updated.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`errorCb`}),` (function) - an error callback.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`getAssetUrlCb`}),` (function) - a callback that gets called to load asset URLs requested by the composition.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`fps`}),` (number) - the suggested frame rate for the VCS player (defaults to 30).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`scaleFactor`}),` (number) - a display scale factor applied to the output within the given DOM element (defaults to 1).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`enablePreload`}),` (boolean) - if true, the composition’s image preloads are completed before `,_jsx(_components.code,{children:`startDOMOutputAsync`}),` returns.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`vcs-renderer-instance-api`,children:`VCS renderer instance API`}),`\n`,_jsxs(_components.p,{children:[`The API object returned by `,_jsx(_components.code,{children:`startDOMOutputAsync()`}),` offers a number of methods.`]}),`\n`,_jsx(_components.p,{children:`The following are essential for controlling the renderer and settings its inputs:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`stop()`}),` - stops the VCS renderer playback immediately.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`setParamValue(paramId: string, value: any)`}),` - sets a value for param `,_jsx(_components.code,{children:`paramId`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`setActiveVideoInputSlots(slots: Array)`}),` - sets the current video inputs.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The following additional methods provide information about the composition, let you provide optional room metadata, and send messages of known types like “chat” or “emoji reaction” (these are called standard sources):`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`getCompositionInterface()`}),` — returns the composition interface object which describes the params and other input types supported by the composition.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`setRoomPeerDescriptionsById(peersById: Map)`}),` - sets room peer descriptions associated with video inputs (or audio-only participants who don’t have a video input).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`addStandardSourceMessage(sourceId: string, data: any)`}),` - adds a standard source message of type `,_jsx(_components.code,{children:`sourceId`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`To learn more about this API, you can read the `,_jsx(_components.a,{href:`/docs/vcs/tools/simulator`,children:`VCS Simulator`}),`’s source code. The simulator makes use of all these methods to create its UI and send data to the composition. The VCS Simulator is a single-file HTML+JS application without a build step, so its source is entirely in `,_jsx(_components.code,{children:`devrig/vcs-rig.html`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"VCS web renderer","description":"Full reference documentation to help developers rapidly add calls to any site or app using the Daily real-time API built on WebRTC.","href":"/docs/vcs/tools/vcs-web-renderer"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"VCS renderer and the DOM","slug":"vcs-renderer-and-the-dom","depth":3,"children":[]},{"title":"Library options","slug":"library-options","depth":3,"children":[]},{"title":"Helper library for connecting to a Daily room","slug":"helper-library-for-connecting-to-a-daily-room","depth":4,"children":[]},{"title":"Using the composition library directly","slug":"using-the-composition-library-directly","depth":3,"children":[]},{"title":"VCS renderer instance API","slug":"vcs-renderer-instance-api","depth":4,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/daily-co/b09599f26eb2661c/kapa-widget.js","/_mintlify/custom/daily-co/7fcc8ce029135af3/gtm.js"],"subdomain":"daily-co","siteName":"Daily","title":"VCS web renderer - Daily","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-10T14:07:08.391Z","originalFileLocation":"docs/vcs/tools/vcs-web-renderer.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Full reference documentation to help developers rapidly add calls to any site or app using the Daily real-time API built on WebRTC.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Daily\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/daily-co/Zqz2RGzK123gGV7q/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/daily-co/Zqz2RGzK123gGV7q/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/daily-co/Zqz2RGzK123gGV7q/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/daily-co/Zqz2RGzK123gGV7q/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/daily-co/Zqz2RGzK123gGV7q/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/daily-co/Zqz2RGzK123gGV7q/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/daily-co/Zqz2RGzK123gGV7q/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/daily-co/Zqz2RGzK123gGV7q/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/daily-co/Zqz2RGzK123gGV7q/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"VCS web renderer - Daily\">\u003cmeta data-mint-head property=\"og:description\" content=\"Full reference documentation to help developers rapidly add calls to any site or app using the Daily real-time API built on WebRTC.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Daily\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.daily.co/docs/vcs/tools/vcs-web-renderer\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://daily-co.mintlify.app/_mintlify/api/og/v2?division=Tools\u0026amp;title=VCS+web+renderer\u0026amp;description=Full+reference+documentation+to+help+developers+rapidly+add+calls+to+any+site+or+app+using+the+Daily+real-time+API+built+on+WebRTC.\u0026amp;theme=15766adf3c4c0f043ee3c760\u0026amp;signature=caf0167b0eb0188817379ce14cfbd4c968214825eb9fd734aa943bf0b28ebfb7\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"VCS web renderer - Daily\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Full reference documentation to help developers rapidly add calls to any site or app using the Daily real-time API built on WebRTC.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://daily-co.mintlify.app/_mintlify/api/og/v2?division=Tools\u0026amp;title=VCS+web+renderer\u0026amp;description=Full+reference+documentation+to+help+developers+rapidly+add+calls+to+any+site+or+app+using+the+Daily+real-time+API+built+on+WebRTC.\u0026amp;theme=15766adf3c4c0f043ee3c760\u0026amp;signature=caf0167b0eb0188817379ce14cfbd4c968214825eb9fd734aa943bf0b28ebfb7\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/daily-co/Zqz2RGzK123gGV7q/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Daily\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF6E4A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.daily.co/docs/vcs/tools/vcs-web-renderer\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/vcs/tools/vcs-web-renderer.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.daily.co/#organization\",\"name\":\"Daily\",\"url\":\"https://docs.daily.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/daily-co/UZ5SeZfPxiPGRDvT/logo/light.svg?fit=max\u0026auto=format\u0026n=UZ5SeZfPxiPGRDvT\u0026q=85\u0026s=e96bdb062d7c5b0d12c9b0e155ca32ee\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.daily.co#website\",\"name\":\"Daily\",\"url\":\"https://docs.daily.co\",\"publisher\":{\"@id\":\"https://docs.daily.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.daily.co/docs/vcs/tools/vcs-web-renderer#webpage\",\"url\":\"https://docs.daily.co/docs/vcs/tools/vcs-web-renderer\",\"name\":\"VCS web renderer\",\"description\":\"Full reference documentation to help developers rapidly add calls to any site or app using the Daily real-time API built on WebRTC.\",\"dateModified\":\"2026-06-10T14:07:08.391Z\",\"isPartOf\":{\"@id\":\"https://docs.daily.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.daily.co/docs/vcs/tools/vcs-web-renderer#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.daily.co/docs/vcs/tools/vcs-web-renderer#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Tools\",\"item\":\"https://docs.daily.co/docs/vcs/tools/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"VCS web renderer\",\"item\":\"https://docs.daily.co/docs/vcs/tools/vcs-web-renderer\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.daily.co/docs/vcs/tools/vcs-web-renderer#article\",\"headline\":\"VCS web renderer\",\"name\":\"VCS web renderer\",\"description\":\"Full reference documentation to help developers rapidly add calls to any site or app using the Daily real-time API built on WebRTC.\",\"url\":\"https://docs.daily.co/docs/vcs/tools/vcs-web-renderer\",\"mainEntityOfPage\":{\"@id\":\"https://docs.daily.co/docs/vcs/tools/vcs-web-renderer#webpage\"},\"dateModified\":\"2026-06-10T14:07:08.391Z\",\"publisher\":{\"@id\":\"https://docs.daily.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.daily.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Daily\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Daily","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/"}]},{"tab":"Documentation","dropdowns":[{"dropdown":"Guides","icon":"book","pages":[{"group":"Architecture \u0026 Monitoring","pages":[{"title":"Video Call Architecture (Quick Intro)","sidebarTitle":"Video call architecture","href":"/docs/guides/architecture-and-monitoring/intro-to-video-arch"},{"title":"Global Mesh Network (Mesh SFU)","sidebarTitle":"Global Mesh Network","href":"/docs/guides/architecture-and-monitoring/global-mesh-network"},{"title":"Daily call quality logging and metrics","sidebarTitle":"Logging and metrics","href":"/docs/guides/architecture-and-monitoring/logging-and-metrics"},{"title":"Using the Daily Dashboard","sidebarTitle":"Dashboard overview","href":"/docs/guides/architecture-and-monitoring/experiment-in-the-dashboard"},{"title":"Daily Adaptive Bitrate","sidebarTitle":"Adaptive Bitrate","href":"/docs/guides/architecture-and-monitoring/adaptive-bitrate"}]},{"group":"Troubleshooting","pages":[{"title":"Debugging call issues","href":"/docs/guides/troubleshooting/debugging-call-issues"},{"title":"Debugging recordings and transcription","href":"/docs/guides/troubleshooting/debugging-recordings-and-transcription"},{"title":"Before contacting support","href":"/docs/guides/troubleshooting/before-contacting-support"}]},{"group":"Privacy and Security","pages":[{"title":"Working with Daily meeting tokens","sidebarTitle":"Meeting tokens","href":"/docs/guides/privacy-and-security/meeting-tokens"},{"title":"Self-signing meeting tokens","sidebarTitle":"Self-signing tokens","href":"/docs/guides/privacy-and-security/self-signing-tokens"},{"title":"Controlling who joins a meeting","sidebarTitle":"Controlling who joins","href":"/docs/guides/privacy-and-security/controlling-who-joins-a-meeting"},{"title":"HIPAA Compliance for healthcare","sidebarTitle":"HIPAA compliance","href":"/docs/guides/privacy-and-security/hipaa"},{"title":"Setting up your CSP for daily-js","sidebarTitle":"Content Security Policy","href":"/docs/guides/privacy-and-security/content-security-policy"},{"title":"Networking Guide","sidebarTitle":"Networking","href":"/docs/guides/privacy-and-security/corporate-firewalls-nats-allowed-ip-list"}]},{"group":"Scaling Calls","pages":[{"title":"Scaling Daily applications","sidebarTitle":"Overview","href":"/docs/guides/scaling-calls/index"},{"title":"Large real-time calls","href":"/docs/guides/scaling-calls/large-real-time-calls"},{"title":"Interactive live streaming and RTMP output","sidebarTitle":"Streaming and RTMP","href":"/docs/guides/scaling-calls/interactive-live-streaming-rtmp-output"},{"title":"Best practices to scale large experiences","sidebarTitle":"Best practices","href":"/docs/guides/scaling-calls/best-practices-to-scale-large-experiences"}]},{"group":"Features","pages":[{"group":"Recording","root":{"title":"Recording calls with the Daily API","sidebarTitle":"Overview","href":"/docs/guides/features/recording/index"},"pages":[{"title":"Storing Daily call recordings in a custom Amazon S3 bucket","sidebarTitle":"Custom S3 storage","href":"/docs/guides/features/recording/custom-s3-storage"},{"title":"Storing Daily call recordings in a custom OCI bucket","sidebarTitle":"Custom OCI storage","href":"/docs/guides/features/recording/custom-oci-storage"}]},{"group":"Live Streaming","root":{"title":"Live streaming with Daily","sidebarTitle":"RTMP live streaming","href":"/docs/guides/features/live-streaming/index"},"pages":[{"title":"Streaming HLS with Daily","sidebarTitle":"HLS streaming","href":"/docs/guides/features/live-streaming/hls"},{"title":"Multi-instance live streaming and recording","sidebarTitle":"Multi-instance","href":"/docs/guides/features/live-streaming/multi-instance"},{"title":"Custom layouts with VCS","sidebarTitle":"VCS layouts","href":"/docs/guides/features/live-streaming/vcs"}]},{"group":"Dial-in / Dial-out","root":{"title":"SIP and PSTN dial-in/dial-out","sidebarTitle":"Overview","href":"/docs/guides/features/dial-in-dial-out/index"},"pages":[{"title":"SIP dial-in and dial-out","sidebarTitle":"SIP","href":"/docs/guides/features/dial-in-dial-out/sip"},{"title":"PSTN dial-in with a PIN code","sidebarTitle":"PIN dial-in","href":"/docs/guides/features/dial-in-dial-out/pstn-pin-dialin"},{"title":"SIP Interconnect and Pinless PSTN dial-in","sidebarTitle":"Pinless dial-in","href":"/docs/guides/features/dial-in-dial-out/sip-interconnect-pinless"},{"title":"SIP and PSTN call transfers","sidebarTitle":"Transfers","href":"/docs/guides/features/dial-in-dial-out/transfers"},{"group":"SIP Trunk","root":{"title":"SIP Trunk (inbound)","sidebarTitle":"SIP Trunk","href":"/docs/guides/features/dial-in-dial-out/sip-trunk/index"},"pages":[{"title":"Twilio","sidebarTitle":"Twilio","href":"/docs/guides/features/dial-in-dial-out/sip-trunk/twilio"},{"title":"Telnyx","sidebarTitle":"Telnyx","href":"/docs/guides/features/dial-in-dial-out/sip-trunk/telnyx"},{"title":"Vonage","sidebarTitle":"Vonage","href":"/docs/guides/features/dial-in-dial-out/sip-trunk/vonage"}]},{"title":"SIP Clients","sidebarTitle":"SIP Clients","href":"/docs/guides/features/dial-in-dial-out/sip-clients"}]},{"title":"Transcription","href":"/docs/guides/features/transcription"},{"title":"Build audio-only experiences with Daily","sidebarTitle":"Audio-only","href":"/docs/guides/features/audio-only"}]}]},{"dropdown":"REST API","icon":"server","pages":[{"title":"REST API","sidebarTitle":"Overview","href":"/docs/rest-api"},{"title":"Authentication","href":"/docs/rest-api/authentication"},{"title":"Errors","href":"/docs/rest-api/errors"},{"title":"Access links","href":"/docs/rest-api/access-links"},{"title":"Transcription","href":"/docs/rest-api/transcription"}]},{"dropdown":"Daily JS","icon":"js","pages":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/docs/daily-js/introduction"},{"title":"Quickstart","href":"/docs/daily-js/quickstart"},{"title":"Installation","href":"/docs/daily-js/installation"}]},{"group":"Core Concepts","pages":[{"title":"Call Modes","href":"/docs/daily-js/concepts/call-modes"},{"title":"Call configuration","href":"/docs/daily-js/concepts/call-configuration"},{"title":"Events","href":"/docs/daily-js/concepts/events"},{"title":"Participants","href":"/docs/daily-js/concepts/participants"},{"title":"Tracks and Media","href":"/docs/daily-js/concepts/tracks"}]},{"group":"Guides","pages":[{"title":"Audio and Video Controls","href":"/docs/daily-js/guides/audio-video"},{"title":"Handling device permissions","href":"/docs/daily-js/guides/device-permissions"},{"title":"Waiting room (knock-to-join)","href":"/docs/daily-js/guides/waiting-room"},{"title":"Custom messages and shared data","href":"/docs/daily-js/guides/custom-messages"},{"title":"Permissions","href":"/docs/daily-js/guides/permissions"},{"title":"Network and call quality","href":"/docs/daily-js/guides/network-quality"},{"title":"Working with multiple call instances","href":"/docs/daily-js/guides/multi-instance"}]},{"group":"Features","pages":[{"title":"Screen Sharing","href":"/docs/daily-js/features/screen-sharing"},{"title":"Recording","href":"/docs/daily-js/features/recording"},{"title":"Live Streaming","href":"/docs/daily-js/features/live-streaming"},{"title":"Real-Time Transcription","href":"/docs/daily-js/features/transcription"},{"title":"Custom Tracks","href":"/docs/daily-js/features/custom-tracks"},{"title":"Dial-in and dial-out","href":"/docs/daily-js/features/dialin-dialout"}]}]},{"dropdown":"Daily React","icon":"react","pages":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/docs/daily-react/docs"},{"title":"Quickstart","href":"/docs/daily-react/docs/quickstart"},{"title":"Installation","href":"/docs/daily-react/docs/installation"}]},{"group":"Core Concepts","pages":[{"title":"Thinking in Daily React","href":"/docs/daily-react/docs/thinking-in-daily-react"},{"title":"The call object and provider","href":"/docs/daily-react/docs/call-object-and-provider"},{"title":"Working with participants","href":"/docs/daily-react/docs/participants"},{"title":"Handling events","href":"/docs/daily-react/docs/events"},{"title":"Rendering media","href":"/docs/daily-react/docs/rendering-media"}]},{"group":"Building Call Features","pages":[{"title":"Cameras, mics, and speakers","href":"/docs/daily-react/docs/devices"},{"title":"Active speaker and audio levels","href":"/docs/daily-react/docs/active-speaker"},{"title":"Screen sharing","href":"/docs/daily-react/docs/screen-sharing"},{"title":"Custom messages","href":"/docs/daily-react/docs/app-messages"},{"title":"Recording","href":"/docs/daily-react/docs/recording"},{"title":"Live streaming","href":"/docs/daily-react/docs/live-streaming"},{"title":"Real-Time Transcription","href":"/docs/daily-react/docs/transcription"},{"title":"Permissions","href":"/docs/daily-react/docs/permissions"},{"title":"Network quality and diagnostics","href":"/docs/daily-react/docs/network-quality"}]}]},{"dropdown":"React Native","icon":"mobile","pages":[{"title":"Introduction","href":"/docs/react-native"},{"title":"Installation","href":"/docs/react-native/installation"}]},{"dropdown":"Android","icon":"android","pages":[{"title":"Daily Client SDK for Android","sidebarTitle":"Overview","href":"/docs/android"},{"title":"Installing the Daily Client SDK for Android","sidebarTitle":"Installation","href":"/docs/android/installation"},{"title":"Daily Android Mobile SDK Kotlin Quickstart","sidebarTitle":"Quickstart","href":"/docs/android/quickstart"},{"title":"Daily Android Mobile SDK Screen Share Quickstart","sidebarTitle":"Screen Sharing","href":"/docs/android/screen-share"}]},{"dropdown":"iOS","icon":"apple","pages":[{"title":"Daily Client SDK for iOS","sidebarTitle":"Overview","href":"/docs/ios"},{"title":"Installing the Daily Client SDK for iOS","sidebarTitle":"Installation","href":"/docs/ios/installation"},{"title":"Daily iOS Mobile SDK Swift Quickstart","sidebarTitle":"Quickstart","href":"/docs/ios/quickstart"},{"title":"Daily iOS Mobile SDK Screen Share Quickstart","sidebarTitle":"Screen Sharing","href":"/docs/ios/screen-share"}]},{"dropdown":"Flutter","icon":"flutter","pages":[{"title":"Daily Client SDK for Flutter","sidebarTitle":"Overview","href":"/docs/flutter"},{"title":"Installing the Daily Client SDK for Flutter","sidebarTitle":"Installation","href":"/docs/flutter/installation"}]},{"dropdown":"Python","icon":"python","pages":[{"title":"Daily Python SDK","sidebarTitle":"Overview","href":"/docs/python"},{"title":"Installing the Daily Client SDK for Python","sidebarTitle":"Installation","href":"/docs/python/installation"},{"title":"Getting started with the Daily Python SDK","sidebarTitle":"Getting started","href":"/docs/python/getting-started"}]},{"dropdown":"Prebuilt","icon":"browser","pages":[{"title":"Embed video chat quickly with Daily Prebuilt","sidebarTitle":"Overview","href":"/docs/prebuilt"},{"title":"Customize Daily Prebuilt's UI","sidebarTitle":"Customizing","href":"/docs/prebuilt/customizing-daily-prebuilt"},{"title":"Customizing Daily Prebuilt calls with color themes","sidebarTitle":"Color themes","href":"/docs/prebuilt/customizing-daily-prebuilt-calls-with-color-themes"},{"title":"Changing the language in Daily Prebuilt","sidebarTitle":"Language settings","href":"/docs/prebuilt/language"}]},{"dropdown":"VCS","icon":"film","pages":[{"group":"Getting Started","pages":[{"title":"Using Daily's Video Component System (VCS) SDK","sidebarTitle":"Introduction","href":"/docs/vcs"},{"title":"Daily's Video Component System (VCS) installation guide","sidebarTitle":"Installation","href":"/docs/vcs/installation"},{"title":"VCS Layout API","href":"/docs/vcs/layout-api/index"}]},{"group":"Core Concepts","pages":[{"title":"VCS SDK: Core concepts","sidebarTitle":"Core concepts","href":"/docs/vcs/core-concepts/index"},{"title":"VCS best practices","sidebarTitle":"Best practices","href":"/docs/vcs/core-concepts/best-practices"},{"title":"VCS SDK: Composition file structure and interface","sidebarTitle":"Composition and interface","href":"/docs/vcs/core-concepts/composition"},{"title":"VCS SDK: Input and compositing models","sidebarTitle":"Input and compositing models","href":"/docs/vcs/core-concepts/input-and-compositing-models"}]},{"group":"Components","pages":[{"title":"VCS Components","sidebarTitle":"Overview","href":"/docs/vcs/components/index"},{"title":"VCS Box component","sidebarTitle":"Box","href":"/docs/vcs/components/box"},{"title":"VCS Image component","sidebarTitle":"Image","href":"/docs/vcs/components/image"},{"title":"VCS Text component","sidebarTitle":"Text","href":"/docs/vcs/components/text"},{"title":"VCS Video component","sidebarTitle":"Video","href":"/docs/vcs/components/video"},{"title":"VCS WebFrame component","sidebarTitle":"WebFrame","href":"/docs/vcs/components/webframe"}]},{"group":"Custom React Hooks","pages":[{"title":"VCS: Custom React Hooks","sidebarTitle":"Overview","href":"/docs/vcs/custom-react-hooks/index"},{"title":"VCS: useActiveVideo()","sidebarTitle":"useActiveVideo()","href":"/docs/vcs/custom-react-hooks/use-active-video"},{"title":"VCS: useGrid()","sidebarTitle":"useGrid()","href":"/docs/vcs/custom-react-hooks/use-grid"},{"title":"VCS: useMediaInput()","sidebarTitle":"useMediaInput()","href":"/docs/vcs/custom-react-hooks/use-media-input"},{"title":"VCS: useParams()","sidebarTitle":"useParams()","href":"/docs/vcs/custom-react-hooks/use-params"},{"title":"VCS: useVideoPlaybackState()","sidebarTitle":"useVideoPlaybackState()","href":"/docs/vcs/custom-react-hooks/use-video-playback-state"},{"title":"VCS: useVideoTime()","sidebarTitle":"useVideoTime()","href":"/docs/vcs/custom-react-hooks/use-video-time"},{"title":"VCS: useViewportSize()","sidebarTitle":"useViewportSize()","href":"/docs/vcs/custom-react-hooks/use-viewport-size"}]},{"title":"Using session assets in Daily VCS","sidebarTitle":"Session assets","href":"/docs/vcs/session-assets"},{"group":"Tools","pages":[{"title":"VCS tools","href":"/docs/vcs/tools/index"},{"title":"Build a JS package","href":"/docs/vcs/tools/build-a-js-package"},{"title":"VCS Simulator","description":"Full reference documentation to help developers rapidly add calls to any site or app using the Daily real-time API built on WebRTC.","href":"/docs/vcs/tools/simulator"},{"title":"VCS web renderer","href":"/docs/vcs/tools/vcs-web-renderer"}]}]}]},{"tab":"Reference","dropdowns":[{"dropdown":"REST API","icon":"server","pages":[{"group":"Domain","root":{"title":"Overview","description":null,"href":"/reference/rest-api/domain"},"pages":[{"title":"Get Domain Config","openapi":"GET /","href":"/reference/rest-api/domain/get-domain-config"},{"title":"Set Domain Config","openapi":"POST /","href":"/reference/rest-api/domain/set-domain-config"}]},{"group":"Rooms","root":{"title":"Rooms","href":"/reference/rest-api/rooms/index"},"pages":[{"group":"Rooms","pages":[{"title":"List Rooms","openapi":"GET /rooms","href":"/reference/rest-api/rooms/list-rooms"},{"title":"Create Room","openapi":"POST /rooms","href":"/reference/rest-api/rooms/create-room"},{"title":"Get Room Config","openapi":"GET /rooms/{room_name}","href":"/reference/rest-api/rooms/get-room"},{"title":"Get Room Presence","openapi":"GET /rooms/{room_name}/presence","href":"/reference/rest-api/rooms/get-room-presence"},{"title":"Set Room Config","openapi":"POST /rooms/{room_name}","href":"/reference/rest-api/rooms/update-room"},{"title":"Delete Room","openapi":"DELETE /rooms/{room_name}","href":"/reference/rest-api/rooms/delete-room"}]},{"group":"Session","pages":[{"title":"Get Room Presence","openapi":"GET /rooms/{room_name}/presence","href":"/reference/rest-api/rooms/session/get-presence"},{"title":"Send App Message","openapi":"POST /rooms/{room_name}/send-app-message","href":"/reference/rest-api/rooms/session/send-app-message"},{"title":"Get Session Data","openapi":"GET /rooms/{room_name}/get-session-data","href":"/reference/rest-api/rooms/session/get-session-data"},{"title":"Set Session Data","openapi":"POST /rooms/{room_name}/set-session-data","href":"/reference/rest-api/rooms/session/set-session-data"},{"title":"Eject","openapi":"POST /rooms/{room_name}/eject","href":"/reference/rest-api/rooms/session/eject"},{"title":"Update Permissions","openapi":"POST /rooms/{room_name}/update-permissions","href":"/reference/rest-api/rooms/session/update-permissions"}]},{"group":"Recordings","pages":[{"title":"Room Recordings Start","openapi":"POST /rooms/{room_name}/recordings/start","href":"/reference/rest-api/rooms/recordings/start"},{"title":"Room Recordings Update","openapi":"POST /rooms/{room_name}/recordings/update","href":"/reference/rest-api/rooms/recordings/update"},{"title":"Room Recordings Stop","openapi":"POST /rooms/{room_name}/recordings/stop","href":"/reference/rest-api/rooms/recordings/stop"}]},{"group":"Live Streaming","pages":[{"title":"Room Livestreaming Start","openapi":"POST /rooms/{room_name}/live-streaming/start","href":"/reference/rest-api/rooms/live-streaming/start"},{"title":"Room Livestreaming Update","openapi":"POST /rooms/{room_name}/live-streaming/update","href":"/reference/rest-api/rooms/live-streaming/update"},{"title":"Room Livestreaming Add Endpoints","openapi":"POST /rooms/{room_name}/live-streaming/add-endpoints","href":"/reference/rest-api/rooms/live-streaming/add-endpoints"},{"title":"Room Livestreaming Remove Endpoints","openapi":"POST /rooms/{room_name}/live-streaming/remove-endpoints","href":"/reference/rest-api/rooms/live-streaming/remove-endpoints"},{"title":"Room Livestreaming Stop","openapi":"POST /rooms/{room_name}/live-streaming/stop","href":"/reference/rest-api/rooms/live-streaming/stop"}]},{"group":"Transcription","pages":[{"title":"Room Transcription Start","openapi":"POST /rooms/{room_name}/transcription/start","href":"/reference/rest-api/rooms/transcription/start"},{"title":"Room Transcription Update","openapi":"POST /rooms/{room_name}/transcription/update","href":"/reference/rest-api/rooms/transcription/update"},{"title":"Room Transcription Stop","openapi":"POST /rooms/{room_name}/transcription/stop","href":"/reference/rest-api/rooms/transcription/stop"}]},{"group":"Dial Out","pages":[{"title":"Room Dial Out Start","openapi":"POST /rooms/{room_name}/dialOut/start","href":"/reference/rest-api/rooms/dial-out/start"},{"title":"Room Dial Out Send DTMF","openapi":"POST /rooms/{room_name}/dialOut/sendDTMF","href":"/reference/rest-api/rooms/dial-out/send-dtmf"},{"title":"Room Dial Out Stop","openapi":"POST /rooms/{room_name}/dialOut/stop","href":"/reference/rest-api/rooms/dial-out/stop"}]},{"group":"SIP / Call Transfer","pages":[{"title":"Room SIP Call Transfer","openapi":"POST /rooms/{room_name}/sipCallTransfer","href":"/reference/rest-api/rooms/call-transfer/sip-call-transfer"},{"title":"Room SIP Refer","openapi":"POST /rooms/{room_name}/sipRefer","href":"/reference/rest-api/rooms/call-transfer/sip-refer"}]},{"group":"Batch Rooms","pages":[{"title":"Batch Room Create","openapi":"POST /batch/rooms","href":"/reference/rest-api/batch/create-rooms"},{"title":"Batch Room Delete","openapi":"DELETE /batch/rooms","href":"/reference/rest-api/batch/delete-rooms"}]}]},{"group":"Meeting Tokens","root":{"title":"Meeting tokens - Overview","href":"/reference/rest-api/meeting-tokens/index"},"pages":[{"title":"Create Meeting Token","openapi":"POST /meeting-tokens","href":"/reference/rest-api/meeting-tokens/create-meeting-token"},{"title":"Validate Meeting Token","openapi":"GET /meeting-tokens/{meeting_token}","href":"/reference/rest-api/meeting-tokens/validate-meeting-token"}]},{"group":"Recordings","root":{"title":"Recordings - overview","href":"/reference/rest-api/recordings/index"},"pages":[{"title":"List Recordings","openapi":"GET /recordings","href":"/reference/rest-api/recordings/list-recordings"},{"title":"Get Recording Info","openapi":"GET /recordings/{recording_id}","href":"/reference/rest-api/recordings/get-recording"},{"title":"Delete Recording","openapi":"DELETE /recordings/{recording_id}","href":"/reference/rest-api/recordings/delete-recording"},{"title":"Get Recording Link","openapi":"GET /recordings/{recording_id}/access-link","href":"/reference/rest-api/recordings/get-recording-link"},{"title":"Test OCI Bucket","openapi":"GET /recordings/test-oci-bucket","href":"/reference/rest-api/recordings/test-oci-bucket"}]},{"group":"Transcripts","root":{"title":"Transcripts - overview","href":"/reference/rest-api/transcripts/index"},"pages":[{"title":"List Transcript","openapi":"GET /transcript","href":"/reference/rest-api/transcripts/list-transcripts"},{"title":"Get Transcript Info","openapi":"GET /transcript/{transcriptId}","href":"/reference/rest-api/transcripts/get-transcript"},{"title":"Delete Transcript","openapi":"DELETE /transcript/{transcriptId}","href":"/reference/rest-api/transcripts/delete-transcript"},{"title":"Get Transcript Link","openapi":"GET /transcript/{transcriptId}/access-link","href":"/reference/rest-api/transcripts/get-transcript-link"}]},{"group":"Logs","root":{"title":"Logs - overview","href":"/reference/rest-api/logs/index"},"pages":[{"title":"List Logs","openapi":"GET /logs","href":"/reference/rest-api/logs/list-logs"},{"title":"List API Logs","openapi":"GET /logs/api","href":"/reference/rest-api/logs/list-api-logs"}]},{"group":"Meetings","root":{"title":"Meetings","href":"/reference/rest-api/meetings/index"},"pages":[{"title":"Get Meeting Info","openapi":"GET /meetings","href":"/reference/rest-api/meetings/list-meetings"},{"title":"Get Individual Meeting Info","openapi":"GET /meetings/{meeting}","href":"/reference/rest-api/meetings/get-meeting"},{"title":"Get Meeting Participants","openapi":"GET /meetings/{meeting}/participants","href":"/reference/rest-api/meetings/get-participants"}]},{"group":"Presence","root":{"title":"Presence - overview","href":"/reference/rest-api/presence/index"},"pages":[{"title":"Get Presence","openapi":"GET /presence","href":"/reference/rest-api/presence/get-presence"}]},{"group":"Phone Numbers","root":{"title":"phone-numbers","href":"/reference/rest-api/phone-numbers/index"},"pages":[{"title":"List Available Numbers","openapi":"GET /list-available-numbers","href":"/reference/rest-api/phone-numbers/list-available"},{"title":"Purchased Phone Numbers","openapi":"GET /purchased-phone-numbers","href":"/reference/rest-api/phone-numbers/list-purchased"},{"title":"Buy Phone Number","openapi":"POST /buy-phone-number","href":"/reference/rest-api/phone-numbers/buy-number"},{"title":"Release Phone Number","openapi":"DELETE /release-phone-number/{id}","href":"/reference/rest-api/phone-numbers/release-number"}]},{"group":"Dial-In","root":{"title":"Dial-In","href":"/reference/rest-api/dial-in/index"},"pages":[{"title":"Pinless Call Update","openapi":"POST /dialin/pinlessCallUpdate","href":"/reference/rest-api/dial-in/pinless-update"}]},{"group":"Domain Dial-In Config","root":{"title":"Pinless_dialin and pin_dialin - overview","href":"/reference/rest-api/domainDialinConfig/index"},"pages":[{"title":"List Domain Dialin Configs","openapi":"GET /domain-dialin-config","href":"/reference/rest-api/dial-in/list-configs"},{"title":"Create Domain Dial Config Info","openapi":"POST /domain-dialin-config","href":"/reference/rest-api/dial-in/create-config"},{"title":"Get Domain Dialin Config Info","openapi":"GET /domain-dialin-config/{id}","href":"/reference/rest-api/dial-in/get-config"},{"title":"Update Domain Dial Config Info","openapi":"PUT /domain-dialin-config/{id}","href":"/reference/rest-api/dial-in/update-config"},{"title":"Delete Domain Dialin Config","openapi":"DELETE /domain-dialin-config/{id}","href":"/reference/rest-api/dial-in/delete-config"}]},{"group":"SIP Trunk","root":{"title":"SIP Trunk","href":"/reference/rest-api/sip-trunk/index"},"pages":[{"title":"Create a SIP trunk","openapi":"POST /sip-trunk","href":"/reference/rest-api/sip-trunk/create"},{"title":"List SIP trunks","openapi":"GET /sip-trunk","href":"/reference/rest-api/sip-trunk/list"},{"title":"Get a SIP trunk","openapi":"GET /sip-trunk/{id}","href":"/reference/rest-api/sip-trunk/get"},{"title":"Update a SIP trunk","openapi":"PUT /sip-trunk/{id}","href":"/reference/rest-api/sip-trunk/update"},{"title":"Delete a SIP trunk","openapi":"DELETE /sip-trunk/{id}","href":"/reference/rest-api/sip-trunk/delete"},{"title":"sip_trunk.incoming notification","href":"/reference/rest-api/sip-trunk/notification"}]},{"group":"SIP Clients","root":{"title":"SIP Clients","href":"/reference/rest-api/sip-clients/index"},"pages":[{"title":"Create a SIP client","openapi":"POST /sip-clients","href":"/reference/rest-api/sip-clients/create"},{"title":"List SIP clients","openapi":"GET /sip-clients","href":"/reference/rest-api/sip-clients/list"},{"title":"Get a SIP client","openapi":"GET /sip-clients/{username}","href":"/reference/rest-api/sip-clients/get"},{"title":"Delete a SIP client","openapi":"DELETE /sip-clients/{username}","href":"/reference/rest-api/sip-clients/delete"},{"title":"Rotate a SIP client's password","openapi":"POST /sip-clients/{username}/rotate","href":"/reference/rest-api/sip-clients/rotate"}]},{"group":"Webhooks","root":{"title":"Webhooks","href":"/reference/rest-api/webhooks/index"},"pages":[{"title":"Get Webhooks","openapi":"GET /webhooks","href":"/reference/rest-api/webhooks/list-webhooks"},{"title":"Create Webhook","openapi":"POST /webhooks","href":"/reference/rest-api/webhooks/create-webhook"},{"title":"Get Webhook Config","openapi":"GET /webhooks/{id}","href":"/reference/rest-api/webhooks/get-webhook"},{"title":"Update Webhook Config","openapi":"POST /webhooks/{id}","href":"/reference/rest-api/webhooks/update-webhook"},{"title":"Delete Webhook","openapi":"DELETE /webhooks/{id}","href":"/reference/rest-api/webhooks/delete-webhook"},{"group":"Events","root":{"title":"Webhook Events","href":"/reference/rest-api/webhooks/events/index"},"pages":[{"title":"Batch Processor Job Error","href":"/reference/rest-api/webhooks/events/batch-processor-error"},{"title":"Batch Processor Job Finished","href":"/reference/rest-api/webhooks/events/batch-processor-job-finished"},{"title":"Calltransfer Answered","href":"/reference/rest-api/webhooks/events/calltransfer-answered"},{"title":"Calltransfer Completed","href":"/reference/rest-api/webhooks/events/calltransfer-completed"},{"title":"Calltransfer Initiated","href":"/reference/rest-api/webhooks/events/calltransfer-initiated"},{"title":"Calltransfer Triggered","href":"/reference/rest-api/webhooks/events/calltransfer-triggered"},{"title":"Dial-in Connected","href":"/reference/rest-api/webhooks/events/dialin-connected"},{"title":"Dial-in error","href":"/reference/rest-api/webhooks/events/dialin-error"},{"title":"Dial-in Ready","href":"/reference/rest-api/webhooks/events/dialin-ready"},{"title":"Dial-in stopped","href":"/reference/rest-api/webhooks/events/dialin-stopped"},{"title":"Dial-in warning","href":"/reference/rest-api/webhooks/events/dialin-warning"},{"title":"Dial-out Answered","href":"/reference/rest-api/webhooks/events/dialout-answered"},{"title":"Dial-out Connected","href":"/reference/rest-api/webhooks/events/dialout-connected"},{"title":"Dial-out error","href":"/reference/rest-api/webhooks/events/dialout-error"},{"title":"Dial-out stopped","href":"/reference/rest-api/webhooks/events/dialout-stopped"},{"title":"Dial-out warning","href":"/reference/rest-api/webhooks/events/dialout-warning"},{"title":"Meeting Ended","href":"/reference/rest-api/webhooks/events/meeting-ended"},{"title":"Meeting Started","href":"/reference/rest-api/webhooks/events/meeting-started"},{"title":"Participant Joined","href":"/reference/rest-api/webhooks/events/participant-joined"},{"title":"Participant Left","href":"/reference/rest-api/webhooks/events/participant-left"},{"title":"Recording Error","href":"/reference/rest-api/webhooks/events/recording-error"},{"title":"Recording Ready to Download","href":"/reference/rest-api/webhooks/events/recording-ready-to-download"},{"title":"Recording Started","href":"/reference/rest-api/webhooks/events/recording-started"},{"title":"Streaming Ended","href":"/reference/rest-api/webhooks/events/streaming-ended"},{"title":"Streaming Error","href":"/reference/rest-api/webhooks/events/streaming-error"},{"title":"Streaming Started","href":"/reference/rest-api/webhooks/events/streaming-started"},{"title":"Streaming Updated","href":"/reference/rest-api/webhooks/events/streaming-updated"},{"title":"Streaming Warning","href":"/reference/rest-api/webhooks/events/streaming-warning"},{"title":"Transcript Error","href":"/reference/rest-api/webhooks/events/transcript-error"},{"title":"Transcript Ready to Download","href":"/reference/rest-api/webhooks/events/transcript-ready-to-download"},{"title":"Transcript Started","href":"/reference/rest-api/webhooks/events/transcript-started"},{"title":"Waiting Participant Joined","href":"/reference/rest-api/webhooks/events/waiting-participant-joined"},{"title":"Waiting Participant Left","href":"/reference/rest-api/webhooks/events/waiting-participant-left"}]}]},{"group":"Batch Processor","root":{"title":"Batch Processor API","href":"/reference/rest-api/batch-processor/index"},"pages":[{"title":"Submit job","href":"/reference/rest-api/batch-processor/reference/submit-job"},{"title":"List jobs","href":"/reference/rest-api/batch-processor/reference/list-jobs"},{"title":"Get job","href":"/reference/rest-api/batch-processor/reference/get-job"},{"title":"Access-Link","href":"/reference/rest-api/batch-processor/reference/get-job-access-link"},{"title":"Delete job","href":"/reference/rest-api/batch-processor/reference/delete-job"}]}]},{"dropdown":"Daily JS","icon":"js","pages":[{"group":"Daily Call Client","pages":[{"title":"Daily Call Client","href":"/reference/daily-js/daily-call-client"}]},{"group":"Types","pages":[{"title":"Types","href":"/reference/daily-js/types/index"},{"title":"DailyCallOptions","href":"/reference/daily-js/types/daily-call-options"},{"title":"DailyParticipant","href":"/reference/daily-js/types/daily-participant"},{"title":"DailyTrackState","href":"/reference/daily-js/types/daily-track-state"},{"title":"DailyParticipantPermissions","href":"/reference/daily-js/types/daily-participant-permissions"},{"title":"DailyStreamingOptions","href":"/reference/daily-js/types/daily-streaming-options"},{"title":"DailyStreamingLayoutConfig","href":"/reference/daily-js/types/daily-streaming-layout-config"}]},{"group":"Factory Methods","pages":[{"title":"Factory methods","href":"/reference/daily-js/factory-methods/index"},{"title":"Daily.createCallObject()","href":"/reference/daily-js/factory-methods/create-call-object"},{"title":"Daily.createFrame()","href":"/reference/daily-js/factory-methods/create-frame"},{"title":"Daily.createTransparentFrame()","href":"/reference/daily-js/factory-methods/create-transparent-frame"},{"title":"Daily.wrap()","href":"/reference/daily-js/factory-methods/wrap"}]},{"group":"Static Methods","pages":[{"title":"Static methods","href":"/reference/daily-js/static-methods/index"},{"title":"Daily.getCallInstance()","href":"/reference/daily-js/static-methods/get-call-instance"},{"title":"supportedBrowser()","href":"/reference/daily-js/static-methods/supported-browser"}]},{"group":"Instance Methods","pages":[{"title":"Instance methods","href":"/reference/daily-js/instance-methods/index"},{"title":"abortTestNetworkConnectivity()","href":"/reference/daily-js/instance-methods/abort-test-network-connectivity"},{"title":"abortTestWebsocketConnectivity()","href":"/reference/daily-js/instance-methods/abort-test-websocket-connectivity"},{"title":"accessState()","href":"/reference/daily-js/instance-methods/access-state"},{"title":"activeSpeakerMode()","href":"/reference/daily-js/instance-methods/active-speaker-mode"},{"title":"addFakeParticipant()","href":"/reference/daily-js/instance-methods/add-fake-participant"},{"title":"addLiveStreamingEndpoints()","href":"/reference/daily-js/instance-methods/add-live-streaming-endpoints"},{"title":"customIntegrations()","href":"/reference/daily-js/instance-methods/custom-integrations"},{"title":"customTrayButtons()","href":"/reference/daily-js/instance-methods/custom-tray-buttons"},{"title":"cycleCamera()","href":"/reference/daily-js/instance-methods/cycle-camera"},{"title":"cycleMic()","href":"/reference/daily-js/instance-methods/cycle-mic"},{"title":"destroy()","href":"/reference/daily-js/instance-methods/destroy"},{"title":"enumerateDevices()","href":"/reference/daily-js/instance-methods/enumerate-devices"},{"title":"exitFullscreen()","href":"/reference/daily-js/instance-methods/exit-fullscreen"},{"title":"getCpuLoadStats()","href":"/reference/daily-js/instance-methods/get-cpu-load-stats"},{"title":"getDailyLang()","href":"/reference/daily-js/instance-methods/get-daily-lang"},{"title":"getInputDevices()","href":"/reference/daily-js/instance-methods/get-input-devices"},{"title":"getInputSettings()","href":"/reference/daily-js/instance-methods/get-input-settings"},{"title":"getLocalAudioLevel()","href":"/reference/daily-js/instance-methods/get-local-audio-level"},{"title":"getMeetingSession() (Deprecated)","href":"/reference/daily-js/instance-methods/get-meeting-session"},{"title":"getNetworkStats()","href":"/reference/daily-js/instance-methods/get-network-stats"},{"title":"getNetworkTopology()","href":"/reference/daily-js/instance-methods/get-network-topology"},{"title":"getReceiveSettings()","href":"/reference/daily-js/instance-methods/get-receive-settings"},{"title":"getRemoteParticipantsAudioLevel()","href":"/reference/daily-js/instance-methods/get-remote-participants-audio-level"},{"title":"getSendSettings()","href":"/reference/daily-js/instance-methods/get-send-settings"},{"title":"getSidebarView()","href":"/reference/daily-js/instance-methods/get-sidebar-view"},{"title":"iframe()","href":"/reference/daily-js/instance-methods/iframe"},{"title":"isDestroyed()","href":"/reference/daily-js/instance-methods/is-destroyed"},{"title":"isLocalAudioLevelObserverRunning()","href":"/reference/daily-js/instance-methods/is-local-audio-level-observer-running"},{"title":"isRemoteParticipantsAudioLevelObserverRunning()","href":"/reference/daily-js/instance-methods/is-remote-participants-audio-level-observer-running"},{"title":"join()","href":"/reference/daily-js/instance-methods/join"},{"title":"leave()","href":"/reference/daily-js/instance-methods/leave"},{"title":"load()","href":"/reference/daily-js/instance-methods/load"},{"title":"localAudio()","href":"/reference/daily-js/instance-methods/local-audio"},{"title":"localScreenAudio()","href":"/reference/daily-js/instance-methods/local-screen-audio"},{"title":"localScreenVideo()","href":"/reference/daily-js/instance-methods/local-screen-video"},{"title":"localVideo()","href":"/reference/daily-js/instance-methods/local-video"},{"title":"meetingSessionState()","href":"/reference/daily-js/instance-methods/meeting-session-state"},{"title":"meetingSessionSummary()","href":"/reference/daily-js/instance-methods/meeting-session-summary"},{"title":"meetingState()","href":"/reference/daily-js/instance-methods/meeting-state"},{"title":"off()","href":"/reference/daily-js/instance-methods/off"},{"title":"on()","href":"/reference/daily-js/instance-methods/on"},{"title":"once()","href":"/reference/daily-js/instance-methods/once"},{"title":"participantCounts()","href":"/reference/daily-js/instance-methods/participant-counts"},{"title":"participants()","href":"/reference/daily-js/instance-methods/participants"},{"title":"preAuth()","href":"/reference/daily-js/instance-methods/pre-auth"},{"title":"removeLiveStreamingEndpoints()","href":"/reference/daily-js/instance-methods/remove-live-streaming-endpoints"},{"title":"requestAccess()","href":"/reference/daily-js/instance-methods/request-access"},{"title":"requestFullscreen()","href":"/reference/daily-js/instance-methods/request-fullscreen"},{"title":"room()","href":"/reference/daily-js/instance-methods/room"},{"title":"sendAppMessage()","href":"/reference/daily-js/instance-methods/send-app-message"},{"title":"sendDTMF()","href":"/reference/daily-js/instance-methods/send-dtmf"},{"title":"setActiveSpeakerMode()","href":"/reference/daily-js/instance-methods/set-active-speaker-mode"},{"title":"setBandwidth()","href":"/reference/daily-js/instance-methods/set-bandwidth"},{"title":"setCustomIntegrations()","href":"/reference/daily-js/instance-methods/set-custom-integrations"},{"title":"setDailyLang()","href":"/reference/daily-js/instance-methods/set-daily-lang"},{"title":"setIceConfig()","href":"/reference/daily-js/instance-methods/set-ice-config"},{"title":"setInputDevicesAsync()","href":"/reference/daily-js/instance-methods/set-input-devices-async"},{"title":"setLocalAudio()","href":"/reference/daily-js/instance-methods/set-local-audio"},{"title":"setLocalVideo()","href":"/reference/daily-js/instance-methods/set-local-video"},{"title":"setMeetingSessionData()","href":"/reference/daily-js/instance-methods/set-meeting-session-data"},{"title":"setNetworkTopology()","href":"/reference/daily-js/instance-methods/set-network-topology"},{"title":"setOutputDeviceAsync()","href":"/reference/daily-js/instance-methods/set-output-device-async"},{"title":"setPlayNewParticipantSound()","href":"/reference/daily-js/instance-methods/set-play-new-participant-sound"},{"title":"setProxyUrl()","href":"/reference/daily-js/instance-methods/set-proxy-url"},{"title":"setShowLocalVideo()","href":"/reference/daily-js/instance-methods/set-show-local-video"},{"title":"setShowNamesMode()","href":"/reference/daily-js/instance-methods/set-show-names-mode"},{"title":"setShowParticipantsBar()","href":"/reference/daily-js/instance-methods/set-show-participants-bar"},{"title":"setSidebarView()","href":"/reference/daily-js/instance-methods/set-sidebar-view"},{"title":"setSubscribeToTracksAutomatically()","href":"/reference/daily-js/instance-methods/set-subscribe-to-tracks-automatically"},{"title":"setTheme()","href":"/reference/daily-js/instance-methods/set-theme"},{"title":"setUserData()","href":"/reference/daily-js/instance-methods/set-user-data"},{"title":"setUserName()","href":"/reference/daily-js/instance-methods/set-user-name"},{"title":"showLocalVideo()","href":"/reference/daily-js/instance-methods/show-local-video"},{"title":"showParticipantsBar()","href":"/reference/daily-js/instance-methods/show-participants-bar"},{"title":"sipCallTransfer()","href":"/reference/daily-js/instance-methods/sip-call-transfer"},{"title":"sipRefer()","href":"/reference/daily-js/instance-methods/sip-refer"},{"title":"startCamera()","href":"/reference/daily-js/instance-methods/start-camera"},{"title":"startCustomIntegrations()","href":"/reference/daily-js/instance-methods/start-custom-integrations"},{"title":"startCustomTrack()","href":"/reference/daily-js/instance-methods/start-custom-track"},{"title":"startDialOut()","href":"/reference/daily-js/instance-methods/start-dial-out"},{"title":"startLiveStreaming()","href":"/reference/daily-js/instance-methods/start-live-streaming"},{"title":"startLocalAudioLevelObserver()","href":"/reference/daily-js/instance-methods/start-local-audio-level-observer"},{"title":"startRecording()","href":"/reference/daily-js/instance-methods/start-recording"},{"title":"startRemoteParticipantsAudioLevelObserver()","href":"/reference/daily-js/instance-methods/start-remote-participants-audio-level-observer"},{"title":"startScreenShare()","href":"/reference/daily-js/instance-methods/start-screen-share"},{"title":"startTranscription()","href":"/reference/daily-js/instance-methods/start-transcription"},{"title":"stopCustomIntegrations()","href":"/reference/daily-js/instance-methods/stop-custom-integrations"},{"title":"stopCustomTrack()","href":"/reference/daily-js/instance-methods/stop-custom-track"},{"title":"stopDialOut()","href":"/reference/daily-js/instance-methods/stop-dial-out"},{"title":"stopLiveStreaming()","href":"/reference/daily-js/instance-methods/stop-live-streaming"},{"title":"stopLocalAudioLevelObserver()","href":"/reference/daily-js/instance-methods/stop-local-audio-level-observer"},{"title":"stopRecording()","href":"/reference/daily-js/instance-methods/stop-recording"},{"title":"stopRemoteParticipantsAudioLevelObserver()","href":"/reference/daily-js/instance-methods/stop-remote-participants-audio-level-observer"},{"title":"stopScreenShare()","href":"/reference/daily-js/instance-methods/stop-screen-share"},{"title":"stopTestCallQuality()","href":"/reference/daily-js/instance-methods/stop-test-call-quality"},{"title":"stopTestConnectionQuality()","href":"/reference/daily-js/instance-methods/stop-test-connection-quality"},{"title":"stopTestPeerToPeerCallQuality()","href":"/reference/daily-js/instance-methods/stop-test-peer-to-peer-call-quality"},{"title":"stopTranscription()","href":"/reference/daily-js/instance-methods/stop-transcription"},{"title":"testCallQuality()","href":"/reference/daily-js/instance-methods/test-call-quality"},{"title":"testConnectionQuality()","href":"/reference/daily-js/instance-methods/test-connection-quality"},{"title":"testNetworkConnectivity()","href":"/reference/daily-js/instance-methods/test-network-connectivity"},{"title":"testPeerToPeerCallQuality()","href":"/reference/daily-js/instance-methods/test-peer-to-peer-call-quality"},{"title":"testWebsocketConnectivity()","href":"/reference/daily-js/instance-methods/test-websocket-connectivity"},{"title":"theme()","href":"/reference/daily-js/instance-methods/theme"},{"title":"updateCustomTrayButtons()","href":"/reference/daily-js/instance-methods/update-custom-tray-buttons"},{"title":"updateInputSettings()","href":"/reference/daily-js/instance-methods/update-input-settings"},{"title":"updateLiveStreaming()","href":"/reference/daily-js/instance-methods/update-live-streaming"},{"title":"updateParticipant()","href":"/reference/daily-js/instance-methods/update-participant"},{"title":"updateParticipants()","href":"/reference/daily-js/instance-methods/update-participants"},{"title":"updateReceiveSettings()","href":"/reference/daily-js/instance-methods/update-receive-settings"},{"title":"updateRecording()","href":"/reference/daily-js/instance-methods/update-recording"},{"title":"updateScreenShare()","href":"/reference/daily-js/instance-methods/update-screen-share"},{"title":"updateSendSettings()","href":"/reference/daily-js/instance-methods/update-send-settings"},{"title":"updateTranscription()","href":"/reference/daily-js/instance-methods/update-transcription"},{"title":"updateWaitingParticipant()","href":"/reference/daily-js/instance-methods/update-waiting-participant"},{"title":"updateWaitingParticipants()","href":"/reference/daily-js/instance-methods/update-waiting-participants"},{"title":"waitingParticipants()","href":"/reference/daily-js/instance-methods/waiting-participants"}]},{"group":"Events","pages":[{"title":"daily-js events","href":"/reference/daily-js/events/index"},{"title":"Lifecycle events","href":"/reference/daily-js/events/lifecycle-events"},{"title":"Participant events","href":"/reference/daily-js/events/participant-events"},{"title":"Media events","href":"/reference/daily-js/events/media-events"},{"title":"Network events","href":"/reference/daily-js/events/network-events"},{"title":"Settings \u0026 device events","href":"/reference/daily-js/events/settings-events"},{"title":"Messaging events","href":"/reference/daily-js/events/messaging-events"},{"title":"Recording events","href":"/reference/daily-js/events/recording-events"},{"title":"Live streaming events","href":"/reference/daily-js/events/live-streaming-events"},{"title":"Transcription events","href":"/reference/daily-js/events/transcription-events"},{"title":"Telephony events (SIP/PSTN)","href":"/reference/daily-js/events/telephony-events"},{"title":"Error events","href":"/reference/daily-js/events/error-events"},{"title":"Iframe UI events","href":"/reference/daily-js/events/iframe-ui-events"}]}]},{"dropdown":"Daily React","icon":"react","pages":[{"group":"Components","pages":[{"title":"Daily Provider","href":"/reference/daily-react/daily-provider"},{"title":"Daily Audio","href":"/reference/daily-react/daily-audio"},{"title":"Daily Audio Track","href":"/reference/daily-react/daily-audio-track"},{"title":"Daily Video","href":"/reference/daily-react/daily-video"}]},{"group":"Hooks","pages":[{"title":"useActiveParticipant","href":"/reference/daily-react/use-active-participant"},{"title":"useActiveSpeakerId","href":"/reference/daily-react/use-active-speaker-id"},{"title":"useAppMessage","href":"/reference/daily-react/use-app-message"},{"title":"useAudioLevel","href":"/reference/daily-react/use-audio-level"},{"title":"useAudioLevelObserver","href":"/reference/daily-react/use-audio-level-observer"},{"title":"useCPULoad","href":"/reference/daily-react/use-cpu-load"},{"title":"useCallFrame","href":"/reference/daily-react/use-call-frame"},{"title":"useCallObject","href":"/reference/daily-react/use-call-object"},{"title":"useDaily","href":"/reference/daily-react/use-daily"},{"title":"useDailyError","href":"/reference/daily-react/use-daily-error"},{"title":"useDailyEvent","href":"/reference/daily-react/use-daily-event"},{"title":"useDevices","href":"/reference/daily-react/use-devices"},{"title":"useDialin","href":"/reference/daily-react/use-dialin"},{"title":"useDialOut","href":"/reference/daily-react/use-dialout"},{"title":"useInputSettings","href":"/reference/daily-react/use-input-settings"},{"title":"useLiveStreaming","href":"/reference/daily-react/use-live-streaming"},{"title":"useLiveStreamingInstances","href":"/reference/daily-react/use-live-streaming-instances"},{"title":"useLocalParticipant","href":"/reference/daily-react/use-local-participant"},{"title":"useLocalSessionId","href":"/reference/daily-react/use-local-session-id"},{"title":"useMediaTrack","href":"/reference/daily-react/use-media-track"},{"title":"useMeetingSessionState","href":"/reference/daily-react/use-meeting-session-state"},{"title":"useMeetingSessionSummary","href":"/reference/daily-react/use-meeting-session-summary"},{"title":"useMeetingState","href":"/reference/daily-react/use-meeting-state"},{"title":"useNetwork","href":"/reference/daily-react/use-network"},{"title":"useParticipant","href":"/reference/daily-react/use-participant"},{"title":"useParticipantCounts","href":"/reference/daily-react/use-participant-counts"},{"title":"useParticipantIds","href":"/reference/daily-react/use-participant-ids"},{"title":"useParticipantProperty","href":"/reference/daily-react/use-participant-property"},{"title":"usePermissions","href":"/reference/daily-react/use-permissions"},{"title":"useReceiveSettings","href":"/reference/daily-react/use-receive-settings"},{"title":"useRecording","href":"/reference/daily-react/use-recording"},{"title":"useRecordingInstances","href":"/reference/daily-react/use-recording-instances"},{"title":"useRoom","href":"/reference/daily-react/use-room"},{"title":"useRoomExp","href":"/reference/daily-react/use-room-exp"},{"title":"useScreenShare","href":"/reference/daily-react/use-screen-share"},{"title":"useSendSettings","href":"/reference/daily-react/use-send-settings"},{"title":"useThrottledDailyEvent","href":"/reference/daily-react/use-throttled-daily-event"},{"title":"useTranscription","href":"/reference/daily-react/use-transcription"},{"title":"useWaitingParticipants","href":"/reference/daily-react/use-waiting-participants"}]}]},{"dropdown":"React Native","icon":"mobile","pages":[{"group":"Daily Call Client","pages":[{"title":"Daily Call Client","href":"/reference/react-native/daily-call-client"},{"title":"Daily.createCallObject()","href":"/reference/react-native/daily-call-client/create-call-object"}]},{"group":"Types","pages":[{"title":"Types","href":"/reference/react-native/types/index"},{"title":"DailyCallOptions","href":"/reference/react-native/types/daily-call-options"},{"title":"DailyParticipant","href":"/reference/react-native/types/daily-participant"},{"title":"DailyParticipantPermissions","href":"/reference/react-native/types/daily-participant-permissions"},{"title":"DailyStreamingLayoutConfig","href":"/reference/react-native/types/daily-streaming-layout-config"},{"title":"DailyStreamingOptions","href":"/reference/react-native/types/daily-streaming-options"},{"title":"DailyTrackState","href":"/reference/react-native/types/daily-track-state"}]},{"group":"Static Methods","pages":[{"title":"Static methods","href":"/reference/react-native/static-methods/index"},{"title":"Daily.getCallInstance()","href":"/reference/react-native/static-methods/get-call-instance"},{"title":"supportedBrowser()","href":"/reference/react-native/static-methods/supported-browser"}]},{"group":"Instance Methods","pages":[{"title":"Instance methods","href":"/reference/react-native/instance-methods/index"},{"title":"abortTestNetworkConnectivity()","href":"/reference/react-native/instance-methods/abort-test-network-connectivity"},{"title":"abortTestWebsocketConnectivity()","href":"/reference/react-native/instance-methods/abort-test-websocket-connectivity"},{"title":"accessState()","href":"/reference/react-native/instance-methods/access-state"},{"title":"addLiveStreamingEndpoints()","href":"/reference/react-native/instance-methods/add-live-streaming-endpoints"},{"title":"cycleCamera()","href":"/reference/react-native/instance-methods/cycle-camera"},{"title":"destroy()","href":"/reference/react-native/instance-methods/destroy"},{"title":"enumerateDevices()","href":"/reference/react-native/instance-methods/enumerate-devices"},{"title":"getCameraFacingMode()","href":"/reference/react-native/instance-methods/get-camera-facing-mode"},{"title":"getCpuLoadStats()","href":"/reference/react-native/instance-methods/get-cpu-load-stats"},{"title":"getInputDevices()","href":"/reference/react-native/instance-methods/get-input-devices"},{"title":"getLocalAudioLevel()","href":"/reference/react-native/instance-methods/get-local-audio-level"},{"title":"getNetworkStats()","href":"/reference/react-native/instance-methods/get-network-stats"},{"title":"getReceiveSettings()","href":"/reference/react-native/instance-methods/get-receive-settings"},{"title":"getRemoteParticipantsAudioLevel()","href":"/reference/react-native/instance-methods/get-remote-participants-audio-level"},{"title":"getSendSettings()","href":"/reference/react-native/instance-methods/get-send-settings"},{"title":"isDestroyed()","href":"/reference/react-native/instance-methods/is-destroyed"},{"title":"isLocalAudioLevelObserverRunning()","href":"/reference/react-native/instance-methods/is-local-audio-level-observer-running"},{"title":"isRemoteParticipantsAudioLevelObserverRunning()","href":"/reference/react-native/instance-methods/is-remote-participants-audio-level-observer-running"},{"title":"join()","href":"/reference/react-native/instance-methods/join"},{"title":"leave()","href":"/reference/react-native/instance-methods/leave"},{"title":"load()","href":"/reference/react-native/instance-methods/load"},{"title":"localAudio()","href":"/reference/react-native/instance-methods/local-audio"},{"title":"localScreenAudio()","href":"/reference/react-native/instance-methods/local-screen-audio"},{"title":"localScreenVideo()","href":"/reference/react-native/instance-methods/local-screen-video"},{"title":"localVideo()","href":"/reference/react-native/instance-methods/local-video"},{"title":"meetingSessionState()","href":"/reference/react-native/instance-methods/meeting-session-state"},{"title":"meetingSessionSummary()","href":"/reference/react-native/instance-methods/meeting-session-summary"},{"title":"meetingState()","href":"/reference/react-native/instance-methods/meeting-state"},{"title":"nativeInCallAudioMode()","href":"/reference/react-native/instance-methods/native-in-call-audio-mode"},{"title":"off()","href":"/reference/react-native/instance-methods/off"},{"title":"on()","href":"/reference/react-native/instance-methods/on"},{"title":"once()","href":"/reference/react-native/instance-methods/once"},{"title":"participantCounts()","href":"/reference/react-native/instance-methods/participant-counts"},{"title":"participants()","href":"/reference/react-native/instance-methods/participants"},{"title":"preAuth()","href":"/reference/react-native/instance-methods/pre-auth"},{"title":"removeLiveStreamingEndpoints()","href":"/reference/react-native/instance-methods/remove-live-streaming-endpoints"},{"title":"requestAccess()","href":"/reference/react-native/instance-methods/request-access"},{"title":"room()","href":"/reference/react-native/instance-methods/room"},{"title":"sendAppMessage()","href":"/reference/react-native/instance-methods/send-app-message"},{"title":"sendDTMF()","href":"/reference/react-native/instance-methods/send-dtmf"},{"title":"setAudioDevice()","href":"/reference/react-native/instance-methods/set-audio-device"},{"title":"setCamera()","href":"/reference/react-native/instance-methods/set-camera"},{"title":"setIceConfig()","href":"/reference/react-native/instance-methods/set-ice-config"},{"title":"setLocalAudio()","href":"/reference/react-native/instance-methods/set-local-audio"},{"title":"setLocalVideo()","href":"/reference/react-native/instance-methods/set-local-video"},{"title":"setMeetingSessionData()","href":"/reference/react-native/instance-methods/set-meeting-session-data"},{"title":"setNativeInCallAudioMode()","href":"/reference/react-native/instance-methods/set-native-in-call-audio-mode"},{"title":"setProxyUrl()","href":"/reference/react-native/instance-methods/set-proxy-url"},{"title":"setSubscribeToTracksAutomatically()","href":"/reference/react-native/instance-methods/set-subscribe-to-tracks-automatically"},{"title":"setUserData()","href":"/reference/react-native/instance-methods/set-user-data"},{"title":"setUserName()","href":"/reference/react-native/instance-methods/set-user-name"},{"title":"sipCallTransfer()","href":"/reference/react-native/instance-methods/sip-call-transfer"},{"title":"sipRefer()","href":"/reference/react-native/instance-methods/sip-refer"},{"title":"startCamera()","href":"/reference/react-native/instance-methods/start-camera"},{"title":"startDialOut()","href":"/reference/react-native/instance-methods/start-dial-out"},{"title":"startLiveStreaming()","href":"/reference/react-native/instance-methods/start-live-streaming"},{"title":"startLocalAudioLevelObserver()","href":"/reference/react-native/instance-methods/start-local-audio-level-observer"},{"title":"startRecording()","href":"/reference/react-native/instance-methods/start-recording"},{"title":"startRemoteParticipantsAudioLevelObserver()","href":"/reference/react-native/instance-methods/start-remote-participants-audio-level-observer"},{"title":"startScreenShare()","href":"/reference/react-native/instance-methods/start-screen-share"},{"title":"startTranscription()","href":"/reference/react-native/instance-methods/start-transcription"},{"title":"stopDialOut()","href":"/reference/react-native/instance-methods/stop-dial-out"},{"title":"stopLiveStreaming()","href":"/reference/react-native/instance-methods/stop-live-streaming"},{"title":"stopLocalAudioLevelObserver()","href":"/reference/react-native/instance-methods/stop-local-audio-level-observer"},{"title":"stopRecording()","href":"/reference/react-native/instance-methods/stop-recording"},{"title":"stopRemoteParticipantsAudioLevelObserver()","href":"/reference/react-native/instance-methods/stop-remote-participants-audio-level-observer"},{"title":"stopScreenShare()","href":"/reference/react-native/instance-methods/stop-screen-share"},{"title":"stopTestPeerToPeerCallQuality()","href":"/reference/react-native/instance-methods/stop-test-peer-to-peer-call-quality"},{"title":"stopTranscription()","href":"/reference/react-native/instance-methods/stop-transcription"},{"title":"testNetworkConnectivity()","href":"/reference/react-native/instance-methods/test-network-connectivity"},{"title":"testPeerToPeerCallQuality()","href":"/reference/react-native/instance-methods/test-peer-to-peer-call-quality"},{"title":"testWebsocketConnectivity()","href":"/reference/react-native/instance-methods/test-websocket-connectivity"},{"title":"updateLiveStreaming()","href":"/reference/react-native/instance-methods/update-live-streaming"},{"title":"updateParticipant()","href":"/reference/react-native/instance-methods/update-participant"},{"title":"updateParticipants()","href":"/reference/react-native/instance-methods/update-participants"},{"title":"updateReceiveSettings()","href":"/reference/react-native/instance-methods/update-receive-settings"},{"title":"updateRecording()","href":"/reference/react-native/instance-methods/update-recording"},{"title":"updateScreenShare()","href":"/reference/react-native/instance-methods/update-screen-share"},{"title":"updateSendSettings()","href":"/reference/react-native/instance-methods/update-send-settings"},{"title":"updateTranscription()","href":"/reference/react-native/instance-methods/update-transcription"},{"title":"updateWaitingParticipant()","href":"/reference/react-native/instance-methods/update-waiting-participant"},{"title":"updateWaitingParticipants()","href":"/reference/react-native/instance-methods/update-waiting-participants"},{"title":"waitingParticipants()","href":"/reference/react-native/instance-methods/waiting-participants"}]},{"group":"Events","pages":[{"title":"react-native-daily-js events","href":"/reference/react-native/events/index"},{"title":"Lifecycle events","href":"/reference/react-native/events/lifecycle-events"},{"title":"Participant events","href":"/reference/react-native/events/participant-events"},{"title":"Media events","href":"/reference/react-native/events/media-events"},{"title":"Network events","href":"/reference/react-native/events/network-events"},{"title":"Settings \u0026 device events","href":"/reference/react-native/events/settings-events"},{"title":"Messaging events","href":"/reference/react-native/events/messaging-events"},{"title":"Recording events","href":"/reference/react-native/events/recording-events"},{"title":"Live streaming events","href":"/reference/react-native/events/live-streaming-events"},{"title":"Transcription events","href":"/reference/react-native/events/transcription-events"},{"title":"Telephony events (SIP/PSTN)","href":"/reference/react-native/events/telephony-events"},{"title":"Error events","href":"/reference/react-native/events/error-events"}]}]},{"dropdown":"Android","icon":"android","href":"https://reference-android.daily.co/"},{"dropdown":"iOS","icon":"apple","href":"https://reference-ios.daily.co/"},{"dropdown":"Flutter","icon":"flutter","href":"https://pub.dev/packages/daily_flutter"},{"dropdown":"Python","icon":"python","href":"https://reference-python.daily.co/"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"VCS web renderer - Daily","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}