Skip to main content
Create Project
curl --request POST \
  --url https://api.voicecheap.ai/v1/projects \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <x-api-key>' \
  --data '
{
  "targetLanguage": "<string>",
  "originalLanguage": "<string>",
  "projectName": "<string>"
}
'

Create Project

Create a new project by uploading a video or audio file. The API starts transcription only (no translation or lip sync). You can open the project in the VoiceCheap app later to trigger translation.

Concurrency Limit

This endpoint shares the same concurrency limit as POST /v1/translate: up to 10 in-progress translations per account. If the limit is reached, requests return CONCURRENT_TRANSLATION_LIMIT_REACHED (HTTP 429).

Request

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

Headers

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

Body Parameters

file
file
required
The video or audio file to upload.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 GB
targetLanguage
string
required
The target language to associate with this project. Must be lowercase.Allowed values (70+): afrikaans, albanian, amharic, arabic, armenian, assamese, azerbaijani, basque, belarusian, bengali, bosnian, bulgarian, catalan, croatian, czech, danish, dutch, english, american 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, zulu
originalLanguage
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
projectName
string
A custom name for the project. Useful for identifying projects in your dashboard.Default: The project ID will be used if not provided.
This endpoint is only for project creation + transcription start. Translation options such as subtitles, voice cloning, voice isolation, and background music are handled by POST /v1/translate.

Example Request

curl -X POST "https://api.voicecheap.ai/v1/projects" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "file=@/path/to/video.mp4" \
  -F "targetLanguage=french" \
  -F "projectName=Launch Demo"

Example Response

{
  "success": true,
  "message": "Project created. Transcription started.",
  "projectId": "project_123",
  "projectName": "Launch Demo",
  "targetLanguage": "french",
  "status": "processing"
}

Errors

StatusCodeDescription
400FILE_REQUIREDNo file was uploaded with the request
400INVALID_FILE_TYPEThe uploaded file type is not supported
400DURATION_DETECTION_FAILEDCould not detect the duration of the uploaded file
400VIDEO_TOO_LONGThe media duration exceeds the user’s plan limit
401MISSING_API_KEYAPI key is required
401INVALID_API_KEYThe provided API key is invalid
403API_ACCESS_REQUIREDAPI access is required for this account
403SUBSCRIPTION_REQUIREDAPI access requires a paid subscription
429RATE_LIMIT_EXCEEDEDToo many requests (limit: 10 requests per minute)
429CONCURRENT_TRANSLATION_LIMIT_REACHEDToo many translations in progress (limit: 10 concurrent translations)
500INTERNAL_ERRORUnexpected server error