Storage Configuration

100ms can upload your recordings to your preferred cloud storage location. We support the following providers:

  • Amazon Simple Storage Service (AWS S3)
  • Google Cloud Storage (GCP)
  • Alibaba Object Storage (OSS)

By default, recordings will be stored temporarily (for 15 days) in a storage location managed by 100ms if nothing is configured. Post a successful recording, the recording assets can be accessed on the 100ms dashboard or through the REST API.

Configure recording storage

You can configure storage in your template's Recording tab on the 100ms Dashboard. As an example, this is how you would configure a GCP location:

  1. Generate your credentials; for this example, you can check out a guide from AWS. Skip this step if you already have credentials.


    If you are using Room Composite recording, you need to give upload permission to your key, but if you are using the SFU legacy recording, you need to give both upload and download permissions.

  2. Go to 100ms Dashboard and go to template configuration by selecting 'Configure' under Templates. The below image shows two options to access template configuration.

configure template

  1. Head over to the Recording tab.

  2. Key in your credentials (using an example of an Google Cloud Services (GCP) bucket here):

    • Access Key: Access Key generated from GCP IAM Console
    • Secret Key: Secret Key generated from GCP IAM Console
    • Bucket: Name of the bucket in GCP
    • Region: Name of the region, for example, asia-south1
    • Prefix for Upload Path: Define the directory name (optional)
  3. Click on the Validate button to test your storage setup.

  4. A toast with the message 'Recording upload config validated successfully' will pop-up in the top right. This confirms that the configuration is successful.

Recording storage validation

  1. Save your updated settings.

Fetching your recording assets

You can access your recordings on the sessions page in the 100ms Dashboard.

Recording Links

Path formats

The recording path for these respective recordings will look like:

  1. Room composite recording: s3://<location>/<prefix>/beam/<room_id>/<start_date>/Rec-<room_id>-<epoch>.mp4

  2. Room composite - legacy recording (SFU recording):

    1. Composite: s3://<location>/<prefix>/<room_id>/<start_date>/<session_id>/Rec-<session_id>-<epoch>.mp4

    2. Individual: s3://<location>/<prefix>/<room_id>/<start_date>/<session_id>/<peer_id>/<stream_id>/<track_id>.webm

  3. HLS recording - Multi-resolution layer: s3://<location>/<prefix>/hls/<room_id>/<start_date>/<epoch>/file-recording/Rec-<room_id>-<epoch>-<layer_index>.mp4

  4. HLS recording - Zipped Video-on-demand: s3://<location>/<prefix>/hls/<room_id>/<start_date>/<epoch>/vod/Rec-<room_id>-<epoch>.zip

LocationName of the bucket where recordings are stored
PrefixPrefix for upload path which is configured in storage settings of your template. If not configured, the default value for this will be your Customer ID
Room IDThe identifier for the room which was recorded
Start DateStart date of the session
EpochStart time of the recorder in the session
Peer IDUnique identifier of a peer in a room
Stream IDUnique identifier for a particular stream of a room (audio-video/screenshare)
Track IDUnique identifier for a particular track (audio or video) of a stream
Layer IndexLayer index values show descending HLS resolutions - 0(1080p), 1(720p), 2(480p), 3(360p) and 4(240p). If highest resolution of template is 720p, then 0(720p), 1(480p), 2(360p) and 3(240p)

Have a suggestion? Recommend changes ->

Was this helpful?