Skip to content

Get a dub

GET
/videos/{videoId}/dubs/{lang}
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.

videoId
required
string
>= 1 characters

Braiv library video document ID.

Example
vid_01JZ8M6A
lang
required

ISO-style language or locale code accepted by the underlying product.

string
>= 2 characters <= 16 characters /^[A-Za-z]{2,3}(?:-[A-Za-z]{2,4})?$/

Target language code used by the video, such as es or pt-BR.

Example
es
product

Dubbing voice product:

  • plus — expressive multilingual dubbing using a Braiv voice.
  • premium — dubbing with a cloned voice created from each speaker’s source samples.
string
default: plus
Allowed values: plus premium

Voice product used when the dub was created.

Dub audio is ready.

Media type application/json
object
status
required

Public dub artifact lifecycle.

string
Allowed values: processing ready failed
userVideoId
required

Parent library video ID.

string
languageCode
required

Dub target language.

string
>= 2 characters <= 16 characters /^[A-Za-z]{2,3}(?:-[A-Za-z]{2,4})?$/
dubbingRequestId

Internal dubbing request ID.

string
dubbingStatus

Detailed pipeline request status.

string
completionStatus

Coverage state such as preview_ready or complete.

string
audioUrl

Downloadable dubbed audio URL when ready.

string | null format: uri
audioTrackId

Backing audio track ID when created.

string | null
segments

Target-language transcript segments when available.

Array<object>
object
start
required

Segment start in seconds.

number
end
required

Segment end in seconds; not earlier than start.

number
speaker
required

Speaker ID assigned to the segment.

string
text
required

Transcript text for this time range.

string
deleted
required

Whether the segment is excluded from active playback.

boolean
speakers

Target-language speaker labels.

Array<object>
object
id
required

Speaker identifier referenced by segments.

string
label
required

Display label for the speaker.

string
jobId
required

Pollable dub job ID.

string
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.

Media type application/json
object
status
required

Public dub artifact lifecycle.

string
Allowed values: processing ready failed
userVideoId
required

Parent library video ID.

string
languageCode
required

Dub target language.

string
>= 2 characters <= 16 characters /^[A-Za-z]{2,3}(?:-[A-Za-z]{2,4})?$/
dubbingRequestId

Internal dubbing request ID.

string
dubbingStatus

Detailed pipeline request status.

string
completionStatus

Coverage state such as preview_ready or complete.

string
audioUrl

Downloadable dubbed audio URL when ready.

string | null format: uri
audioTrackId

Backing audio track ID when created.

string | null
segments

Target-language transcript segments when available.

Array<object>
object
start
required

Segment start in seconds.

number
end
required

Segment end in seconds; not earlier than start.

number
speaker
required

Speaker ID assigned to the segment.

string
text
required

Transcript text for this time range.

string
deleted
required

Whether the segment is excluded from active playback.

boolean
speakers

Target-language speaker labels.

Array<object>
object
id
required

Speaker identifier referenced by segments.

string
label
required

Display label for the speaker.

string
jobId
required

Pollable dub job ID.

string
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.

Media type application/json
object
error
required

Structured public API error envelope.

object
code
required

Stable machine-readable error code.

string
Allowed values: UNAUTHENTICATED INVALID_API_KEY INSUFFICIENT_SCOPE PERMISSION_DENIED ROLE_CANNOT_PRODUCE NOT_FOUND INVALID_ARGUMENT UNSUPPORTED_SOURCE DURATION_UNKNOWN INSUFFICIENT_CREDITS CONFLICT ALREADY_EXISTS IDEMPOTENCY_REPLAY RATE_LIMITED PREVIEW_NOT_DOWNLOADABLE DOWNLOAD_TIER_NONE FAILED_PRECONDITION GONE METHOD_NOT_ALLOWED INTERNAL
message
required

Human-readable error summary.

string
details
required

Machine-readable operation-specific context; empty when unavailable.

object
key
additional properties
any
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.

Media type application/json
object
error
required

Structured public API error envelope.

object
code
required

Stable machine-readable error code.

string
Allowed values: UNAUTHENTICATED INVALID_API_KEY INSUFFICIENT_SCOPE PERMISSION_DENIED ROLE_CANNOT_PRODUCE NOT_FOUND INVALID_ARGUMENT UNSUPPORTED_SOURCE DURATION_UNKNOWN INSUFFICIENT_CREDITS CONFLICT ALREADY_EXISTS IDEMPOTENCY_REPLAY RATE_LIMITED PREVIEW_NOT_DOWNLOADABLE DOWNLOAD_TIER_NONE FAILED_PRECONDITION GONE METHOD_NOT_ALLOWED INTERNAL
message
required

