Transcripts & Subtitles
Every uploaded video and audio asset is automatically transcribed. The transcription pipeline extracts spoken text with timestamps, identifies speakers, and derives keywords and entities. You can retrieve, download, and manage this data through the API.
Retrieve Metadata
Get all derived metadata for an asset – transcripts, speakers, keywords, entities, and more:
- curl
- Python
- TypeScript
curl --request GET \
--url https://api.streamdiver.com/v2/media/{assetId}/metadata \
--header "Authorization: Bearer {token}"
metadata = requests.get(
f"https://api.streamdiver.com/v2/media/{asset_id}/metadata",
headers={"Authorization": f"Bearer {token}"},
).json()
const metadata = await fetch(
`https://api.streamdiver.com/v2/media/${assetId}/metadata`,
{ headers: { Authorization: `Bearer ${token}` } }
).then((r) => r.json());
List Transcripts
An asset can have multiple transcripts (e.g., different languages). List all available transcripts:
- curl
- Python
- TypeScript
curl --request GET \
--url https://api.streamdiver.com/v2/media/{assetId}/metadata/transcripts \
--header "Authorization: Bearer {token}"
transcripts = requests.get(
f"https://api.streamdiver.com/v2/media/{asset_id}/metadata/transcripts",
headers={"Authorization": f"Bearer {token}"},
).json()
for t in transcripts["data"]:
print(t["id"], t["languageCode"])
const transcripts = await fetch(
`https://api.streamdiver.com/v2/media/${assetId}/metadata/transcripts`,
{ headers: { Authorization: `Bearer ${token}` } }
).then((r) => r.json());
Download a Transcript
Download a transcript in the format you need:
- curl
- Python
- TypeScript
# Download as plain text
curl --request GET \
--url "https://api.streamdiver.com/v2/media/{assetId}/metadata/transcripts/{transcriptId}/download?transcriptDownloadType=txt" \
--header "Authorization: Bearer {token}"
# Download as SRT subtitles
curl --request GET \
--url "https://api.streamdiver.com/v2/media/{assetId}/metadata/transcripts/{transcriptId}/download?transcriptDownloadType=srt" \
--header "Authorization: Bearer {token}"
# Download as plain text
text = requests.get(
f"https://api.streamdiver.com/v2/media/{asset_id}/metadata/transcripts/{transcript_id}/download",
params={"transcriptDownloadType": "txt"},
headers={"Authorization": f"Bearer {token}"},
).text
# Download as SRT
srt = requests.get(
f"https://api.streamdiver.com/v2/media/{asset_id}/metadata/transcripts/{transcript_id}/download",
params={"transcriptDownloadType": "srt"},
headers={"Authorization": f"Bearer {token}"},
).text
// Download as plain text
const text = await fetch(
`https://api.streamdiver.com/v2/media/${assetId}/metadata/transcripts/${transcriptId}/download?` +
new URLSearchParams({ transcriptDownloadType: "txt" }),
{ headers: { Authorization: `Bearer ${token}` } }
).then((r) => r.text());
Available Formats
| Format | Parameter | Description |
|---|---|---|
| JSON | json | Structured transcript with timestamps and speaker labels |
| Plain text | txt | Full transcript as plain text |
| SRT | srt | SubRip subtitle format |
| WebVTT | vtt | Web Video Text Tracks format |
| DOCX | docx | Microsoft Word document (supports custom templates) |
Add omitSpeakerLabels=true to any download request to exclude speaker names from the output.
Request Additional Transcriptions
Trigger transcription in a specific language or re-extract metadata with different settings:
curl --request PUT \
--url https://api.streamdiver.com/v2/media/{assetId}/metadata \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--data '{ "transcriptionLanguageCodes": ["de-v2", "translate-en-v2"] }'
Retrieve the list of transcription languages available for your tenant with GET /tenants/current/metadata/transcription/languageModels. Streamdiver also supports automatic cross-language transcription from any source language to English.
Subtitles
Subtitles can be derived from transcripts or uploaded independently in SRT or WebVTT format.
Assign a Transcript as Subtitles
Convert an existing transcript into subtitles for the player widget:
curl --request POST \
--url https://api.streamdiver.com/v2/media/{assetId}/metadata/transcripts/{transcriptId}/assignsubtitle \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--data '{ "includeSpeakerLabel": false }'
Upload Custom Subtitles
Upload your own subtitles in SRT or WebVTT format:
curl --request PUT \
--url https://api.streamdiver.com/v2/media/{assetId}/subtitles/{languageCode} \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--data @subtitles.srt
Retrieve Subtitles
Get subtitles for an asset in a specific language (returned in WebVTT format):
curl --request GET \
--url https://api.streamdiver.com/v2/media/{assetId}/subtitles/{languageCode} \
--header "Authorization: Bearer {token}"
Further Resources
- Interactive API Reference -- Metadata -- all metadata and transcript endpoints
- Interactive API Reference -- Subtitles -- subtitle management endpoints
- Search -- search across transcripts and all metadata
- Downloads -- include transcripts in download packages
- Chat, RAG & Flows -- ask questions against transcripts
Related Use Cases
- E-Learning & Training -- accessible training content with auto-subtitles
- Ratssitzungen & Protokolle -- automated meeting minutes with transcript export
- Unternehmenskommunikation -- repurpose video content via transcripts