Skip to main content
Get Translation Status

Get Translation Status

Retrieve the current status of a translation project. Use this endpoint to poll for progress and get the translated video URL when processing is complete.

Request

Headers

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

Path Parameters

projectId
string
required
The unique identifier of the translation project returned from the Start Translation endpoint.

Response

The response structure varies based on the translation status.

Common Fields

projectId
string
required
The unique identifier of the project
projectName
string
required
The name of the project
originalVideoUrl
string
required
URL to the original uploaded video/audio file
originalLanguage
string
required
The detected or specified original language
targetLanguage
string
required
The target language for translation
duration
number
required
Duration of the content in seconds
createdAt
number
required
Unix timestamp when the project was created
workId
string
Translation work identifier for the currently reported translated version.
translatedVersionId
string
Translated version identifier for the currently reported translated version.
actualProgressStep
string
Current project step. During creation/transcription this reflects those steps (e.g. downloading_content, content_validation, transcription_processing). Once dubbing starts, it may switch to the active dubbing step (e.g. smart_sync, audio_assembling) so status: processing does not pair with actualProgressStep: done.
translationAndTranscriptionProgress
number
Approximate progress percentage for project creation/transcription (0-100)
dubbingStep
string
Current dubbing step for the target language (e.g. smart_sync, audio_enhancement, video_upload)
dubbingProgress
number
Approximate progress percentage for dubbing (0-100)
status
string
required
Current status of the translation: processing, success, or failed

Lip Sync Fields

When lip-sync was requested, the response includes an additional lipSync object:
lipSync
object
Lip-sync status and output details (only present when lip-sync was requested)
When lip-sync is requested, the translation stays in processing until lipSync.status is COMPLETED. If lip-sync fails, the status becomes failed and the error.code is LIPSYNC_FAILED. When lip-sync succeeds, read the lip-synced asset from lipSync.videoUrl; translatedVideoUrl is the translated video output before the lip-sync overlay.
Use GET /v1/projects/{projectId} when you need the full translated version history or complete lip-sync history.

Success Response Fields

When status is success, the following additional fields are included:
translatedVideoUrl
string
URL to download the translated video file
translatedAudioUrl
string
URL to download the translated audio file separately

Failed Response Fields

When status is failed, the following additional field is included:
error
object
Error details

Examples

Response Examples

Processing Status

Processing Status (Lip Sync Requested)

Success Status

Success Status (Lip Sync Completed)

Failed Status

Polling Best Practices

Recommended polling interval: 10-30 secondsTranslation time varies based on video length and complexity. For a typical 2-minute video, expect 2-5 minutes of processing time.
Rate Limit: 30 requests per minuteAvoid polling more frequently than once every 2 seconds to stay within rate limits.

Errors