(Beta) Participant-Separated Video

Produce separate video recordings for each participant.

You may have a use case that requires separate recording files per-participant. Recall supports this through a feature flag enabled at the workspace level.

Once enabled, no additional configuration is needed. Requests to Create Bot will be exactly the same.

All bots created under this workspace will then produce participant-separated video recordings in addition to the mixed, composite recording file.

πŸ“˜

To enable participant-separated video for your bots, reach out to the Recall team in slack (monthly plans) or by emailing support (pay-as-you-go).

Platform Support

Participant-separated video is available for all Meeting Platforms.

Usage

Since this is a workspace-scoped feature, once this has been applied to your account, no additional API parameters are necessary.

The primary difference is how the recordings are accessed. Instead of retrieving an individual signed URL for the single mixed recording on the Bot's video_url, participant-separated recordings can be accessed at a separate endpoint.

Retrieving the separate recordings

When you retrieve the bot, it will contain a single recording in recordings:

// GET https://api.recall.ai/api/v1/bot/{id}/
{
  ...
	"recording": "1cc4d5c1-0356-4d74-8908-3377f18674f4",
  "recordings": [
    {
      "id": "1cc4d5c1-0356-4d74-8908-3377f18674f4",
      "started_at": "2024-04-09T18:19:34.284488Z",
      "completed_at": "2024-04-09T18:21:19.892133Z"
    }
  ]
}

This is the same behavior as the default composite video recording normally produced by bots.

To access the participant-separated videos, you can use the id of the recording to call Get Recording.

In the response, it will contain entries with varying type:

  • mp4_video_mixed: The default, mixed video as a single recording file.
  • mp4_video_unmixed: Participant-separated video streams and their corresponding recordings

Example response:

// GET https://api.recall.ai/api/v2/recordings/{id}/
{
  "id": "1cc4d5c1-0356-4d74-8908-3377f18674f4",
  "outputs": [
    {
      "id": "925685c9-d627-49dc-92f7-c5a6883c1d67",
      "type": "mp4_video_mixed",
      "metadata": null,
      "endpoints": [
        {
          "id": "64b255d2-92da-4988-a3c4-93c0909b79cd",
          "type": "s3",
          "video": {
            "download_url": "..."
          }
        }
      ]
    },
    {
      "id": "d53ab51b-867a-4c53-9fba-2770fd2e0955",
      "type": "mp4_video_unmixed",
      "metadata": null,
      "endpoints": [
        {
          "id": "0fc9c786-922c-484d-a0ee-473466f95a30",
          "type": "s3",
          "parts": [
            {
              "stream_id": 16780288,
              "download_url": "...",
              "start_timestamp": 0.667142547,
              "end_timestamp": 100.798540184
            },
            {
              "stream_id": 16778240,
              "download_url": "...",
              "start_timestamp": 0.057904322,
              "end_timestamp": 100.907554255
            }
          ]
        }
      ]
    }
  ],
  "created_at": "2024-04-09T18:19:33.559215Z",
  "expires_at": null
}

Mapping recordings to participants

To map a recording back to its corresponding participant, Recall exposes a stream_id for each recording part.

The stream_id is equivalent to the id of the participant in the participants array of the bot. You should use this to associate each recording to a given meeting participant.


Recording mode

When using participant-separated video, we recommend using gallery_view_v2 as the recording_mode, as using gallery_view will generate multiple videos each time a user turns off their camera or experiences a network interruption.