putRecordingTextTrack – Upload Text Track
The putRecordingTextTrack endpoint allows you to upload subtitle or caption files for a recording. Supported formats are SRT, SSA/ASS, and WebVTT. All uploaded files are internally converted to WebVTT. The response is returned in JSON format.
This endpoint only supports POST requests. GET requests are not accepted.
Endpoint
POST https://api-guide.bbbserver.com/bigbluebutton/api/putRecordingTextTrack?<parameters>&checksum=replace-with-checksum The subtitle file must be sent as multipart/form-data in the POST body. The checksum is calculated from the URL query parameters only — the POST body is not included in the checksum calculation.
URL Parameters (Query String)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
recordID | String | Yes | — | A single recording ID. Unlike other endpoints, this parameter does not accept a comma-separated list — only one recording ID is allowed. |
kind | Enum | Yes | — | The type of text track. Accepted values are subtitles or captions. |
lang | String | Yes | — | A language tag conforming to RFC 5646 (e.g. de-DE, en-US). |
label | String | No | Auto-detected from lang | A human-readable display name for the track (e.g. "German"). If omitted, the language name is derived automatically from the lang value. |
POST Body (multipart/form-data)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
file | Binary | Yes | — | The subtitle file to upload. Supported formats: SRT (application/x-subrip), SSA/ASS, and WebVTT (text/vtt). If the file is missing or empty, the API returns a FAILED response. |
Example Request
curl -X POST \
"https://api-guide.bbbserver.com/bigbluebutton/api/putRecordingTextTrack?recordID=replace-with-recording-id&kind=subtitles&lang=de-DE&label=Deutsch&checksum=replace-with-checksum" \
-F "file=@subtitles.srt;type=application/x-subrip" Example Response
A successful call returns the following JSON:
{
"response": {
"returncode": "SUCCESS",
"messageKey": "upload_text_track_success",
"message": "Text track uploaded successfully",
"recordId": "replace-with-recording-id"
}
} Error Responses
messageKey | Description |
|---|---|
paramError | A required parameter is missing (checksum, recordID, kind, or lang). Note: the official documentation incorrectly lists this as missingParameter. |
noRecordings | The specified recording ID was not found. |
invalidKind | The kind value is invalid. Must be subtitles or captions. |
invalidLang | The language tag format is invalid. It must conform to RFC 5646. |
empty_uploaded_text_track | The uploaded file was empty or no file was included in the request. |
Important Behavior
Text track processing is asynchronous. After a successful upload, it may take several minutes before the track is available in the recording playback.
If a track with the same kind and language already exists, it is overwritten with the new file.
Uploading an empty file or sending a request without a file does not delete an existing track. The API returns a FAILED response instead.
All uploaded subtitle formats (SRT, SSA/ASS) are automatically converted to WebVTT for playback.
bbbserver.de Notes
Tips
Use the getRecordingTextTracks endpoint to verify that your uploaded text track has been processed and is available for playback before linking it in your application.
- WebVTT is the recommended format as it requires no conversion and is natively supported by browsers.
- When uploading multiple language tracks, use distinct RFC 5646 language tags to avoid accidentally overwriting existing tracks.
- Set a descriptive
labelparameter to help viewers identify the correct track in the playback language selector. - Remember that the checksum is calculated from the URL query parameters only — do not include the file content in the checksum.