Skip to main content
Start Translation

Start Translation

Create a new translation project by uploading a video or audio file. The translation process runs asynchronously in the background. Use the status endpoint to track progress and retrieve results. Use Get Project Details when you need translated version history or lip-sync history.

Concurrency Limit

Project creation, translation, and dubbing all check your account’s active-translation limit (at most 10, possibly lower). Only in-progress translation or dubbing runs occupy slots; transcription-only projects do not. If the limit is reached, the API returns CONCURRENT_TRANSLATION_LIMIT_REACHED (HTTP 429). The applied limit is in details.limit.

Request

This endpoint accepts multipart/form-data with a file upload.

Headers

string
required
Your VoiceCheap API key. Get one from app.voicecheap.ai/page-api.

Body Parameters

file
required
The video or audio file to translate.Supported video formats: video/mp4, video/quicktime, video/x-matroska, video/webm, video/mpegSupported audio formats: audio/mpeg, audio/wav, audio/mp4, audio/x-m4a, audio/flac, audio/ogg, audio/aac, audio/webmMaximum file size by plan: Beginner 5 GB, Starter 10 GB, Creator 20 GB, Pro 30 GB, Scale 40 GB, and Enterprise 60 GB.
string
required
The language to translate the content into. Must be lowercase.Allowed values (70+): afrikaans, albanian, amharic, arabic, armenian, assamese, azerbaijani, basque, belarusian, bengali, bosnian, bulgarian, catalan, croatian, czech, danish, dutch, english, british english, estonian, finnish, french, french canadian, galician, german, greek, gujarati, hebrew, hindi, hungarian, icelandic, indonesian, irish, italian, japanese, kannada, kazakh, khmer, korean, lao, latvian, lithuanian, macedonian, malay, malayalam, mandarin, marathi, mongolian, nepali, norwegian, persian, polish, portuguese, brazilian portuguese, pt_brazil, punjabi, romanian, russian, serbian, slovak, slovenian, spanish, swahili, swedish, tagalog, tamil, telugu, thai, turkish, ukrainian, urdu, vietnamese, welsh, yoruba, zulu
string
The source language of the content using ISO language codes (e.g., en, es, fr, de, ja, zh).
Strongly recommended: Leave this empty for auto-detection.Only provide this parameter if you are 100% certain the language code is correct and in valid ISO format. Incorrect language codes will cause transcription failures. Our auto-detection supports 80+ languages and is highly accurate.
Default: auto-detect
string
A custom name for the project. Useful for identifying projects in your dashboard.Default: The project ID will be used if not provided.
string
An https endpoint that receives the webhook events for this project, overriding the endpoint configured on your account.Default: The account webhook endpoint, when one is configured.
string
auto-detect or an integer from 1 through 32. A known speaker count can improve diarization.Default: auto-detect
string
A JSON string array of request-specific names, brands, acronyms, or specialist terms. These terms are merged with saved account or team vocabulary.
boolean
Remove common filler words from the source transcript before translation.Default: true
string
An existing source-language SRT transcript. originalLanguage must be explicit when this field is supplied.
string
The final target-language SRT, written by you. When supplied, VoiceCheap skips its translation engine and only generates the voices and mixes the output from this text. See Dub-only mode for the alignment rules. Maximum 1,000,000 characters.
boolean
Whether to preserve background audio in the output.When enabled, keeps background music, ambience, laughs, claps, and crowd sounds while removing only the original voice (stem separation). Turn off if your source has no background audio.Default: true
boolean
Keep the original speaker quietly underneath the translated voice.Default: false
number
Original-voice volume from 1 through 70 when keepOriginalVoice is enabled.Default: 30
string
Voice isolation mode when keepBackgroundMusic is enabled. Controls the quality and characteristics of voice separation.
Preserves the natural characteristics of the recording environment:
  • Maintains a sound closer to the original recording
  • Preserves environmental characteristics
