Get a dub
const url = 'https://api.braiv.co/v1/videos/vid_01JZ8M6A/dubs/es?product=plus';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.braiv.co/v1/videos/vid_01JZ8M6A/dubs/es?product=plus' \ --header 'Authorization: Bearer <token>'Returns readiness, downloadable dubbed audio, and target-language transcript data for a language/product pair. Required scope: videos:read.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Braiv library video document ID.
Example
vid_01JZ8M6AISO-style language or locale code accepted by the underlying product.
Target language code used by the video, such as es or pt-BR.
Example
esQuery Parameters
Section titled “Query Parameters ”Dubbing voice product:
plus— expressive multilingual dubbing using a Braiv voice.premium— dubbing with a cloned voice created from each speaker’s source samples.
Voice product used when the dub was created.
Responses
Section titled “ Responses ”Dub audio is ready.
object
Public dub artifact lifecycle.
Parent library video ID.
Dub target language.
Internal dubbing request ID.
Detailed pipeline request status.
Coverage state such as preview_ready or complete.
Downloadable dubbed audio URL when ready.
Backing audio track ID when created.
Target-language transcript segments when available.
object
Segment start in seconds.
Segment end in seconds; not earlier than start.
Speaker ID assigned to the segment.
Transcript text for this time range.
Whether the segment is excluded from active playback.
Target-language speaker labels.
object
Speaker identifier referenced by segments.
Display label for the speaker.
Pollable dub job ID.
Example
{ "status": "ready", "userVideoId": "vid_01JZ8M6A", "languageCode": "es", "dubbingRequestId": "dubreq_01", "dubbingStatus": "complete", "completionStatus": "complete", "audioUrl": "https://storage.googleapis.com/.../es.mp3", "audioTrackId": "track_es", "segments": [ { "start": 0.4, "end": 3.8, "speaker": "speaker_0", "text": "Bienvenidos.", "deleted": false } ], "speakers": [ { "id": "speaker_0", "label": "Ben" } ], "jobId": "dub_vid_01JZ8M6A_es_plus"}A dub exists but is still processing, or its stored pipeline state is failed; inspect status.
object
Public dub artifact lifecycle.
Parent library video ID.
Dub target language.
Internal dubbing request ID.
Detailed pipeline request status.
Coverage state such as preview_ready or complete.
Downloadable dubbed audio URL when ready.
Backing audio track ID when created.
Target-language transcript segments when available.
object
Segment start in seconds.
Segment end in seconds; not earlier than start.
Speaker ID assigned to the segment.
Transcript text for this time range.
Whether the segment is excluded from active playback.
Target-language speaker labels.
object
Speaker identifier referenced by segments.
Display label for the speaker.
Pollable dub job ID.
Example
{ "status": "processing", "userVideoId": "vid_01JZ8M6A", "languageCode": "es", "audioUrl": null, "audioTrackId": null, "jobId": "dub_vid_01JZ8M6A_es_plus"}Request fields are missing, malformed, out of bounds, or mutually inconsistent.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Example
{ "error": { "code": "INVALID_ARGUMENT", "message": "The request contains invalid or missing fields.", "details": {} }}A supported authentication header is missing or contains an invalid Public API key.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Examples
Authentication header missing
{ "error": { "code": "UNAUTHENTICATED", "message": "Missing API key.", "details": {} }}API key invalid
{ "error": { "code": "INVALID_API_KEY", "message": "Invalid API key", "details": {} }}Authentication succeeded, but the required scope, workspace role, or resource permission is missing.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Examples
{ "error": { "code": "INSUFFICIENT_SCOPE", "message": "The API key lacks the required scope.", "details": {} }}Video or requested language/product dub was not found.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Example
{ "error": { "code": "UNAUTHENTICATED" }}The API key exceeded its allowed concurrency or request rate. Retry after in-flight work completes or the limit resets.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Example
{ "error": { "code": "RATE_LIMITED", "message": "API key concurrency limit reached", "details": {} }}An unexpected server error occurred.
object
Structured public API error envelope.
object
Stable machine-readable error code.
Human-readable error summary.
Machine-readable operation-specific context; empty when unavailable.
object
Example
{ "error": { "code": "INTERNAL", "message": "An unexpected error occurred.", "details": {} }}