Skip to main content
Version: /v2

Merge Participant Recordings - API

Merge individual participant audio recordings into a single audio file by specifying a sessionId and grouping participants into channel1 and channel2. Each participant object must include a participantId, and optionally a recordingId. If no recordingId is provided, the participant's first available audio recording will be used. This allows you to control which participant's audio is assigned to which channel in the final merged file.

HTTP method and endpoint

POST

|

https://api.videosdk.live/v2/recordings/participant/merge
Headers Parameters

values : YOUR_TOKEN_WITHOUT_ANY_PREFIX

This will be a JWT token generate using VideoSDK ApiKey and Secret.

Note that the token will not include any prefix such as "Basic " or "Bearer ". Just pass a token as value.

You can generate a new token by refering this Guide: Generate Auth token

REQUIRED

values : application/json

This is usefull for json body parameters, so that VideoSDK servers can understand that the incoming body parameter will be a JSON string.

Body Parameters
REQUIRED
The Session ID of the Room.
REQUIRED
Array of participant objects for the first channel. Each must have participantId; recordingId is optional. If omitted, system picks the first available recording.
REQUIRED
Array of participant objects for the second channel. Each must have participantId; recordingId is optional. If omitted, system picks the first available recording.
OPTIONAL
Webhook URL to receive merge-recording-completed and merge-recording-failed events.
POST
|
https://api.videosdk.live/v2/recordings/participant/merge
import fetch from 'node-fetch';
const options = {
method: "POST",
headers: {
"Authorization": "$YOUR_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
"sessionId" : "6847c231fbaa8b416bc87014",
"channel1" : [{"participantId":"abcd","recordingId":"rec1"},{"participantId":"abcd2"}],
"channel2" : [{"participantId":"abcd3","recordingId":"rec2"},{"participantId":"abcd4"}],
"webhookUrl" : "https://www.example.com/"
}),
};
const url= `https://api.videosdk.live/v2/recordings/participant/merge`;
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
RESPONSE
{
"message": "Merge recording job started successfully.",
"recording": {
"id": "abcd-abcd-abcd-abcd-abcd",
"channel1": [
{
"recordingId": "6847c2d12abe9a2807e42684",
"participantId": "abcd"
},
{
"recordingId": "6847c2d82abe9a2807e42686",
"participantId": "abcd2"
}
],
"channel2": [
{
"recordingId": "6847c34e2abe9a2807e42688",
"participantId": "abcd3"
},
{
"recordingId": "6847c35e2abe9a2807e4268a",
"participantId": "abcd4"
}
],
"start": "2025-06-10T05:45:02.730Z",
"status": "running",
"meetingId": "abc-abc-abc",
"sessionId": "6847c231fbaa8b416bc87014"
}
}

Got a Question? Ask us on discord