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

# Créer un projet

> Téléchargez un fichier vidéo ou audio et créez un projet sans lancer la traduction

# Créer un projet

Créez un nouveau projet en téléchargeant un fichier vidéo ou audio. L'API lance uniquement la transcription (pas de traduction ni de synchronisation labiale). Vous pourrez ouvrir le projet dans l'application VoiceCheap plus tard pour déclencher la traduction, ou utiliser [Obtenir les détails du projet](/docs/fr/api-reference/project-details) pour inspecter l'état du projet.

## Limite de concurrence

Ce point de terminaison partage la même limite de concurrence que `POST /v1/translate` : jusqu'à 10 traductions en cours par compte. Si la limite est atteinte, les requêtes renvoient `CONCURRENT_TRANSLATION_LIMIT_REACHED` (HTTP 429).

## Requête

Ce point de terminaison accepte `multipart/form-data` avec un téléchargement de fichier.

### En-têtes

<ParamField header="x-api-key" type="string" required>
  Votre clé API VoiceCheap. Obtenez-en une sur [app.voicecheap.ai/page-api](https://app.voicecheap.ai/page-api).
</ParamField>

### Paramètres du corps

<ParamField body="file" type="file" required>
  Le fichier vidéo ou audio à télécharger.

  **Formats vidéo pris en charge :** `video/mp4`, `video/quicktime`, `video/x-matroska`, `video/webm`, `video/mpeg`

  **Formats audio pris en charge :** `audio/mpeg`, `audio/wav`, `audio/mp4`, `audio/x-m4a`, `audio/flac`, `audio/ogg`, `audio/aac`, `audio/webm`

  **Taille de fichier maximale par forfait :** Beginner 5 Go, Starter 10 Go, Creator 20 Go, Pro 30 Go, Scale 40 Go, et Enterprise 60 Go.
</ParamField>

<ParamField body="targetLanguage" type="string" required>
  La langue cible à associer à ce projet. Doit être en minuscules.

  **Valeurs autorisées (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">
  La langue source du contenu utilisant les codes de langue ISO (par ex. `en`, `es`, `fr`, `de`, `ja`, `zh`).

  <Warning>
    **Fortement recommandé : laissez ce champ vide pour la détection automatique.**

    Ne fournissez ce paramètre que si vous êtes sûr à 100 % que le code de langue est correct et au format ISO valide. Des codes de langue incorrects entraîneront des échecs de transcription. Notre détection automatique prend en charge plus de 80 langues et est très précise.
  </Warning>

  **Par défaut :** `auto-detect`
</ParamField>

<ParamField body="projectName" type="string">
  Un nom personnalisé pour le projet. Utile pour identifier les projets dans votre tableau de bord.

  **Par défaut :** L'ID du projet sera utilisé s'il n'est pas fourni.
</ParamField>

<ParamField body="webhookUrl" type="string">
  Un point de terminaison https qui reçoit le [événements webhook](/docs/fr/api-reference/webhooks) pour ce projet,
  remplaçant le point de terminaison configuré sur votre compte.

  **Par défaut :** Le point de terminaison webhook du compte, lorsqu'il est configuré.
</ParamField>

<ParamField body="numberOfSpeakers" type="string">
  `auto-detect` ou un entier de `1` à `32`. Fournir le nombre de locuteurs connu peut améliorer la diarisation.

  **Par défaut :** `auto-detect`
</ParamField>

<ParamField body="brandVocabulary" type="string">
  Un tableau de chaînes JSON contenant des noms, marques, acronymes ou termes spécialisés spécifiques à la requête. Ces termes sont fusionnés avec le glossaire enregistré du compte ou de l'équipe.

  ```json theme={null}
  ["VoiceCheap", "SmartSync", "ITC Global"]
  ```
</ParamField>

<ParamField body="removeFillerWords" type="boolean">
  Supprimez les mots de remplissage courants pendant la transcription.

  **Par défaut :** `true`
</ParamField>

<ParamField body="sourceSrt" type="string">
  Une transcription SRT existante dans la langue source. Lorsqu'il est fourni, `originalLanguage` doit être un code de langue explicite plutôt que `auto-detect`.
</ParamField>

Ce point de terminaison sert uniquement à la création de projet et au lancement de la transcription. Les options de traduction telles que les sous-titres, le clonage vocal, l'isolation vocale et l'audio d’arrière-plan sont gérées par `POST /v1/translate`.

## Exemple de requête

```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" \
  -F "numberOfSpeakers=2" \
  -F 'brandVocabulary=["VoiceCheap","SmartSync"]' \
  -F "removeFillerWords=true"
```

## Exemple de réponse

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

## Erreurs

| Statut | Code                                   | Description                                                                            |
| ------ | -------------------------------------- | -------------------------------------------------------------------------------------- |
| 400    | `FILE_REQUIRED`                        | Aucun fichier n'a été téléchargé avec la requête                                       |
| 400    | `INVALID_FILE_TYPE`                    | Le type de fichier téléchargé n'est pas pris en charge                                 |
| 400    | `DURATION_DETECTION_FAILED`            | Impossible de détecter la durée du fichier téléchargé                                  |
| 400    | `INVALID_MULTIPART_REQUEST`            | Les données de formulaire multipart sont mal formées ou dépassent les limites de champ |
| 400    | `INVALID_BRAND_VOCABULARY`             | Une entrée de glossaire spécifique à la requête est invalide                           |
| 400    | `INVALID_SOURCE_SRT`                   | Le fichier SRT source fourni est mal formé                                             |
| 400    | `SOURCE_LANGUAGE_REQUIRED_FOR_SRT`     | sourceSrt nécessite un originalLanguage explicite                                      |
| 400    | `VIDEO_TOO_LONG`                       | La durée du média dépasse la limite du forfait de l'utilisateur                        |
| 413    | `FILE_TOO_LARGE`                       | Le fichier téléchargé dépasse la limite du forfait de l'utilisateur                    |
| 401    | `MISSING_API_KEY`                      | La clé API est requise                                                                 |
| 401    | `INVALID_API_KEY_FORMAT`               | La clé API doit commencer par `vc_`                                                    |
| 401    | `INVALID_API_KEY`                      | La clé API fournie est invalide                                                        |
| 403    | `API_ACCESS_REQUIRED`                  | L'accès à l'API est requis pour ce compte                                              |
| 403    | `SUBSCRIPTION_REQUIRED`                | L'accès à l'API nécessite un abonnement payant                                         |
| 429    | `RATE_LIMIT_EXCEEDED`                  | Trop de requêtes (limite : 10 requêtes par minute)                                     |
| 429    | `CONCURRENT_TRANSLATION_LIMIT_REACHED` | Trop de traductions en cours (limite : 10 traductions simultanées)                     |
| 500    | `INTERNAL_ERROR`                       | Erreur serveur inattendue                                                              |
