PREVIEW · CLOSED ACCESSAPI keys are issued under Studio contracts. Email the team

API REFERENCE · DECISIONS

Translation decisions

Which rendering carries the line: a joke, a story, a conversational turn. Your creative directors see the options with the reasoning and pick.

01.Reviewed today

With review=manual, a line that can land more than one way comes back as three translations, each for a different intent and emotion, with the reasoning. Your creative directors pick one, edit any line, then render.

A podcast, an episode or a movie carries many such segments. The flow lives on Transcript & review.

02.The kinds

RENDERING

Which of several renderings carries the line. The Korean 사과하려고 사과 사 왔어.rests on 사과 meaning both apology and apple; the options are "Apples. I'm sorry, right down to the core." (the pun kept), "I came to say sorry. I brought apples." (the meaning only) and "An apple a day keeps the silent treatment away." (a new joke).

The Chinese 你可真行啊。turns on tone. The options are "Wow. You're incredible." (sincere), "Well, aren't you something." (sarcastic) and "Look at you, hotshot." (teasing).

SLANG

Kept as said, or localized. A gamer's "GG" stays "GG" in every language.

NAME

Kept, or localized. A character's nickname stays as the audience first heard it.

REFERENCE

Swapped for one the audience knows. A local TV show named in a joke becomes one the new audience grew up with.

TERM

The term you already chose, kept consistent. A product name or a show's invented word reads the same in episode one and episode ten.

CULTURE

What that culture avoids, and the way around it. A gesture of praise in one country reads as an insult in another; the line carries the praise without it.

PROFANITY

The level for the audience. A younger cut lowers it; the adult cut keeps the original force.

03.In the record

Every translation decision lands in the decision record with its options and the choice in force (in the works). Filter the record to translation with type.

GET/v1/dubs/{dub_id}/decisions?type=translation&lang=en
200 · OK
{
  "dub_id": "dub_31xk9m",
  "lang": "en",
  "decisions": [
    {
      "id": "dec_7h2k0a",
      "type": "translation",
      "kind": "rendering",
      "segment": "seg_12",
      "start": 12.48,
      "end": 15.91,
      "speaker": "spk_1",
      "source": "사과하려고 사과 사 왔어.",
      "options": [
        { "id": "opt_1", "text": "Apples. I'm sorry, right down to the core.", "intent": "the pun kept", "emotion": "playful", "reasoning": "The line rests on 사과 meaning both apology and apple, and bringing apples to say sorry is a real custom; the English keeps the fruit so the bag in the next shot still lands." },
        { "id": "opt_2", "text": "I came to say sorry. I brought apples.", "intent": "the meaning only", "emotion": "sincere", "reasoning": "Drops the pun; the apology reads straight." },
        { "id": "opt_3", "text": "An apple a day keeps the silent treatment away.", "intent": "a new joke", "emotion": "playful", "reasoning": "A different gag that fits the apples on screen." }
      ],
      "chosen": "opt_1",
      "chosen_by": "model",
      "status": "open",
      "memory": null
    }
  ],
  "has_more": false
}
TABLE 01 · OPTION FIELDS
FIELDTYPEDESCRIPTION
idstringOption id; choose keys on it.
textstringThe translated line.
intentstringWhat the rendering goes for.
emotionstringThe delivery it carries.
reasoningstringWhy this rendering works.

segment is the idof the transcript segment the line belongs to. The option your team picks becomes that segment's target.

04.Override

PATCH/v1/dubs/{dub_id}/decisions/{decision_id}

Send choose with an option id, or text with your own rendering (in the works). The response returns the decision with chosen_by: "you" and status: "settled".

REQUEST
curl -X PATCH https://api.thefamiliarlab.com/v1/dubs/dub_31xk9m/decisions/dec_7h2k0a \
  -H "Authorization: Bearer $FAMILIAR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "text": "Apples. I am sorry, right down to the core." }'

PATCH is valid at in_review and at complete, then render again. During rendering it returns 409 decision_locked; an unknown option returns 422 option_not_found.

05.Settings

Two request fields on POST /v1/dubs shape the translation decisions (in the works). Nested fields are written dotted in multipart, as metadata.title is.

TABLE 02 · TRANSLATION SETTINGS
FIELDVALUESDESCRIPTION
decisions.translation.optionsinteger, 1 to 3 (default 3)Renderings returned for a line that can land more than one way.
decisions.profanitykeep (default) · soften · removeThe level for the audience; soften = the younger cut.
REQUEST · THE YOUNGER CUT
curl -X POST https://api.thefamiliarlab.com/v1/dubs \
  -H "Authorization: Bearer $FAMILIAR_API_KEY" \
  -F "file=@episode_04.mp4" \
  -F "target_langs=en" \
  -F "review=manual" \
  -F "decisions.profanity=soften"

06.Remember it

Add remember: "creator" to an override and a choice made once follows the next episode (in the works). The carried choice comes back with chosen_by: "memory"; see Decision memory.

07.Access

The API is enterprise-only: private access under a Studio contract, with volume pricing, raised limits, ProRes masters on request, and a named point of contact. Book a call and your key is issued with the contract.