POST
/rooms/:name/live-streaming/start

Beta feature

Receive a $15 credit for free

Try Daily pay-as-you-go features for free! New accounts have a $15 credit automatically applied when you add a credit card to the account. Learn more about pay-as-you-go features on our pricing page.

Starts a live stream at the rtmpUrl specified.

Multiple RTMP URLs can be passed using the endpoints property, which accepts an array of RTMP URLs. (See addLiveStreamingEndpoints() for a code example using this property.)

Cannot accept both rtmpURL and endpoints at the same time. Use endpoints when you want to start both RTMP and HLS.

Multiple streaming sessions (up to max_streaming_instances_per_room on your Daily domain) can be started by specifying a unique instanceId. Each instance can have a different layout, participants, lifetime, and update rules.

Contact us to configure max_streaming_instances_per_room for your domain. Note: recording and streaming instances that share the same instanceId also share the same underlying composition process, so any layout change made to streaming will also affect recording, and vice-versa.

If you would like to use both RTMP and HLS, we recommend that you define streaming_endpoints for both types of endpoints.

Note: The outgoing RTMP stream has the following properties:

  • Resolution: 1920 x 1080
  • Frame rate: 30fps
  • Keyframe: every 2 seconds (60 frames)
  • Target bitrate: 5Mbps

Path params

string

The name of the room.

Body params

number

Property that specifies the output width of the given stream.

number

Property that specifies the output height of the given stream.

number

Property that specifies the video frame rate per second.

Property that specifies the video bitrate for the output video in kilobits per second (kbps).

Property that specifies the audio bitrate for the output audio in kilobits per second (kbps).

Amount of time in seconds to wait before ending a recording or live stream when the room is idle (e.g. when all users have muted video and audio). Default: 300 (seconds). Note: Once the timeout has been reached, it typically takes an additional 1-3 minutes for the recording or live stream to be shut down.

Maximum duration in seconds after which recording/streaming is forcefully stopped. Default: `15000` seconds (3 hours). This is a preventive circuit breaker to prevent billing surprises in case a user starts recording/streaming and leaves the room.

Specifies the background color of the stream, formatted as #rrggbb or #aarrggbb string.

UUID for a streaming or recording session. Used when multiple streaming or recording sessions are running for single room.

object

An object specifying the way participants’ videos are laid out in the live stream. See given layout configs for description of fields. Preset must be defined.

Default Layout

string
Options: "default"

Single Participant Layout

string
Options: "single-participant"

Active Participant Layout

string
Options: "active-participant"

Portrait Layout

string
Options: "portrait"
string
Options: "vertical","inset"

Custom Layout

string
Options: "custom"
string | array

Custom video layouts with VCS baseline composition

Daily offers a "baseline" composition option via the "custom" layout preset for customizing your video layouts while live streaming. This option allows for even more flexibility while using Daily's live streaming API.

Review our Video Component System (VCS) guide or VCS Simulator for additional information and code examples.

Many VCS properties use a "grid unit". The grid unit is a designer-friendly, device-independent unit. The default grid size is 1/36 of the output's minimum dimension. In other words, 1gu = 20px on a 720p stream and 30px on a 1080p stream. Learn more about grid units in our [VCS SDK docs](/reference/vcs/layout-api#the-grid-unit).

composition_params

string

Sets the layout mode. Valid options:

  • single: Show a single full-screen video.
  • split: Show the first two participants side-by-side.
  • grid: Show up to 20 videos in a grid layout.
  • dominant: Show the active speaker in a large pane on the left, with additional video thumbnails on the right.
  • pip: Show the active speaker in a full-screen view, with the first participant inlaid in a corner.
Default: grid

Sets whether a text overlay is displayed. You can configure the contents of the overlay with the text.* properties.

Default: false

Sets whether an image overlay is displayed. You can configure the display of the overlay with the image.* properties. The image used must be passed in the session_id layout option when the stream or recording is started.

Default: false

Sets whether a title screen (a "slate") is displayed. You can configure the display of the slate with the titleSlate.* properties.

Default: false

Sets whether a title screen (a "slate") is automatically shown at the start of the stream. You can configure the display of this automatic slate with the openingSlate. properties.

Default: false

Limits the number of non-screenshare streams that are included in the output.

Default: 25

When enabled, screen share inputs will be sorted before camera inputs. This is useful when prioritizing screen shares in your layout, especially when all inputs are not included in the final stream. For more information about how participants and videos are sorted, see the section on selecting participants.

Default: false

When enabled, paused video inputs will not be included. By default this is off, and paused inputs are displayed with a placeholder graphic. ("Paused video" means that the video track for a participant is not available, either due to user action or network conditions.)

Default: false

Sets whether call participants' names are displayed on their video tiles.

Default: false

Sets whether to display video tiles with squared or rounded corners. Note that some modes (dominant and pip) have additional params to control whether the main video has rounded corners or not.

Default: false

Sets the corner radius applied to video layers when videoSettings.roundedCorners is enabled, in grid units.

Default: 1.2

