Skip to main content
Version: 2.0.x

Record Meeting - iOS

VideoSDK allows you to record video & audio during the meeting. The recording files are available in developer dashboard or you can also choose to store them in your own cloud storage.

VideoSDK also allows you to configure the recording layouts in numerous ways like by simply setting different prebuilt layouts in the configuration or by providing your own custom template to do the recording according to your layout choice.

This guide will provide an overview of how to implement start and stop Meeting Recording.


To initiate automatic recording at the beginning of a session, simply provide the autoStartConfig feature recording during room creation. For more information on configuring the autoStartConfig, please refer to the provided documentation here.


startRecording() can be used to start a recording of the meeting which can be accessed from the Meeting class. This method accepts three parameters:

  • 1. webhookUrl: This would the webhook URL where you would like to listen to event happening for the recording like starting and stopping of recording. It will be triggered when the recording is completed and stored into server. Read more about webhooks here

  • 2. awsDirPath: This parameter accepts the path for the your S3 bucket where you want to store recordings to. To allow us to store recording in your S3 bucket, you will need to fill this form by providing the required values. (VideoSDK Cloud (AWS S3, Azure Blob or GCP ) Integration)

  • 3. config: This parameter will define how the meeting should be recorded.

  • 4. transcription(optional): This parameter will be used to enable post transcription for the recording with the given config.


If you don't have a value for webhookUrl,awsDirPath or config, you should pass null in place of the missing value. If you pass null in awsDirPath parameter then by default recordings will be store on the VideoSDK's storage.

class MeetingViewController {
// button to start recording the meeting
@IBAction func recordMeetingButtonTapped(_ sender: Any) {

let transcription: PostTranscriptionConfig = PostTranscriptionConfig(
enabled: true,
summary: SummaryConfig(
enabled: true,
prompt: "Write summary in sections like Title, Agenda, Speakers, Action Items, Outlines, Notes and Summary"
self.meeting?.startRecording(webhookUrl: "<your webhook-url>",
awsDirPath: "<your awsDirPath>",
config: RecordingConfig(layout: ConfigLayout(type: .GRIDpriority: .SPEAKER, gridSize: 4),
theme: .DARK, mode: .video_and_audio,
quality: .high,
orientation: .portrait),
transcription: transcription)


  • stopRecording() is used to stop the meeting recording which can be accessed from the Meeting class.


class MeetingViewController {
// button to stop recording the meeting
@IBAction func stopRecordingButtonTapped(_ sender: Any) {

Event associated with Recording

  • onRecordingStateChanged - Whenever meeting recording state changes, then onRecordingStateChanged event will trigger.
extension MeetingViewController: MeetingEventListener {
//recording event
func onRecordingStateChanged(state: RecordingState) {
switch(state) {
print("recording starting")

print("recording started")

print("recording stopping")

print("recording stopped")

API Reference

The API references for all the methods utilised in this guide are provided below.

Got a Question? Ask us on discord