Skip to main content
VMEG text translation is built for localization pipelines — especially dubbing, subtitles, and voiceover — not as a generic “paste a paragraph” machine translation endpoint. You send an ordered list of segments (lines or cues), and the engine uses context, scene, speaker, and locale hints so translations read naturally when spoken or timed, and stay consistent across a script. Locales must appear in Supported languages. For full audio/video translation (ASR → translate → TTS in one job), use Media translation instead.

How this differs from generic translation APIs

Billing is by source character count (all segments[].text), not by duration. See Pricing.

Request shape

Each segment supports: Field-level OpenAPI detail: Create text translation (sync).

Context management

Ambiguous lines (“that”, “he”, homophones) need controlled context — not the whole document dumped in every time.

Global strategy: options.sourceContext

Priority: segment-level context overrides global sourceContext for that line.

When to use which mode

  • Subtitle / dubbing script in orderneighbor with a small contextWindow (e.g. 3–5) for pronoun and tone continuity without leaking unrelated lines.
  • Cherry-picked cues or A/B takesprovided_only + explicit context per segment.
  • Isolated UI strings or glossary checksindependent.
Pair start / end with ordered segments when your pipeline already has timecodes; the API uses segment order and timing together with neighbor mode.

Scene and delivery: options.sceneCustomized

Use subtitle for burn-in or caption constraints; voiceover or audio when the line is spoken without lip sync; video for general dubbed video dialogue.

Terminology and instructions

  • options.glossary — map of source term → preferred translation (brand names, character names, fixed phrases).
  • options.prompt — extra instruction appended to the translation task (tone, audience, “keep informal”, etc.).
  • options.skipMissingTranslationCheck — when true, skips validation that every segment returned a translation (advanced; default false).

Sync vs async

Every create and create-async call requires X-Idempotency-Key. Async also needs a configured Webhook. Async-only extraData is echoed in webhooks — see Create text translation (async).

Example: multi-speaker dubbing batch

Translated lines appear in data.items in the same order as segments.

Workflow (async)

  1. Configure Webhooks
  2. POST to create-async with idempotency key
  3. Save taskId from the acceptance response
  4. Read translated segments from webhook data.items