Or jump from this list on a smaller screen.

This is a page from the Audivra documentation. Developer exportsindex: http://127.0.0.1:3000/docs/llms.txt, full corpus: http://127.0.0.1:3000/docs/llms-full.txt, OpenAPI: http://127.0.0.1:3000/docs/openapi.json, Postman: http://127.0.0.1:3000/docs/postman.json. Press ⌘K to search docs.

Dubbing

Async job: speech-to-text, translate, text-to-speech, then lip-sync on a talking-head. Poll GET /api/v1/jobs/{id}.

POST
/api/v1/dub
Auth required

Multipart source (audio or MP4/WebM). Optional script skips recognition. Returns 202 with job_id.

Parameters

NameTypeRequiredDescription
sourcefileYesAudio or talking-head video (max 180s, 15 MB)
target_languagestringNoAllowlisted ISO 639-1 code (default en). en, de, it, nl, fr, es, pt, pl, ru, uk, tr, sw, … (33 total)
voice_idstringNoPreset or ready clone used for the dubbed track
avatar_idstringNoTalking-head preset when source is audio-only
scriptstringNoHuman transcript — skips STT billing
sync_modestringNocut_off · loop · bounce · silence · remap

Response

JSON
{
  "job_id": "…",
  "status": "queued",
  "transcript": "…",
  "translation": "…",
  "target_language": "sw",
  "poll": "/api/v1/jobs/…"
}

Errors

StatusMeaning
401Unauthorized
402STT or video credit quota exceeded
409Voice clone still training
503STT or translation worker unavailable

Pipeline

Recognition meters STT seconds. Translation uses the local LLM worker. Speech and lip-sync follow the existing avatar job (character credits plus video seconds). Video sources become the lip-sync reference face.

Create a dub job
curl -X POST http://127.0.0.1:3000/api/v1/dub \
  -H "Authorization: Bearer sk_live_…" \
  -F "source=@talking-head.mp4" \
  -F "target_language=sw" \
  -F "voice_id=zuri-sw" \
  -F "avatar_id=studio-host"

Studio: /app/dub. Jobs: Avatars & jobs.