Skip to main content

Recording your meetings via Dyte

We allows recordings for all Dyte meetings. This feature records the grid part of the meeting. The result of the recording is an mp4 file, encoded using H.264 codec (this can be changed).

Usually to record a meeting, the flow of APIs is like below:

  1. Start a recording by using the POST endpoint.
  2. Poll the GET endpoint to check the status of recording.
  3. Stop the recording by using the PUT endpoint.
  4. Use the GET endpoint again to get a pre-signed URL for downloading the recording.

You can also use webhooks as described here to subscribe to meeting status update events instead of polling.

Recording states#

Recording can have one of these states, which are also notified through webhooks:

INVOKEDThe recording function has been invoked and will start recording the meeting very shortly.
RECORDINGThe meeting is currently being recorded.
UPLOADINGThe recording has been stopped and the file is being uploaded to cloud storage. The storage would be Dyte's if no storage parameters are passed in the recording API call.
UPLOADEDThe recording file upload is complete.
ERROREDThere was an error while recording the meeting and the file wouldn't be available.

Considerations for a recording#

  1. Recording will stop if there is no participant in the meeting for 120 seconds (2 minutes).
  2. There can only be one active recording of a meeting.
  3. Currently, there is a lag of a maximum of 30 seconds between calling the API and the actual start of recording. We are working on reducing this lag.
  4. Average size for one hour of recording is approximately 300MB.
  5. Maximum recording time is 24 hours. Recording will automatically stop after the expiry of that period from the time of recording start.

Recording settings#

You can modify the codec which is used for recording the videos. We currently support three codecs

  1. H264 (default): sample recording
  2. VP8: sample recording
  3. VP9: sample recording

You can change the codec by specifying the codec in videoConfig when you are creating a recording.

curl --request POST \  --url \  --header 'Authorization: APIKEY yourapi-key' \  --header 'Content-Type: application/json' \  --data '{    "videoConfig": {        "codec": "VP8"    }}'

Publishing a recording to your cloud provider#

You can pass an optional object storageConfig in the start recording request and we will publish the recording directly to your cloud provider once it stops. If a path is specified, the recorded video will be stored there, otherwise the default is the root of the directory. The filename for recording will be the same as given in outputFileName in the start recording response.

Limited access keys

Please make sure that the cloud keys you provide to Dyte APIs have only limited access.

curl --request POST \  --url \  --header 'Authorization: APIKEY your-api-key' \  --header 'Content-Type: application/json' \  --data '{        "storageConfig": {                "type": "aws",                "accessKey": "aws_access_key",                "secret": "aws_secret",                "bucket": "bucket_name",                "region": "aws_region"            }}'

The currently supported providers are listed below and their relevant parameters are described alongside.

AWS S3 (Amazon Web Services)#

{  "storageConfig": {    "type": "aws",    "accessKey": "aws_access_key",    "secret": "aws_secret",    "bucket": "bucket_name",    "region": "aws_region"  }}

DigitalOcean Spaces (DigitalOcean)#

{  "storageConfig": {    "type": "digitalocean",    "accessKey": "do_spaces_key",    "secret": "do_spaces_secret",    "bucket": "do_space_or_bucket_name",    "region": "do_spaces_region"  }}


{  "storageConfig": {    "type": "azure",    "accessKey": "storage_account",    "secret": "storage_key",    "bucket": "container_name",    "region": "azure"  }}

As always, you can view the complete API reference to see all available options for a recording.