---
title: "Start recording a meeting"
method: POST
path: "/recordings"
tags: ["Recordings"]
---

# Start recording a meeting

`POST /recordings`

Starts recording a meeting. The meeting can be started by an organization admin directly, or a participant with permissions to start a recording, based on the type of authorization used.

## Request body

- object
  - `meeting_id` string, uuid, required — ID of the meeting to record.
  - `max_seconds` integer — Specifies the maximum duration for recording in seconds, ranging from a minimum of 60 seconds to a maximum of 24 hours.
  - `storage_config` StorageConfig, nullable
    - `type` 'aws' | 'azure' | 'digitalocean' | 'gcs' | 'sftp', required — Type of storage media.
    - `access_key` string — Access key of the storage medium. Access key is not required for the `gcs` storage media type. Note that this field is not readable by clients, only writeable.
    - `secret` string — Secret key of the storage medium. Similar to `access_key`, it is only writeable by clients, not readable.
    - `bucket` string — Name of the storage medium's bucket.
    - `region` string — Region of the storage medium.
    - `path` string — Path relative to the bucket root at which the recording will be placed.
    - `auth_method` 'KEY' | 'PASSWORD' — Authentication method used for "sftp" type storage medium
    - `username` string — SSH destination server username for SFTP type storage medium
    - `password` string — SSH destination server password for SFTP type storage medium when auth_method is "PASSWORD". If auth_method is "KEY", this specifies the password for the ssh private key.
    - `host` string — SSH destination server host for SFTP type storage medium
    - `port` number — SSH destination server port for SFTP type storage medium
    - `private_key` string — Private key used to login to destination SSH server for SFTP type storage medium, when auth_method used is "KEY"
  - `video_config` VideoConfig
    - `codec` 'H264' | 'VP8' — Codec using which the recording will be encoded.
    - `width` integer — Width of the recording video in pixels
    - `height` integer — Height of the recording video in pixels
    - `watermark` object — Watermark to be added to the recording
      - `url` string, uri — URL of the watermark image
      - `size` object — Size of the watermark
        - `width` integer — Width of the watermark in px
        - `height` integer — Height of the watermark in px
      - `position` 'left top' | 'right top' | 'left bottom' | 'right bottom' — Position of the watermark
    - `export_file` boolean — Controls whether to export video file seperately
  - `audio_config` AudioConfig — Object containing configuration regarding the audio that is being recorded.
    - `codec` 'MP3' | 'AAC' — Codec using which the recording will be encoded. If VP8/VP9 is selected for videoConfig, changing audioConfig is not allowed. In this case, the codec in the audioConfig is automatically set to vorbis.
    - `channel` 'mono' | 'stereo' — Audio signal pathway within an audio file that carries a specific sound source.
    - `export_file` boolean — Controls whether to export audio file seperately
  - `rtmp_out_config` LivestreamingConfig
    - `rtmp_url` string, uri — RTMP URL to stream to
  - `file_name_prefix` string — Update the recording file name.
  - `url` string, uri — Pass a custom url to record arbitary screen
  - `dyte_bucket_config` DyteBucketConfig
    - `enabled` boolean, required — Controls whether recordings are uploaded to Dyte's bucket. If set to false, `download_url`, `audio_download_url`, `download_url_expiry` won't be generated for a recording.
  - `interactive_config` InteractiveConfig — Allows you to add timed metadata to your recordings, which are digital markers inserted into a video file to provide contextual information at specific points in the content range. The ID3 tags containing this information are available to clients on the playback timeline in HLS format. The output files are generated in a compressed .tar format.
    - `type` 'ID3' — The metadata is presented in the form of ID3 tags.
  - `allow_multiple_recordings` boolean — By default, a meeting allows only one recording to run at a time. Enabling the `allow_multiple_recordings` parameter to true allows you to initiate multiple recordings concurrently in the same meeting. This allows you to record separate videos of the same meeting with different configurations, such as portrait mode or landscape mode.

