Skip to content

Build a language report

Languages live on each product. Combine these reads to build a report.

Codes are BCP-47 (en, es, pt-BR, …) — see Language codes.

KindEndpointGives you
Source localeGET /videos/{videoId} + GET /videos/{videoId}/transcriptdefaultLanguageCode, transcript readiness
Dubbed audioGET /videos/{videoId}/dubsEvery dub language with status, completion, jobId
Caption-onlyGET /videos/{videoId}/jobs (type: captions)captions_{videoId}_{lang} — or probe GET /subtitles/{lang}
Playback manifestsurlMulti on video (when set)Locale keys → replay URLs — not dub metadata
OrchestrationGET /videos/{videoId}/jobsImport, transcript, dub, captions, shorts, thumbnail, packaging, download
Terminal window
curl -sS "$BRAIV_API_BASE/videos/$VIDEO_ID" \
-H "Authorization: Bearer $BRAIV_API_KEY"

Use defaultLanguageCode. The nested transcript.language on list/get is the same source locale, not translations.

Confirm transcript readiness:

Terminal window
curl -sS "$BRAIV_API_BASE/videos/$VIDEO_ID/transcript" \
-H "Authorization: Bearer $BRAIV_API_KEY"
Terminal window
curl -sS "$BRAIV_API_BASE/videos/$VIDEO_ID/dubs" \
-H "Authorization: Bearer $BRAIV_API_KEY"

Example shape:

{
"dubs": [
{
"language": "es",
"product": "plus",
"status": "ready",
"completion": "full_ready",
"jobId": "dub_uv_123_es_plus"
}
]
}

Prefer completion (preview_ready, full_ready, awaiting_credits) for reporting. For one locale + audioUrl:

Terminal window
curl -sS "$BRAIV_API_BASE/videos/$VIDEO_ID/dubs/es?product=plus" \
-H "Authorization: Bearer $BRAIV_API_KEY"

After you request caption translation, GET /videos/{videoId}/jobs includes captions_* jobs. Poll:

Terminal window
curl -sS "$BRAIV_API_BASE/jobs/captions_${VIDEO_ID}_fr" \
-H "Authorization: Bearer $BRAIV_API_KEY"

Language is in details.language on the job response.

If you know candidate langs — probe subtitles:

Terminal window
curl -sS "$BRAIV_API_BASE/videos/$VIDEO_ID/subtitles/fr?format=srt" \
-H "Authorization: Bearer $BRAIV_API_KEY"

200 = subtitles exist; 202 = still processing.

Terminal window
curl -sS "$BRAIV_API_BASE/videos/$VIDEO_ID/jobs" \
-H "Authorization: Bearer $BRAIV_API_KEY"

Dub languages are encoded in ids: dub_{videoId}_{lang}_{product} — see Job id format. Prefer GET /dubs for structured language and status; use jobs mainly for polling.

{
"videoId": "uv_123",
"sourceLanguage": "en",
"dubs": [
{ "language": "es", "product": "plus", "completion": "full_ready" }
],
"captionLanguages": ["fr"]
}

captionLanguages comes from captions_* jobs or subtitle probes. GET /videos gives the source language; GET /packaging is title, description, and poster.