> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daily.co/llms.txt
> Use this file to discover all available pages before exploring further.

# startLiveStreaming()

> Starts an RTMP or HLS live stream from a Daily call.

<Badge color="blue">Paid plans only</Badge>

`startLiveStreaming(options)`

<CreditCallout />

Starts an RTMP or HLS live stream. Requires the initiating participant to be [an owner or streaming admin](/reference/rest-api/meeting-tokens/create-meeting-token#body-properties-permissions) (a participant with `'streaming'` in their `canAdmin` permission). The number of concurrent streams is subject to your domain's `max_live_streams` limit. [Contact us](https://www.daily.co/contact/support) to configure [`max_streaming_instances_per_room`](/reference/rest-api/domain/get-domain-config#response-config-max-streaming-instances-per-room) for your domain.

## Parameters

`options: DailyLiveStreamingOptions`

Accepts all fields from [`DailyStreamingOptions`](/reference/react-native/types/daily-streaming-options) plus the following live-streaming-specific fields:

<ParamField body="rtmpUrl" type="string | string[]">
  One or more RTMP destination URLs. When multiple URLs are provided, each receives the same layout. Avoid using this field if your URL contains sensitive values (stream keys, etc.) — use `endpoints` instead.
</ParamField>

<ParamField body="endpoints" type="DailyStreamingEndpoint[]">
  Array of endpoint objects (`{ endpoint: string }`). Supports both RTMP and HLS. Only one HLS endpoint can be provided. Preferred over `rtmpUrl`.
</ParamField>

<Note>
  Provide either `rtmpUrl` or `endpoints` — not both. HLS can only be started via `endpoints`.
</Note>

See [`DailyStreamingOptions`](/reference/react-native/types/daily-streaming-options) for all shared options: output quality (`width`, `height`, `fps`, `videoBitrate`, `audioBitrate`, `backgroundColor`), session lifetime (`instanceId`, `minIdleTimeOut`, `maxDuration`), output artifacts (`dataOutputs`), and `layout`.

## Return value

Returns `void`. Listen for [`live-streaming-started`](/reference/react-native/events/live-streaming-events#live-streaming-started) to confirm the stream is active.

## Example

```javascript theme={null}
await call.startLiveStreaming({
  endpoints: [{ endpoint: 'rtmps://live.example.com/stream/YOUR_STREAM_KEY' }],
  width: 1280,
  height: 720,
  fps: 25,
  videoBitrate: 2500,
  layout: {
    preset: 'default',
    max_cam_streams: 5,
  },
});
```

## See also

<CardGroup>
  <Card title="Types" icon="t" iconType="solid">
    * [DailyStreamingOptions](/reference/react-native/types/daily-streaming-options)
    * [DailyStreamingLayoutConfig](/reference/react-native/types/daily-streaming-layout-config)
  </Card>

  <Card title="Methods" icon="code" iconType="solid">
    * [updateLiveStreaming()](/reference/react-native/instance-methods/update-live-streaming)
    * [stopLiveStreaming()](/reference/react-native/instance-methods/stop-live-streaming)
    * [addLiveStreamingEndpoints()](/reference/react-native/instance-methods/add-live-streaming-endpoints)
    * [removeLiveStreamingEndpoints()](/reference/react-native/instance-methods/remove-live-streaming-endpoints)
  </Card>

  <Card title="Events" icon="bolt" iconType="solid">
    * [Live streaming events](/reference/react-native/events/live-streaming-events)
  </Card>

  <Card title="Guides" icon="book-open" iconType="solid">
    * [Live streaming](/docs/daily-js/features/live-streaming)
  </Card>

  <Card title="REST API" icon="server" iconType="solid">
    * [Update room: streaming\_endpoints](/reference/rest-api/rooms/update-room#body-properties-streaming-endpoints)
    * [Start live streaming](/reference/rest-api/rooms/live-streaming/start)
    * [streaming-started webhook](/reference/rest-api/webhooks/events/streaming-started)
  </Card>
</CardGroup>
