Start Translation
Translation
Start Translation
Upload a video or audio file and start a new translation project
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.Concurrency Limit
You can run up to 10 translations at the same time per account. If 10 translations are already in progress, new requests returnCONCURRENT_TRANSLATION_LIMIT_REACHED (HTTP 429).
Request
This endpoint acceptsmultipart/form-data with a file upload.
Headers
Your VoiceCheap API key. Get one from app.voicecheap.ai/page-api.
Body Parameters
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/aacMaximum file size: 20 GBThe 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, punjabi, romanian, russian, serbian, slovak, slovenian, spanish, swahili, swedish, tagalog, tamil, telugu, thai, turkish, ukrainian, urdu, vietnamese, welsh, yoruba, zuluThe source language of the content using ISO language codes (e.g.,
en, es, fr, de, ja, zh).Default: auto-detectA custom name for the project. Useful for identifying projects in your dashboard.Default: The project ID will be used if not provided.
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:
trueVoice isolation mode when
Allowed values:
keepBackgroundMusic is enabled. Controls the quality and characteristics of voice separation.Studio (Recommended)
Studio (Recommended)
Our default voice processing, designed for professional audio quality:
- Removes echoes and reverberations
- Cleans technical imperfections
- Produces a clear and crisp voice
Realistic
Realistic
Preserves the natural characteristics of the recording environment:
- Maintains a sound closer to the original recording
- Preserves environmental characteristics
studio, realisticDefault: studioWhether to generate subtitles for the translated video.When enabled, adds clean Netflix-style black and white subtitles. Use
subtitlesSource to choose original (source language) or translated (target language) text. Subtitles are automatically synced for optimal readability.Note: Burned-in subtitles require FFmpeg with the subtitles filter (libass). If unavailable, the API falls back to embedding a subtitle track instead of hard-burned styling.Default: falseChoose 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.Trigger lip-sync processing after translation completes.Default: not enabled (omit the field to skip lip-sync)Form-data: Send boolean values as
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 completion and failure emails are not sent for API-triggered requests. Use the status endpoint to
track progress.
true or false strings (e.g., -F "lipsyncPro=false").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).Default values (balanced):Recommended for avoiding accent reproduction:
API translations always use voice cloning. These settings tune the generated cloned voice for this API request.
Response
Always
true for successful requestsA human-readable message describing the result
The unique identifier for the created translation project. Use this ID to check status.
Rough processing estimate in minutes. The current estimate is five minutes of processing per started minute of source media.
Examples
subtitlesSource accepts translated or original to control which text is used for subtitles. The public API does not currently expose
app-only controls such as keeping the original voice bed, custom voice IDs, or translation time skips.Response Example
Errors
| Status | Code | Description |
|---|---|---|
| 400 | FILE_REQUIRED | No file was uploaded with the request |
| 400 | INVALID_FILE_TYPE | The uploaded file type is not supported |
| 400 | DURATION_DETECTION_FAILED | Could not detect the duration of the uploaded file |
| 400 | INVALID_BOOLEAN_VALUE | A boolean parameter has an invalid value (use “true” or “false”) |
| 400 | INVALID_JSON_FORMAT | The voiceCloningSettings JSON is malformed |
| 400 | LIPSYNC_VIDEO_TOO_LONG | Lip-sync was requested for media longer than the supported duration |
| 401 | MISSING_API_KEY | API key is required |
| 401 | INVALID_API_KEY_FORMAT | API key must start with vc_ |
| 401 | INVALID_API_KEY | The provided API key is invalid |
| 403 | API_ACCESS_REQUIRED | API access is required for this account |
| 403 | SUBSCRIPTION_REQUIRED | API access requires a paid subscription |
| 403 | INSUFFICIENT_CREDITS | Not enough credits to process this file |
| 429 | RATE_LIMIT_EXCEEDED | Too many requests (limit: 10 requests per minute) |
| 429 | CONCURRENT_TRANSLATION_LIMIT_REACHED | Too many translations in progress (limit: 10 concurrent translations) |

