Recording

We allow recordings for all the meetings created on Dyte. This feature records the grid part of the meeting. The result of the recording is an mp4 file, encoded using H.264 codec.

To record a meeting, use the API in the following order:

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

Considerations:

  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 states

Recording can have one of these states:

NameDescription
INVOKEDRecording function is called but recording hasn't started
RECORDINGThe meeting is currently recorded
UPLOADINGThe recording is stopped and being uploaded to our servers
UPLOADEDThe recording is uploaded to our servers and ready to be downloaded
ERROREDSome issue happened during recording

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 https://api.dyte.in/v1/organizations/orgid/meetings/meetingid/recording \
  --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.

curl --request POST \
  --url https://api.dyte.in/v1/organizations/orgid/meetings/meetingid/recording \
  --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"
            }
}'

Currently, the following providers are supported:

  1. AWS S3 (Amazon Web Services)
{
    "storageConfig": {
        "type": "aws",
        "accessKey": "aws_access_key",
        "secret": "aws_secret",
        "bucket": "bucket_name",
        "region": "aws_region"
    }
}
  1. DigitalOcean Spaces (DigitalOcean)
{
    "storageConfig": {
        "type": "digitalocean",
        "accessKey": "do_spaces_key",
        "secret": "do_spaces_secret",
        "bucket": "do_space_or_bucket_name",
        "region": "do_spaces_region"
    }
}
  1. Azure
{
    "storageConfig": {
        "type": "azure",
        "accessKey": "storage_account",
        "secret": "storage_key",
        "bucket": "container_name",
        "region": "azure"
    }
}

🚧

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