Skip to main content
GET
https://api.voicecheap.ai
/
v1
/
translate
/
{projectId}
/
status
Get Translation Status
curl --request GET \
  --url https://api.voicecheap.ai/v1/translate/{projectId}/status \
  --header 'x-api-key: <x-api-key>'
{
  "projectId": "<string>",
  "projectName": "<string>",
  "originalVideoUrl": "<string>",
  "originalLanguage": "<string>",
  "targetLanguage": "<string>",
  "duration": 123,
  "createdAt": 123,
  "status": "<string>",
  "translatedVideoUrl": "<string>",
  "translatedAudioUrl": "<string>",
  "error": {
    "error.code": "<string>",
    "error.message": "<string>"
  }
}

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
status
string
required
Current status of the translation: processing, success, or failed

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

curl -X GET "https://api.voicecheap.ai/v1/translate/abc123-def456-ghi789/status" \
  -H "x-api-key: vc_your-api-key"

Response Examples

Processing Status

{
  "projectId": "abc123-def456-ghi789",
  "projectName": "My Spanish Translation",
  "originalVideoUrl": "https://storage.voicecheap.ai/...",
  "originalLanguage": "en",
  "targetLanguage": "spanish",
  "duration": 125.5,
  "createdAt": 1702234567890,
  "status": "processing"
}

Success Status

{
  "projectId": "abc123-def456-ghi789",
  "projectName": "My Spanish Translation",
  "originalVideoUrl": "https://storage.voicecheap.ai/...",
  "originalLanguage": "en",
  "targetLanguage": "spanish",
  "duration": 125.5,
  "createdAt": 1702234567890,
  "status": "success",
  "translatedVideoUrl": "https://storage.voicecheap.ai/translated/...",
  "translatedAudioUrl": "https://storage.voicecheap.ai/audio/..."
}

Failed Status

{
  "projectId": "abc123-def456-ghi789",
  "projectName": "My Spanish Translation",
  "originalVideoUrl": "https://storage.voicecheap.ai/...",
  "originalLanguage": "en",
  "targetLanguage": "spanish",
  "duration": 125.5,
  "createdAt": 1702234567890,
  "status": "failed",
  "error": {
    "code": "TRANSCRIPTION_FAILED",
    "message": "Could not transcribe the audio. Please ensure the audio quality is sufficient."
  }
}

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

StatusCodeDescription
401INVALID_API_KEYThe provided API key is invalid
403FORBIDDENYou don’t have access to this project
404PROJECT_NOT_FOUNDThe specified project does not exist
429RATE_LIMIT_EXCEEDEDToo many requests (limit: 30 requests per minute)