## Response `200`

Success response

- object
  - `success` boolean, required — Success status of the operation
  - `data` object — Data returned by the operation
    - `id` string, uuid, required — ID of the recording
    - `download_url` string, uri, nullable, required — URL where the recording can be downloaded.
    - `download_url_expiry` string, date-time, nullable, required — Timestamp when the download URL expires.
    - `audio_download_url` string, uri, nullable, required — If the audio_config is passed, the URL for downloading the audio recording is returned.
    - `file_size` number, nullable, required — File size of the recording, in bytes.
    - `session_id` string, uuid, nullable, required — ID of the meeting session this recording is for.
    - `output_file_name` string, required — File name of the recording.
    - `status` 'INVOKED' | 'RECORDING' | 'UPLOADING' | 'UPLOADED' | 'ERRORED' | 'PAUSED', required — Current status of the recording.
    - `invoked_time` string, date-time, required — Timestamp when this recording was invoked.
    - `started_time` string, date-time, nullable, required — Timestamp when this recording actually started after being invoked. Usually a few seconds after `invoked_time`.
    - `stopped_time` string, date-time, nullable, required — Timestamp when this recording was stopped. Optional; is present only when the recording has actually been stopped.
    - `recording_duration` integer — Total recording time in seconds.
    - `storage_config` StorageConfig, nullable
      - `type` 'aws' | 'azure' | 'digitalocean' | 'gcs' | 'sftp', required — Type of storage media.
      - `access_key` string — Access key of the storage medium. Access key is not required for the `gcs` storage media type. Note that this field is not readable by clients, only writeable.
      - `secret` string — Secret key of the storage medium. Similar to `access_key`, it is only writeable by clients, not readable.
      - `bucket` string — Name of the storage medium's bucket.
      - `region` string — Region of the storage medium.
      - `path` string — Path relative to the bucket root at which the recording will be placed.
      - `auth_method` 'KEY' | 'PASSWORD' — Authentication method used for "sftp" type storage medium
      - `username` string — SSH destination server username for SFTP type storage medium
      - `password` string — SSH destination server password for SFTP type storage medium when auth_method is "PASSWORD". If auth_method is "KEY", this specifies the password for the ssh private key.
      - `host` string — SSH destination server host for SFTP type storage medium
      - `port` number — SSH destination server port for SFTP type storage medium
      - `private_key` string — Private key used to login to destination SSH server for SFTP type storage medium, when auth_method used is "KEY"
    - `start_reason` StartReason
      - `reason` 'API_CALL' | 'RECORD_ON_START' — Specifies if the recording was started using the "Start a Recording"API or using the parameter RECORD_ON_START in the "Create a meeting" API. If the recording is initiated using the "RECORD_ON_START" parameter, the user details will not be populated.
      - `caller` object
        - `type` 'ORGANIZATION' | 'USER' — The type can be an organization or a user. If the type is `user`, then only the `user_Id` and `name` are returned.
        - `user_Id` string, uuid — The user ID of the person who started the recording.
        - `name` string — Name of the user who started the recording.
    - `stop_reason` StopReason
      - `reason` 'API_CALL' | 'INTERNAL_ERROR' | 'ALL_PEERS_LEFT' — Specifies the reason why the recording stopped.
      - `caller` object
        - `type` 'ORGANIZATION' | 'USER' — The type can be an organization or a user. If the type is `user`, then only the `user_Id` and `name` are returned.
        - `user_Id` string, uuid — The user ID of the person who stopped the recording.
        - `name` string — Name of the user who stopped the recording.

---

[API](https://skmtc.net/dyte-io/apis/dyte-rest-apis.md) · [All operations](https://skmtc.net/dyte-io/apis/dyte-rest-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/dyte-io/dyte-rest-apis/versions/f62d3edd92ae/schema)
