---
title: "Get a dub"
method: GET
path: "/videos/{videoId}/dubs/{lang}"
tags: ["Dubs"]
---

# Get a dub

`GET /videos/{videoId}/dubs/{lang}`

## Request

- Base URL: `https://api.braiv.co/v1`
- URL: `https://api.braiv.co/v1/videos/{videoId}/dubs/{lang}`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

Returns readiness, downloadable dubbed audio, and target-language transcript data for a language/product pair. Required scope: `videos:read`.

## Path parameters

- `videoId` string, required
- `lang` string, required: ISO-style language or locale code accepted by the underlying product.

## Query parameters

- `product` 'plus' | 'premium': Dubbing voice product: - `plus` — expressive multilingual dubbing using a Braiv voice. - `premium` — dubbing with a cloned voice created from each speaker's source samples.

## Response `200`

Dub audio is ready.

- Dub
  - `status` 'processing' | 'ready' | 'failed', required: Public dub artifact lifecycle.
  - `userVideoId` string, required: Parent library video ID.
  - `languageCode` string, required: ISO-style language or locale code accepted by the underlying product.
  - `dubbingRequestId` string: Internal dubbing request ID.
  - `dubbingStatus` string: Detailed pipeline request status.
  - `completionStatus` string: Coverage state such as preview_ready or complete.
  - `audioUrl` string, uri, nullable: Downloadable dubbed audio URL when ready.
  - `audioTrackId` string, nullable: Backing audio track ID when created.
  - `segments` TranscriptSegment[]: Target-language transcript segments when available.
    - `start` number, required: Segment start in seconds.
    - `end` number, required: Segment end in seconds; not earlier than start.
    - `speaker` string, required: Speaker ID assigned to the segment.
    - `text` string, required: Transcript text for this time range.
    - `deleted` boolean, required: Whether the segment is excluded from active playback.
  - `speakers` Speaker[]: Target-language speaker labels.
    - `id` string, required: Speaker identifier referenced by segments.
    - `label` string, required: Display label for the speaker.
  - `jobId` string, required: Pollable dub job ID.

## Other responses

- `202`: A dub exists but is still processing, or its stored pipeline state is failed; inspect `status`.
- `400`: Request fields are missing, malformed, out of bounds, or mutually inconsistent.
- `401`: A supported authentication header is missing or contains an invalid Public API key.
- `403`: Authentication succeeded, but the required scope, workspace role, or resource permission is missing.
- `404`: Video or requested language/product dub was not found.
- `429`: The API key exceeded its allowed concurrency or request rate. Retry after in-flight work completes or the limit resets.
- `500`: An unexpected server error occurred.

---

[API](https://skmtc.dev/braiv/apis/braiv-public-api.md) - [All operations](https://skmtc.dev/braiv/apis/braiv-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/braiv/apis/braiv-public-api/revisions/8ed0fd0d0a6f?raw)