Recommended for: Content where the authenticity of the environment is important, such as outdoor vlogs, documentaries, or content where the sound ambiance is an integral part of the experience.
This option may create artifacts or unexpected effects in some cases due to the preservation of background elements.
Allowed values: studio, realisticDefault: studio
boolean
Whether to generate subtitles for the translated video.When enabled, adds clean black-and-white subtitles. Use subtitlesSource to choose original (source language) or translated (target language) text. Subtitles are automatically synced for readability.Default: false
string
Choose the subtitle text source when subtitles is enabled.Allowed values: translated, originalDefault: translatedNote: If original is selected but the original transcription is unavailable, subtitles fall back to translated.
string
Trigger lip-sync processing after translation completes.
  • standard = Lip Sync
  • pro = Lip Sync Pro
  • studio = Lip Sync Studio
Premium modes enforce their normal plan, duration, and credit requirements.Default: omit the field to skip lip sync.
boolean
Enable active-speaker detection for the requested lip-sync run.Default: false
boolean
Legacy lip-sync selector retained for backward compatibility.
  • false = Standard lip-sync (4 minutes of credits per 1 minute of video)
  • true = Lip Sync Pro (9 minutes of credits per 1 minute of video)
Lip Sync Pro is available starting on the Creator plan.
Max duration: 180 minutes per video.Latency: Lip-sync processing typically adds 2x-4x the original video duration.
Lip-sync completion and failure emails are not sent for API-triggered requests. Use the status endpoint to track progress.
Default: not enabled (omit the field to skip lip-sync)Form-data: Send boolean values as true or false strings (e.g., -F "lipsyncPro=false").
Do not combine lipsyncPro with a conflicting lipSyncMode.
string
Voice strategy: cloning or custom.Default: cloning
string
Required when voiceMode is custom. Use an ID from dubbing_voices_list: a catalog voice or a custom voice saved by the authenticated account. Team billing does not grant access to another member’s saved voices.
object
Fine-tune voice cloning parameters for advanced control over the generated voice. Pass as a JSON string when using form-data. All values must be between 0 and 1 (with step of 0.01). A speakerBoost value sent by earlier integrations is still accepted but no longer has any effect.
These settings apply only when voiceMode is cloning.
Default values (balanced):
string
A JSON array of source-time ranges that should remain in the original language.
Time skips require video input and keepBackgroundMusic=true. They cannot be combined with keepOriginalVoice and cannot overlap transcript segments.

Dub-only mode (bring your own translation)

Send translatedSrt when you already have the translation and only need VoiceCheap for voice generation and mixing. In this mode:
  • No AI translation and no SmartSync rephrasing. Every cue is voiced verbatim. Saved glossary rules and custom translation instructions are not applied either, because they only run on the translation engine.
  • Timing comes from the source. Each segment keeps the start, end and speaker of the source transcript; the timecodes of your SRT are only used to match cues to segments. Generated speech is stretched or compressed to fit the segment window without rewording it.
  • Same credits as a translation. The run is billed exactly like a standard translation of the same media.
  • Voice, background, subtitles and lip-sync options apply unchanged. voiceMode, keepBackgroundMusic, subtitles, lipSyncMode and the other dubbing options behave as documented above.
The response message confirms the mode, and the translated version reports dubbingMode: "dub-only" in Get Project Details.

Alignment rules

Alignment problems in timestamps mode are known only after transcription and are reported asynchronously. The status endpoint returns HTTP 200 with status: "failed" and an error containing code and message; the project.translation.failed webhook carries the same code and message. TRANSLATED_SRT_UNMATCHED_CUES names unmatched cue numbers in the message, while TRANSLATED_SRT_MISSING_SEGMENTS names segment indexes without a cue. These responses do not include structured details. For a deterministic mapping, send sourceSrt with translatedSrt, or create the project with Create Project, export its transcript, translate it cue by cue, and call Dub Project.

Checking the pacing

Long sentences must be sped up to fit their segment. Export the translated transcript with Export Project Transcript: each translated segment carries finalSpeedFactor, the ratio between the generated speech and the segment window before the final tempo fit. Shorten the cues that end up above roughly 1.3, then run the dub again with the revised SRT.
translatedSrt is also accepted on the JSON endpoint Dub Project, which dubs an existing project that has already been transcribed, without uploading the media again.

Response

boolean
required
Always true for successful requests
string
required
A human-readable message describing the result
string
required
The unique identifier for the created translation project. Use this ID to check status.
number
required
Rough processing estimate in minutes. The current estimate is five minutes of processing per started minute of source media.

Examples

Saved glossary rules and custom translation instructions from the effective account or team are applied automatically.

Response Example

Errors