> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.voicecheap.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Project

> Upload a video or audio file and create a project without starting translation

# 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, or use [Get Project Details](/docs/api-reference/project-details) to inspect the project state.

## 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

<ParamField header="x-api-key" type="string" required>
  Your VoiceCheap API key. Get one from [app.voicecheap.ai/page-api](https://app.voicecheap.ai/page-api).
</ParamField>

### Body Parameters

<ParamField body="file" type="file" required>
  The video or audio file to upload.

  **Supported video formats:** `video/mp4`, `video/quicktime`, `video/x-matroska`, `video/webm`, `video/mpeg`

  **Supported audio formats:** `audio/mpeg`, `audio/wav`, `audio/mp4`, `audio/x-m4a`, `audio/flac`, `audio/ogg`, `audio/aac`

  **Maximum file size:** 20 GB
</ParamField>

<ParamField body="targetLanguage" type="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`, `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`
</ParamField>

<ParamField body="originalLanguage" type="string">
  The source language of the content using ISO language codes (e.g., `en`, `es`, `fr`, `de`, `ja`, `zh`).

  <Warning>
    **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.
  </Warning>

  **Default:** `auto-detect`
</ParamField>

<ParamField body="projectName" type="string">
  A custom name for the project. Useful for identifying projects in your dashboard.

  **Default:** The project ID will be used if not provided.
</ParamField>

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

```bash theme={null}
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

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

## 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    | `VIDEO_TOO_LONG`                       | The media duration exceeds the user's plan limit                      |
| 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                               |
| 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) |
| 500    | `INTERNAL_ERROR`                       | Unexpected server error                                               |
