> ## 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.

# startRecording()

> Starts a recording of a Daily call.

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

`startRecording(options?)`

<CreditCallout />

If server-side recording (`cloud`) is enabled for the room, starts a recording of all meeting participants that have their cams and/or mics on. Devices that are off are not recorded. Requires recording to be enabled for the room.

Multiple recording sessions can run concurrently (up to [`max_streaming_instances_per_room`](/reference/rest-api/domain/get-domain-config#response-config-max-streaming-instances-per-room) on your domain) if each is started with a unique `instanceId`.

## Parameters

`options?: DailyStreamingOptions`

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

The `type` field is recording-specific:

<ParamField body="type" type="'cloud' | 'cloud-audio-only' | 'raw-tracks'" default="'cloud'">
  Recording type:

  * `'cloud'` — cloud recording with video composition (default)
  * `'cloud-audio-only'` — cloud recording, audio only; no video composition charges
  * `'raw-tracks'` — individual uncomposed audio/video tracks per participant
</ParamField>

## Return value

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

## Examples

```javascript theme={null}
// Start a cloud recording at 720p
await call.startRecording({
  width: 1280,
  height: 720,
  fps: 25,
  layout: {
    preset: 'default',
    max_cam_streams: 5,
  },
});
```

### Audio-only recording

<Note>
  If you know ahead of time that video is not needed, use `cloud-audio-only` to avoid video composition charges. You can also set the recording type at the room level so that `startRecording()` requires no arguments.
</Note>

```javascript theme={null}
await call.startRecording({
  type: 'cloud-audio-only',
});
```

You can also use the `audio-only` layout preset with a standard cloud recording to select specific participants' audio:

```javascript theme={null}
await call.startRecording({
  layout: {
    preset: 'audio-only',
    participants: {
      audio: ['user-id-of-participant-1', 'user-id-of-participant-2'],
    },
  },
});
```

### Raw tracks (audio only)

```javascript theme={null}
await call.startRecording({
  layout: {
    preset: 'raw-tracks-audio-only',
  },
});
```

### Custom layout with VCS baseline composition

```javascript theme={null}
await call.startRecording({
  layout: {
    preset: 'custom',
    composition_id: 'daily:baseline',
    composition_params: {
      mode: 'dominant',
      'videoSettings.preferScreenshare': true,
    },
    session_assets: {
      'images/logo': 'https://example.com/logo.png',
    },
  },
});
```

See [`DailyStreamingLayoutConfig`](/reference/react-native/types/daily-streaming-layout-config) for all layout presets and the full VCS baseline composition parameter reference.

## 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">
    * [updateRecording()](/reference/react-native/instance-methods/update-recording)
    * [stopRecording()](/reference/react-native/instance-methods/stop-recording)
    * [startLiveStreaming()](/reference/react-native/instance-methods/start-live-streaming)
  </Card>

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

  <Card title="Guides" icon="book-open" iconType="solid">
    * [Recording](/docs/guides/features/recording)
  </Card>

  <Card title="REST API" icon="server" iconType="solid">
    * [Create room: enable\_recording](/reference/rest-api/rooms/create-room#body-properties-enable-recording)
    * [Start recording](/reference/rest-api/rooms/recordings/start)
    * [recording-started webhook](/reference/rest-api/webhooks/events/recording-started)
  </Card>
</CardGroup>