Human-readable error summary.

string
details
required

Machine-readable operation-specific context; empty when unavailable.

object
key
additional properties
any
Examples

Authentication header missing

{
"error": {
"code": "UNAUTHENTICATED",
"message": "Missing API key.",
"details": {}
}
}

Authentication succeeded, but the required scope, workspace role, or resource permission is missing.

Media type application/json
object
error
required

Structured public API error envelope.

object
code
required

Stable machine-readable error code.

string
Allowed values: UNAUTHENTICATED INVALID_API_KEY INSUFFICIENT_SCOPE PERMISSION_DENIED ROLE_CANNOT_PRODUCE NOT_FOUND INVALID_ARGUMENT UNSUPPORTED_SOURCE DURATION_UNKNOWN INSUFFICIENT_CREDITS CONFLICT ALREADY_EXISTS IDEMPOTENCY_REPLAY RATE_LIMITED PREVIEW_NOT_DOWNLOADABLE DOWNLOAD_TIER_NONE FAILED_PRECONDITION GONE METHOD_NOT_ALLOWED INTERNAL
message
required

Human-readable error summary.

string
details
required

Machine-readable operation-specific context; empty when unavailable.

object
key
additional properties
any
Examples
Example scope
{
"error": {
"code": "INSUFFICIENT_SCOPE",
"message": "The API key lacks the required scope.",
"details": {}
}
}

Video or requested language/product dub was not found.

Media type application/json
object
error
required

Structured public API error envelope.

object
code
required

Stable machine-readable error code.

string
Allowed values: UNAUTHENTICATED INVALID_API_KEY INSUFFICIENT_SCOPE PERMISSION_DENIED ROLE_CANNOT_PRODUCE NOT_FOUND INVALID_ARGUMENT UNSUPPORTED_SOURCE DURATION_UNKNOWN INSUFFICIENT_CREDITS CONFLICT ALREADY_EXISTS IDEMPOTENCY_REPLAY RATE_LIMITED PREVIEW_NOT_DOWNLOADABLE DOWNLOAD_TIER_NONE FAILED_PRECONDITION GONE METHOD_NOT_ALLOWED INTERNAL
message
required

Human-readable error summary.

string
details
required

Machine-readable operation-specific context; empty when unavailable.

object
key
additional properties
any
Example
{
"error": {
"code": "UNAUTHENTICATED"
}
}

The API key exceeded its allowed concurrency or request rate. Retry after in-flight work completes or the limit resets.

Media type application/json
object
error
required

Structured public API error envelope.

object
code
required

Stable machine-readable error code.

string
Allowed values: UNAUTHENTICATED INVALID_API_KEY INSUFFICIENT_SCOPE PERMISSION_DENIED ROLE_CANNOT_PRODUCE NOT_FOUND INVALID_ARGUMENT UNSUPPORTED_SOURCE DURATION_UNKNOWN INSUFFICIENT_CREDITS CONFLICT ALREADY_EXISTS IDEMPOTENCY_REPLAY RATE_LIMITED PREVIEW_NOT_DOWNLOADABLE DOWNLOAD_TIER_NONE FAILED_PRECONDITION GONE METHOD_NOT_ALLOWED INTERNAL
message
required

Human-readable error summary.

string
details
required

Machine-readable operation-specific context; empty when unavailable.

object
key
additional properties
any
Example
{
"error": {
"code": "RATE_LIMITED",
"message": "API key concurrency limit reached",
"details": {}
}
}

An unexpected server error occurred.

Media type application/json
object
error
required

Structured public API error envelope.

object
code
required

Stable machine-readable error code.

string
Allowed values: UNAUTHENTICATED INVALID_API_KEY INSUFFICIENT_SCOPE PERMISSION_DENIED ROLE_CANNOT_PRODUCE NOT_FOUND INVALID_ARGUMENT UNSUPPORTED_SOURCE DURATION_UNKNOWN INSUFFICIENT_CREDITS CONFLICT ALREADY_EXISTS IDEMPOTENCY_REPLAY RATE_LIMITED PREVIEW_NOT_DOWNLOADABLE DOWNLOAD_TIER_NONE FAILED_PRECONDITION GONE METHOD_NOT_ALLOWED INTERNAL
message
required

Human-readable error summary.

string
details
required

Machine-readable operation-specific context; empty when unavailable.

object
key
additional properties
any
Example
{
"error": {
"code": "INTERNAL",
"message": "An unexpected error occurred.",
"details": {}
}
}