Skip to main content

Introduction

Expand your video content to global audiences by translating videos into 40+ languages with natural-sounding AI voiceovers and synchronized subtitles. No need to re-record or hire translators - simply provide your video URL and target language.

Key Features

40+ Languages

Support for major European, Asian, and other languages

AI Voiceover

Natural-sounding voices matching original tone

Auto Subtitles

Synchronized subtitles generated automatically

Fast Processing

10-20 minutes average turnaround time

Workflow Overview

Video translation is a 4-step asynchronous process:
1

Get Resources

Get supported languages and available voices
2

Submit Translation

Submit your video URL, target language, and voice selection
3

Processing

AI translates audio and generates voiceover (10-20 min)
4

Retrieve Result

Get translated video and subtitle files
Video Duration Limit: Videos must be between 0-3 minutes in length. Processing time: 10-20 minutes for typical videos (varies by length). Use webhooks or polling to get results.

Quick Start

EndpointPurposeDocumentation
GET /v2/video_translate/target_languagesGet supported languagesAPI Reference
GET /v2/voicesGet available voices (filter by language)API Reference
POST /v2/video_translate/Submit translation taskAPI Reference
GET /v2/video_translate/{video_translate_id}Check translation statusAPI Reference

Key Parameters

ParameterTypeRequiredDescription
video_urlstringURL of the video to translate (must be publicly accessible, 0-3 minutes duration)
output_languagestringTarget language name (e.g., “spanish”, “french”, “japanese”)
output_voicestringSpecific voice ID for target language (auto-selected if omitted)
add_subtitlesbooleanGenerate subtitle file (.srt) (default: true)
titlestringTitle for the translated video
translate_audio_onlybooleanTranslate audio only without lip sync (default: false)
enable_dynamic_durationbooleanEnable dynamic duration adjustment (default: false)
callback_urlstringCallback URL for status notifications
Video Requirements:
  • Video duration must be 0-3 minutes
  • Video URL must be publicly accessible without authentication
  • Supported formats: MP4, MOV, AVI
Use the /target_languages endpoint to get the complete up-to-date list. Language names are in lowercase English (e.g., “spanish” not “es”).

Code Examples

Step 1: Get Supported Languages

List all available target languages:
curl --request GET \
  --url 'https://api.jogg.ai/v2/video_translate/target_languages' \
  --header 'x-api-key: YOUR_API_KEY'
Response:
{
  "code": 0,
  "msg": "Success",
  "data": {
    "languages": ["spanish", "french", "german", "japanese", "chinese", "korean"]
  }
}

Step 2: Get Available Voices for Target Language

Get voices available for your target language:
curl --request GET \
  --url 'https://api.jogg.ai/v2/voices?language=spanish' \
  --header 'x-api-key: YOUR_API_KEY'
Response:
{
  "code": 0,
  "msg": "Success",
  "data": {
    "voices": [
      {
        "name": "Elvira",
        "voice_id": "es-ES-ElviraNeural",
        "language": "spanish",
        "gender": "female",
        "age": "young",
        "accent": "spanish",
        "audio_url": "https://res.jogg.ai/voice-sample.mp3"
      },
      {
        "name": "Alvaro",
        "voice_id": "es-ES-AlvaroNeural",
        "language": "spanish",
        "gender": "male",
        "age": "young",
        "accent": "spanish",
        "audio_url": "https://res.jogg.ai/voice-sample.mp3"
      }
    ],
    "has_more": false
  }
}
Save the voice_id from the response to use as output_voice in translation request. You can filter by gender and age if needed.

Step 3: Submit Translation Task

Submit your video for translation:
curl --request POST \
  --url 'https://api.jogg.ai/v2/video_translate/' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "video_url": "https://example.com/original-video.mp4",
    "output_language": "spanish",
    "output_voice": "es-ES-ElviraNeural",
    "add_subtitles": true
  }'
