Start Composite Merge — Lat/Long Watermark - API
composite-merge transcoding job and burn static GPS coordinates onto the output. Renders "<lat>, <long>" as text — the numeric format is fixed, use prefix / suffix to add wrapping text. Same endpoint as Start Composite Merge — the only difference is the watermark body parameter is set to type: "lat_long".HTTP method and endpoint
|
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
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.
recordingIds to merge. Must be a non-empty array of unique IDs that belong to the requesting user. composite-merge-started, composite-merge-completed, composite-merge-failed and composite-merge-cancelled events. lat_long for this variant. -90 to 90. -180 to 180. defaultValue: top-right
Allowed: top-left | top-right | bottom-left | bottom-right | center.
defaultValue: 20
Pixels from edge (>= 0). Ignored when position is center.
defaultValue: 24
Pixels.
defaultValue: white
FFmpeg color name (white, red, yellow, …) or #RRGGBB hex.
defaultValue: black@0.3
"color@alpha" (e.g. "black@0.4") or "none" to disable the background box.
defaultValue: ""
Text prepended to the coordinate string.
defaultValue: ""
Text appended to the coordinate string. Note: format is not used in lat_long mode — the coordinate string is fixed.
import fetch from 'node-fetch';
const options = {
method: "POST",
headers: {
"Authorization": "$YOUR_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
"recordingIds": [
"6697685c6eaaaac67ea18130",
"6697685c6eaaaac67ea18131"
],
"webhookUrl": "https://www.example.com/",
"watermark": {
"type": "lat_long",
"lat": 12.971599,
"long": 77.594566,
"textConfig": {
"position": "bottom-left",
"margin": 24,
"fontSize": 20,
"color": "white",
"background": "black@0.4",
"prefix": "GPS: ",
"suffix": ""
}
}
}),
};
const url= `https://api.videosdk.live/v2/transcodings/merge`;
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
{
"id": "665fcf7f2abe9a2807e42700",
"recordingIds": [
"6697685c6eaaaac67ea18130",
"6697685c6eaaaac67ea18131"
],
"roomId": "abcd-efgh-ijkl",
"sessionId": "6847c231fbaa8b416bc87014",
"status": "processing",
"task": "composite-merge",
"startedAt": "2025-06-10T05:45:02.730Z"
}
Got a Question? Ask us on discord