API REFERENCE

The Familiar API

Dub any video or livestream from inside your own product: voice + lip-sync in one model, 30 languages, and the only one that works in real time.

01.What you can build

  • A language toggle on your platform: every upload dubbed into the languages your audience watches, served from your own player.
  • A back catalog dubbed on upload: channel operators and MCNs point the pipeline at the archive; webhooks report every state change, so thousands of videos run unattended.
  • Ad & campaign localization: one master spot into every market -- the review gate holds each translation for brand approval, and each placement arrives with its translated title + description.
  • Premium catalogs: films, series, and documentaries through the manual review workflow, per language, with subtitles included.
  • Live broadcasts in every language: streams dub in real time, everyone on camera in their own voice, each language's feed pushed to its own channel.
  • Live commerce: shopping streams selling in the buyer's language, the host in their own voice.
  • Faith services & live events: one service or event, a feed per language over WHEP, RTMP, or SRT.
  • Creator tools inside your product: your users manage Do Not Translate lists and context from your UI; every dub respects them.

02.Base URL

https://api.thefamiliarlab.com/v1

Every request is HTTPS + JSON (uploads are multipart/form-data) and carries your key in the Authorization header -- see Authentication.

03.Quickstart: dub a video into three languages

One request creates the dub; a webhook (or polling) tells you when each language is ready.

POST/v1/dubs
1 · CREATE THE DUB
curl -X POST https://api.thefamiliarlab.com/v1/dubs \
  -H "Authorization: Bearer $FAMILIAR_API_KEY" \
  -F "source_url=https://cdn.yourapp.com/upload.mp4" \
  -F "target_langs=es,pt,ja"
2 · THE RESPONSE
{
  "dub_id": "dub_31xk9m",
  "status": "queued",
  "source_lang": null,
  "target_langs": ["es", "pt", "ja"],
  "review": "auto"
}
3 · POLL (OR USE A WEBHOOK)
curl https://api.thefamiliarlab.com/v1/dubs/dub_31xk9m \
  -H "Authorization: Bearer $FAMILIAR_API_KEY"
4 · DOWNLOAD EACH FINISHED LANGUAGE
curl -L https://api.thefamiliarlab.com/v1/dubs/dub_31xk9m/output/es \
  -H "Authorization: Bearer $FAMILIAR_API_KEY" \
  -o dubbed-es.mp4

By default the dub renders immediately. Pass review=manual to pause after translation, edit any line through the API, and render on your approval -- the flow is in Transcript & review.

04.How a dub moves

TABLE 01 · DUB LIFECYCLE
STATUSWHAT'S HAPPENING
queuedAccepted and waiting for a worker.
transcribingSpeech-to-text with word timestamps; speakers separated.
translatingEach line translated; your Do Not Translate list and context applied.
in_reviewOnly with review=manual (and always on subtitle jobs): the transcript is editable until you render.
renderingVoice + lip-sync generated together, per language.
completeEvery language rendered; outputs downloadable.
failedSomething broke; the error rides the status payload.

Each target language also carries its own status inside outputs[], so a dub can be rendering overall while Spanish is already complete -- see Create a dub.

05.The 30 languages

Any source language dubs into the other 29, in three quality tiers (best first). Language codes are lowercase ISO -- en es pt zh yue ja ko fr de ar id ru it vi th nl el uk no sv da ca hr sr bg sk lt lv be kk. The list, each language's tier, and which ones work live are served at GET /v1/languages -- Languages.

06.Versioning & stability

The version rides the path: everything documented here is /v1. Within a version, changes are additive only -- new optional request fields, new response fields, new webhook event types. Write your integration to tolerate fields and events it doesn't recognize.

  • Additive (no notice needed): new fields, new endpoints, new event types, new languages.
  • Breaking (new version): renamed or removed fields, changed semantics -- these ship as /v2, and /v1 keeps working through a migration window agreed with your point of contact.
  • Deprecations: announced in the Changelog and to your integration contact before anything is removed.

07.SDKs

The API is plain HTTPS + JSON -- every example in these docs is runnable curl. Official Python and Node.js SDKs are in progress (SDKs); until they ship, the reference is everything an integration needs.

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