Response:
{
  "code": 0,
  "msg": "Success",
  "data": {
    "video_translate_id": "vt_123456"
  }
}
Save the video_translate_id to check status later!

Step 4: Check Translation Status

Poll to check if translation is ready:
curl --request GET \
  --url 'https://api.jogg.ai/v2/video_translate/vt_123456' \
  --header 'x-api-key: YOUR_API_KEY'
Response (Processing):
{
  "code": 0,
  "msg": "Success",
  "data": {
    "video_translate_id": "vt_123456",
    "title": "Translated Video Title",
    "status": "processing"
  }
}
Response (Completed):
{
  "code": 0,
  "msg": "Success",
  "data": {
    "video_translate_id": "vt_123456",
    "title": "Translated Video Title",
    "status": "completed",
    "url": "https://res.jogg.ai/translated_video.mp4",
    "subtitle_url": "https://res.jogg.ai/subtitle.srt"
  }
}
Status Values:
StatusDescriptionAction
pendingTask queuedWait for processing
processingTranslation in progressContinue polling (every 10s)
completedTranslation finishedDownload video and subtitles
failedTranslation failedCheck error message
Instead of polling, use [Webhooks](/api-reference/v2/API Documentation/WebhookIntegration) to get notified instantly when translations are ready!

Use Case Examples

Translate product demos for international markets:
  • Get voices for target market language
  • Submit translation with appropriate voice
  • Generate localized product videos
  • Reach global customers effectively
Translate training videos for global teams:
  • Batch translate to multiple languages
  • Use consistent voice across languages
  • Enable subtitles for better comprehension
  • Scale training content globally
Localize marketing videos for different regions:
  • Translate to regional languages
  • Choose voices matching brand identity
  • Maintain message consistency
  • Reduce production costs
Create multilingual support videos:
  • Translate FAQ and tutorial videos
  • Use clear, professional voices
  • Enable subtitles for accessibility
  • Improve customer experience globally

Tips for Best Results

Source Video Quality:
  • Use clear audio with minimal background noise
  • Moderate speaking pace (not too fast)
  • Standard accent and clear pronunciation
  • Avoid complex jargon, idioms, or slang
  • Ensure speech track is clearly audible
Voice Selection:
  • Match gender and approximate age to original
  • Consider formal vs casual tone
  • Test different voices with short clips
  • Use /voices?language={language} to preview available voices
  • Choose appropriate output_voice based on preferences
Subtitle Usage:
  • ✅ Improves comprehension accuracy
  • ✅ Helps viewers in noisy environments
  • ✅ Accessibility for hearing impaired
  • ✅ Aids language learning
  • ✅ Enabled by default with add_subtitles: true
Batch Processing:
  • Submit all tasks at once (parallel processing)
  • Use descriptive task tracking
  • Implement webhook for completion notification
  • Handle failures gracefully (retry logic)
  • Monitor API rate limits

Troubleshooting

Issue: Processing exceeds expected timeSolutions:
  • Video length impacts processing time (2-5 min per minute of video)
  • Verify video URL is publicly accessible
  • Check video file size (very large files take longer)
  • Check current API status for delays
  • Use webhook to get notified when complete
Issue: Translated audio doesn’t sound naturalSolutions:
  • Try different output_voice values for target language
  • Ensure original audio is clear (low background noise)
  • Check if original speech pace is too fast
  • Enable subtitles for better context
  • Test with high-quality source video first
Error: Video URL not accessibleSolutions:
  • Ensure URL is publicly accessible (no authentication)
  • Check CORS/download restrictions
  • Verify video format is supported (MP4, MOV, AVI)
  • Try uploading to a CDN first
  • Check URL is not expired or temporary
Issue: Translated content doesn’t match originalSolutions:
  • Original audio may not be clear enough
  • Check for heavy accents or dialects
  • Avoid technical jargon or domain-specific terms
  • Consider adding subtitles to original first
  • Test with simpler, clearer speech