Controls how source video is displayed inside a tile if they have different aspect ratios. Use fill to crop the video to fill the entire tile. Use fit to make sure the entire video fits inside the tile, adding letterboxes or pillarboxes as necessary.

Default: fill

Sets the background color for video placeholder tile. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgb(0, 50, 80)

Sets the visual margin between the two video layers shown in split mode, in grid units.

Default: 0

When enabled, the layout will automatically switch to dominant mode from grid if a screenshare video input is available. By using this automatic behavior, you avoid having to manually switch the mode via an API call.

Default: false

Overrides the visual margin between items in grid mode, in grid units. The default value of -1 means that the layout algorithm selects a reasonable margin automatically depending on the number of videos.

Default: -1

Overrides the outer padding around items in grid mode, in grid units. The default value of -1 means that the layout algorithm selects a reasonable padding automatically depending on the number of videos.

Default: -1

By default, the grid mode will highlight the dominant video (typically the "active speaker") with a light outline. You can disable the highlight using this setting.

Default: true

Control where the dominant (or "active speaker") video is displayed in the dominant layout mode. Values are left, right, top or bottom.

Default: left

Sets the position of the imaginary line separating the dominant video from the smaller tiles when using the dominant layout. Values are from 0 to 1. The default is 0.8, so if videoSettings.dominant.position is set to left, the dominant video will take 80% of the width of the screen on the left.

Default: 0.8

Controls how many "chiclets", or smaller video tiles, appear alongside the dominant video when using the dominant layout.

Default: 5

When in dominant mode, the large tile displays the active speaker by default. Turn off this followDomFlag to display the first participant instead of the active speaker.

Default: true

Margin between the “chiclet” items, in grid units.

Default: 0.7

Padding around the row/column of “chiclet” items, in grid units.

Default: 0.5

Margin between the "dominant" video and the row/column of "chiclet" items, in grid units.

Default: 0

Sets whether the "dominant" video will be rendered with rounded corners when videoSettings.roundedCorners is enabled. Defaults to false because sharp corners are a more natural choice for the default configuration where the dominant video is tightly aligned to viewport edges.

Default: true

Sets the position of the smaller video in the pip (picture-in-picture) layout. Valid options: top-left, top-right, bottom-left, bottom-right.

Default: top-right

Sets the aspect ratio of the smaller video in the pip layout. The default is 1.0, which produces a square video.

Default: 1

Sets the height of the smaller video in the pip layout, measured in grid units.

Default: 12

Sets the margin between the smaller video and the edge of the frame in the pip layout, in grid units.

Default: 1.5

When in "pip" (or picture-in-picture) mode, the overlay tile displays the first participant in the participant array by default. Turn on this followDomFlag to display the active speaker instead.

Default: false

Sets whether the main video in pip mode will be rendered with rounded corners when videoSettings.roundedCorners is enabled. Defaults to false because sharp corners are a more natural choice for the default configuration where the main video is full-screen (no margin to viewport edges).

Default: true

Sets the participant label style option: font family. Valid options: Roboto, RobotoCondensed, Bitter, Exo, Magra, SuezOne, Teko

Default: Roboto

Sets the participant label text font weight. Valid options: 100, 200, 300, 400, 500, 600, 700, 800, 900.

Note: Not all font weights are valid for every font family.

Default: 600

Sets the participant label text font size.

Default: 100

Sets the offset value for participant labels on the x-axis, measured in grid units.

Default: 0

Sets the offset value for participant labels on the y-axis, measured in grid units.

Default: 0

Sets the participant label font color. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: white

Sets the label font stroke color (the line outlining the text letters). Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(0, 0, 0, 0.9)

Sets the left margin value applied to videos (in any layout mode), in grid units. You can use these videoSettings.margin.* params to shrink the video area, for example to make room for overlays.

Default: 0

Sets the right margin value applied to videos (in any layout mode), in grid units. You can use these videoSettings.margin.* params to shrink the video area, for example to make room for overlays.

Default: 0

Sets the top margin value applied to videos (in any layout mode), in grid units. You can use these videoSettings.margin.* params to shrink the video area, for example to make room for overlays.

Default: 0

Sets the bottom margin value applied to videos (in any layout mode), in grid units. You can use these videoSettings.margin.* params to shrink the video area, for example to make room for overlays.

Default: 0

Sets the string to be displayed if showTextOverlay is true.

Default:

Sets the horizontal alignment of the text overlay within the video frame. Values are left, right, or center.

Default: center

Sets the vertical alignment of the text overlay within the video frame. Values are top, bottom, or center.

Default: center

Sets an x-offset (horizontal) to be applied to the text overlay's position based on the values of text.align_horizontal and text.align_vertical.

Default: 0

Sets a y-offset (vertical) to be applied to the text overlay's position based on the values of text.align_horizontal and text.align_vertical.

Default: 0

Applies a rotation to the text overlay. Units are degrees, and positive is a clockwise rotation.

Default: 0

Sets the font of the text overlay. Valid options: Roboto, RobotoCondensed, Anton, Bangers, Bitter, Exo, Magra, PermanentMarker, SuezOne, Teko

