API REFERENCE · DUBBING
Transcript & review
With review=manual the dub pauses at in_review after translation. Pull the transcript, edit any line, then render -- credits only spend at render.
01.The review flow
- Create the dub with
review=manual-- Create a dub. - Wait for
status: "in_review"-- thedub.ready_for_reviewwebhook fires the moment it lands (Webhooks). GETthe transcript per language;PATCHthe lines you want changed.POST /renderto approve -- the whole dub, or one language at a time.
02.Get the transcript
/v1/dubs/{dub_id}/transcript?lang=es{
"dub_id": "dub_31xk9m",
"lang": "es",
"segments": [
{
"id": "seg_004",
"start": 12.48,
"end": 15.91,
"speaker": "spk_1",
"source": "That's the whole trick.",
"target": "Ese es todo el truco."
}
]
}| FIELD | TYPE | DESCRIPTION |
|---|---|---|
id | string | Stable per segment; PATCH keys on it. |
start | number | Seconds into the source, word-timestamp precise. |
end | number | Seconds into the source. |
speaker | string | Which detected speaker says the line. |
source | string | The transcribed source line. |
target | string | The translated line -- the editable field. |
Omit lang to get the source-language transcript only (available from translating onward, on auto dubs too -- useful for your own moderation pass).
03.Edit lines
/v1/dubs/{dub_id}/transcriptcurl -X PATCH https://api.thefamiliarlab.com/v1/dubs/dub_31xk9m/transcript \
-H "Authorization: Bearer $FAMILIAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"lang": "es",
"segments": [
{ "id": "seg_004", "target": "Ahí está todo el truco." }
]
}'Send only the segments you changed; target is the one writable field. The response echoes the full updated transcript. PATCH is only valid at in_review -- anything else returns 409.
04.Render
/v1/dubs/{dub_id}/rendercurl -X POST https://api.thefamiliarlab.com/v1/dubs/dub_31xk9m/render \
-H "Authorization: Bearer $FAMILIAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "langs": ["es"] }'{
"dub_id": "dub_31xk9m",
"status": "rendering",
"outputs": [
{ "lang": "es", "status": "rendering" },
{ "lang": "pt", "status": "in_review" },
{ "lang": "ja", "status": "in_review" }
]
}Omit langs to approve the whole dub; pass it to release languages one at a time (Spanish today, the rest after your Spanish reviewer signs off). Render is the moment credits spend. Rendering a manual dub that isn't in_review returns 409.
05.When review is forced or skipped
06.Access
The API is enterprise-only: private access under a Studio contract, with volume pricing, raised limits, and a named point of contact for the integration. Book a call and your key is issued with the contract.