Default: Roboto

Selects a weight variant from the selected font family. Valid options: 100, 200, 300, 400, 500, 600, 700, 800, 900.

Note: Not all font weights are valid for every font family.

Default: 500

Sets the font style for text. Valid options: 'normal','italic'.

Default:

Sets the text overlay font size using grid units (gu). By default, one grid unit is 1/36 of the smaller dimension of the viewport (e.g. 20px in a 1280*720 stream).

Default: 2.5

Sets the color and transparency of the text overlay. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(255, 250, 200, 0.95)

Sets the color of the stroke drawn around the characters in the text overlay. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(0, 0, 0, 0.8)

Sets the overlay image. Icon asset must be included in session_assets object. showImageOverlay must be true.

Default: overlay.png

Sets position of overlay image. Valid options: top-left, top-right, bottom-left, bottom-right

Default: top-right

Sets overlay image to full screen.

Default: false

Sets aspect ratio of overlay image.

Default: 1.778

Sets height of overlay image, in grid units.

Default: 12

Sets margin between the overlay image and the viewport edge, in grid units.

Default: 1.5

Sets opacity of overlay image, in range 0-1. Default value of 1 is full opacity.

Default: 1

Sets the overlay image to fade in or out when the showImageOverlay property is updated.

Default: true
number

Triggers display of toast component. To send a toast, increment the value of key

Default: 0

Sets text displayed in toast component.

Default: Hello world

Sets duration of time toast component is displayed (in seconds).

Default: 4

Sets number of lines text in toast component is displayed on.

Default: 2

Sets whether icon is displayed in toast component (true or false).

Default: true

Sets asset value for toast icon. Icon asset must be included in session_assets object.

Default:

Sets the toast component's background color. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(15, 50, 110, 0.6)

Sets the color of the stroke drawn around the text characters in the toast component. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(0, 0, 30, 0.44)

Sets the toast component's text color. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: white

Sets the toast component's font family. Valid options: Roboto, RobotoCondensed, Bitter, Exo, Magra, SuezOne, Teko

Default: Roboto

Sets the font weight for the toast component's text. Valid options: 100, 200, 300, 400, 500, 600, 700, 800, 900.

Note: Not all font weights are valid for every font family.

Default: 500

Sets the font size for the toast component's text.

Default: 100

Sets the number of seconds that the opening slate will be displayed when the stream starts. After this time, the slate goes away with a fade-out effect.

Default: 4

Sets text displayed in the main title of the opening slate.

Default: Welcome

Sets text displayed in the subtitle (second line) of the opening slate.

Default:

Sets an image to be used as the background for the slate. This image asset must be included in session_assets object when starting the stream/recording.

Default:

Sets the slate's background color. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(0, 0, 0, 1)

Sets the text color of the titles in the slate. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(255, 255, 255, 1)

Sets the font of the titles in the slate. Valid options: Roboto, RobotoCondensed, Anton, Bangers, Bitter, Exo, Magra, PermanentMarker, SuezOne, Teko

Default: Bitter

Selects a weight variant from the selected font family. Valid options: 100, 200, 300, 400, 500, 600, 700, 800, 900.

Note: Not all font weights are valid for every font family.

Default: 500

Sets the font style for the titles in the slate. Valid options: 'normal','italic'.

Default:

Sets the main title font size using grid units (gu). By default, one grid unit is 1/36 of the smaller dimension of the viewport (e.g. 20px in a 1280*720 stream).

Default: 2.5

Sets the subtitle font size as a percentage of the main title.

Default: 75

Selects a weight variant from the selected font family specifically for the subtitle. Valid options: 100, 200, 300, 400, 500, 600, 700, 800, 900.

Note: Not all font weights are valid for every font family.

Default: 400

Sets text displayed in the main title of the slate.

Default: Title slate

Sets text displayed in the subtitle (second line) of the slate.

Default: Subtitle

Sets an image to be used as the background for the slate. This image asset must be included in session_assets object when starting the stream/recording.

Default:

Sets the slate's background color. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(0, 0, 0, 1)

Sets the text color of the titles in the slate. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(255, 255, 255, 1)

Sets the font of the titles in the slate. Valid options: Roboto, RobotoCondensed, Anton, Bangers, Bitter, Exo, Magra, PermanentMarker, SuezOne, Teko

Default: Bitter

Selects a weight variant from the selected font family. Valid options: 100, 200, 300, 400, 500, 600, 700, 800, 900.

Note: Not all font weights are valid for every font family.

Default: 500

Sets the font style for the titles in the slate. Valid options: 'normal','italic'.

Default:

Sets the main title font size using grid units (gu). By default, one grid unit is 1/36 of the smaller dimension of the viewport (e.g. 20px in a 1280*720 stream).

Default: 2.5

Sets the subtitle font size as a percentage of the main title.

Default: 75

Selects a weight variant from the selected font family specifically for the subtitle. Valid options: 100, 200, 300, 400, 500, 600, 700, 800, 900.

Note: Not all font weights are valid for every font family.

Default: 400

Example requests