> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Erreurs

## Erreurs d’API

ElevenLabs utilise des codes d’état HTTP standard pour indiquer si une requête a réussi ou échoué. De plus, toutes les requêtes API renvoient un objet JSON doté d’une propriété `detail` qui contient des informations sur l’erreur.

En règle générale, un code d’état HTTP `200` indique qu’une requête a réussi. Un code `4xx` indique un problème dans la requête, comme un paramètre non valide ou un champ obligatoire manquant. Un code d’état HTTP `500` indique un problème sur les serveurs d’ElevenLabs, ce qui devrait être rare.

### Propriétés des erreurs

| Propriété    | Description                                                                                              |
| ------------ | -------------------------------------------------------------------------------------------------------- |
| `type`       | Le type d’erreur survenue. Consultez le tableau ci-dessous pour connaître les valeurs possibles.         |
| `code`       | Le code de l’erreur. Plus précis que le type, il permet d’en déterminer la cause.                        |
| `message`    | Le message d’erreur. Il fournit davantage de détails sur l’erreur.                                       |
| `status`     | L’état de l’erreur. Ce champ historique n’est plus utilisé, utilisez plutôt la propriété `code`.         |
| `request_id` | L’ID de requête de l’erreur. Cet identifiant unique permet de résoudre le problème.                      |
| `param`      | Le paramètre à l’origine de l’erreur. En cas d’erreur de validation, il indique le paramètre non valide. |

### Exemple de réponse d’erreur

Voici la réponse d’une requête API ayant utilisé un ID de modèle incorrect :

```json
{
  "detail": {
    "type": "validation_error",
    "code": "invalid_parameters",
    "message": "The 'keyterms' parameter is only supported with the 'scribe_v2' model. You specified 'scribe_v1'.",
    "status": "invalid_parameters",
    "request_id": "3c807fc4c3a1705f9638ecc764a91c01",
    "param": "keyterms"
  }
}
```

Les propriétés de l’erreur indiquent qu’il s’agit d’une erreur de validation et que son code est `invalid_parameters`. Le message fournit davantage de détails, tandis que `request_id` est un identifiant unique de la requête permettant de résoudre le problème. La propriété `param` indique le paramètre à l’origine de l’erreur.

### Gestion des erreurs dans les SDK

Les SDK ElevenLabs fournissent des classes d’erreur typées qui vous donnent accès aux détails de l’erreur.

```python
from elevenlabs import ElevenLabs
from elevenlabs.core import ApiError

elevenlabs = ElevenLabs()

try:
    audio = elevenlabs.text_to_speech.convert(
        voice_id="invalid-voice-id",
        model_id="eleven_v4",
        text="Hello, world!",
    )
except ApiError as e:
    print(f"Status code: {e.status_code}")

    # Access the error body
    if e.body and "detail" in e.body:
        detail = e.body["detail"]
        print(f"Error type: {detail.get('type')}")
        print(f"Error code: {detail.get('code')}")
        print(f"Message: {detail.get('message')}")
        print(f"Request ID: {detail.get('request_id')}")

        # Handle specific error types
        if detail.get("type") == "rate_limit_error":
            print("Rate limited - implement exponential backoff")
        elif detail.get("type") == "authentication_error":
            print("Check your API key")
```

```typescript
import { ElevenLabsClient, ElevenLabsError } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

try {
  const audio = await elevenlabs.textToSpeech.convert("invalid-voice-id", {
    text: "Hello, world!",
    modelId: "eleven_v4",
  });
} catch (error) {
  if (error instanceof ElevenLabsError) {
    console.log(`Status code: ${error.statusCode}`);

    // Access the error body
    const detail = (error.body as any)?.detail;
    if (detail) {
      console.log(`Error type: ${detail.type}`);
      console.log(`Error code: ${detail.code}`);
      console.log(`Message: ${detail.message}`);
      console.log(`Request ID: ${detail.request_id}`);

      // Handle specific error types
      if (detail.type === "rate_limit_error") {
        console.log("Rate limited - implement exponential backoff");
      } else if (detail.type === "authentication_error") {
        console.log("Check your API key");
      }
    }
  }
}
```

Si vous ne parvenez pas à résoudre l’erreur, envoyez un email au support à l’adresse [support@elevenlabs.io](mailto:support@elevenlabs.io) avec le `request_id` de la réponse d’erreur, le message d’erreur complet et les étapes permettant de reproduire le problème.

#### Limitation de débit et requêtes simultanées

Si vous recevez un code d’état HTTP 429, cela signifie que vous avez soit effectué trop de requêtes sur une courte période et dépassé la limite de débit de l’endpoint API, soit dépassé la limite de requêtes simultanées de cet endpoint. Le `code` de l’erreur sera respectivement `rate_limit_exceeded` ou `concurrent_limit_exceeded`.

En cas de limitation de débit, implémentez un backoff exponentiel dans votre code lorsqu’une erreur 429 est reçue. Cela consiste à ajouter un délai avant de réessayer la requête.

En cas de limite de requêtes simultanées, attendez que les requêtes en cours soient terminées avant d’en effectuer de nouvelles. Consultez la section [Requêtes simultanées et priorité](/docs/fr/overview/models#concurrency-and-priority) pour en savoir plus.

### Types d’erreur

Une erreur comporte une propriété `type` indiquant le type d’erreur survenue. Consultez le tableau ci-dessous pour connaître les valeurs possibles.

| Type                   | Description                                                                    | Code d’état HTTP |
| ---------------------- | ------------------------------------------------------------------------------ | ---------------- |
| `validation_error`     | La requête contient des valeurs de paramètres non valides.                     | 400              |
| `invalid_request`      | La structure de la requête est mal formée ou des champs obligatoires manquent. | 400              |
| `authentication_error` | L’authentification a échoué, clé API ou jeton non valide ou manquant.          | 401              |
| `payment_required`     | L’utilisateur ne dispose pas de crédits suffisants ou un paiement est requis.  | 402              |
| `authorization_error`  | L’utilisateur authentifié ne dispose pas des autorisations requises.           | 403              |
| `not_found`            | La ressource demandée est introuvable.                                         | 404              |
| `conflict`             | La requête entre en conflit avec l’état actuel de la ressource.                | 409              |
| `rate_limit_error`     | Trop de requêtes, réessayez plus tard.                                         | 429              |
| `internal_error`       | Une erreur serveur inattendue est survenue.                                    | 500              |
| `service_unavailable`  | Le service est temporairement indisponible, ce qui devrait être rare.          | 503              |

### Codes d’erreur

<table searchable>
  <thead>
    <tr>
      <th>
        Code
      </th>

      <th>
        Type
      </th>

      <th>
        Description
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `voice_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        L’ID de voix indiqué n’existe pas. Vérifiez l’ID de voix et réessayez.
      </td>
    </tr>

    <tr>
      <td>
        `sample_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        L’échantillon vocal indiqué est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `voice_collection_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        La collection de voix indiquée n’existe pas.
      </td>
    </tr>

    <tr>
      <td>
        `user_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        L’utilisateur indiqué est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `auth_account_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        Le compte d’authentification est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `workspace_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        Le Workspace indiqué n’existe pas.
      </td>
    </tr>

    <tr>
      <td>
        `project_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        Le projet indiqué est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `history_item_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        L’élément d’historique indiqué n’existe pas.
      </td>
    </tr>

    <tr>
      <td>
        `collection_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        La collection indiquée est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `document_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        Le document indiqué n’existe pas.
      </td>
    </tr>

    <tr>
      <td>
        `file_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        Le fichier indiqué est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `conversation_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        La conversation indiquée n’existe pas.
      </td>
    </tr>

    <tr>
      <td>
        `agent_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        L’agent indiqué est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `dubbing_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        Le projet de doublage indiqué n’existe pas.
      </td>
    </tr>

    <tr>
      <td>
        `song_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        La chanson indiquée est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `read_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        La lecture indiquée est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `pronunciation_dictionary_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        Le dictionnaire de prononciation indiqué n’existe pas.
      </td>
    </tr>

    <tr>
      <td>
        `knowledge_base_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        La base de connaissances indiquée est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `phone_number_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        Le numéro de téléphone indiqué n’existe pas.
      </td>
    </tr>

    <tr>
      <td>
        `tool_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        L’outil indiqué est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `snapshot_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        L’instantané indiqué n’existe pas.
      </td>
    </tr>

    <tr>
      <td>
        `task_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        La tâche indiquée est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `model_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        Le modèle indiqué n’existe pas.
      </td>
    </tr>

    <tr>
      <td>
        `transcript_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        La transcription indiquée est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `keywords_list_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        La liste de mots-clés indiquée est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `category_not_found`
      </td>

      <td>
        `not_found`
      </td>

      <td>
        La catégorie indiquée est introuvable.
      </td>
    </tr>

    <tr>
      <td>
        `text_too_long`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Le texte fourni dépasse la longueur maximale autorisée.
      </td>
    </tr>

    <tr>
      <td>
        `text_too_short`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Le texte fourni est plus court que la longueur minimale requise.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_text`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Le texte fourni contient des caractères ou une mise en forme non valides.
      </td>
    </tr>

    <tr>
      <td>
        `empty_text`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Le champ de texte ne peut pas être vide.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_parameters`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Un ou plusieurs paramètres de requête ne sont pas valides. Consultez la propriété `param` pour connaître le
        paramètre non valide.
      </td>
    </tr>

    <tr>
      <td>
        `missing_required_field`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Un champ obligatoire est absent de la requête. Consultez la propriété `param` pour connaître le champ
        manquant.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_voice_settings`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Les paramètres vocaux contiennent des valeurs non valides. Consultez la propriété `param` pour connaître les paramètres vocaux
        non valides.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_voice_id`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Le format de l’ID de voix n’est pas valide.
      </td>
    </tr>

    <tr>
      <td>
        `unsupported_model`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Le modèle indiqué n’est pas pris en charge pour cette opération.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_audio`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        L’audio fourni n’est pas valide ou est corrompu.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_audio_format`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Le format audio indiqué n’est pas pris en charge.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_output_format`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Le format de sortie demandé n’est pas pris en charge.
      </td>
    </tr>

    <tr>
      <td>
        `audio_too_long`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        L’audio dépasse la durée maximale autorisée.
      </td>
    </tr>

    <tr>
      <td>
        `audio_too_short`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        L’audio est plus court que la durée minimale requise.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_file_type`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Ce type de fichier n’est pas pris en charge.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_page_size`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Le paramètre de taille de page est hors de la plage autorisée.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_cursor`
      </td>

      <td>
        `validation_error`
      </td>

      <td>
        Le curseur de pagination n’est pas valide ou a expiré.
      </td>
    </tr>

    <tr>
      <td>
        `bad_request`
      </td>

      <td>
        `invalid_request`
      </td>

      <td>
        Le serveur n’a pas pu interpréter la requête.
      </td>
    </tr>

    <tr>
      <td>
        `malformed_json`
      </td>

      <td>
        `invalid_request`
      </td>

      <td>
        Le corps de la requête contient du JSON non valide.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_content_type`
      </td>

      <td>
        `invalid_request`
      </td>

      <td>
        L’en-tête Content-Type est absent ou non valide.
      </td>
    </tr>

    <tr>
      <td>
        `request_too_large`
      </td>

      <td>
        `invalid_request`
      </td>

      <td>
        Le corps de la requête dépasse la taille maximale autorisée.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_api_key`
      </td>

      <td>
        `authentication_error`
      </td>

      <td>
        La clé API fournie n’est pas valide.
      </td>
    </tr>

    <tr>
      <td>
        `missing_api_key`
      </td>

      <td>
        `authentication_error`
      </td>

      <td>
        Aucune clé API n’a été fournie dans la requête.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_authorization_header`
      </td>

      <td>
        `authentication_error`
      </td>

      <td>
        Le format de l’en-tête Authorization n’est pas valide.
      </td>
    </tr>

    <tr>
      <td>
        `unauthorized`
      </td>

      <td>
        `authentication_error`
      </td>

      <td>
        Une authentification est requise pour accéder à cette ressource.
      </td>
    </tr>

    <tr>
      <td>
        `sign_in_required`
      </td>

      <td>
        `authentication_error`
      </td>

      <td>
        Vous devez être connecté pour effectuer cette action.
      </td>
    </tr>

    <tr>
      <td>
        `forbidden`
      </td>

      <td>
        `authorization_error`
      </td>

      <td>
        L’accès à cette ressource est interdit.
      </td>
    </tr>

    <tr>
      <td>
        `insufficient_permissions`
      </td>

      <td>
        `authorization_error`
      </td>

      <td>
        Vous ne disposez pas des autorisations requises pour cette action.
      </td>
    </tr>

    <tr>
      <td>
        `workspace_access_denied`
      </td>

      <td>
        `authorization_error`
      </td>

      <td>
        Vous n’avez pas accès à ce Workspace.
      </td>
    </tr>

    <tr>
      <td>
        `feature_not_available`
      </td>

      <td>
        `authorization_error`
      </td>

      <td>
        Cette fonctionnalité n’est pas disponible avec votre forfait actuel.
      </td>
    </tr>

    <tr>
      <td>
        `subscription_required`
      </td>

      <td>
        `authorization_error`
      </td>

      <td>
        Un abonnement payant est requis pour accéder à cette fonctionnalité.
      </td>
    </tr>

    <tr>
      <td>
        `voice_access_denied`
      </td>

      <td>
        `authorization_error`
      </td>

      <td>
        Vous n’avez pas accès à cette voix.
      </td>
    </tr>

    <tr>
      <td>
        `model_access_denied`
      </td>

      <td>
        `authorization_error`
      </td>

      <td>
        Vous n’avez pas accès à ce modèle.
      </td>
    </tr>

    <tr>
      <td>
        `conflict`
      </td>

      <td>
        `conflict`
      </td>

      <td>
        Un conflit est survenu.
      </td>
    </tr>

    <tr>
      <td>
        `resource_already_exists`
      </td>

      <td>
        `conflict`
      </td>

      <td>
        Une ressource avec le même identifiant existe déjà.
      </td>
    </tr>

    <tr>
      <td>
        `voice_already_exists`
      </td>

      <td>
        `conflict`
      </td>

      <td>
        Une voix portant ce nom existe déjà.
      </td>
    </tr>

    <tr>
      <td>
        `already_running`
      </td>

      <td>
        `conflict`
      </td>

      <td>
        L’opération est déjà en cours.
      </td>
    </tr>

    <tr>
      <td>
        `already_processing`
      </td>

      <td>
        `conflict`
      </td>

      <td>
        La ressource est déjà en cours de traitement.
      </td>
    </tr>

    <tr>
      <td>
        `concurrent_modification`
      </td>

      <td>
        `conflict`
      </td>

      <td>
        La ressource a été modifiée par une autre requête. Réessayez avec la version la plus récente.
      </td>
    </tr>

    <tr>
      <td>
        `slug_already_exists`
      </td>

      <td>
        `conflict`
      </td>

      <td>
        Une ressource avec ce slug existe déjà.
      </td>
    </tr>

    <tr>
      <td>
        `rate_limit_exceeded`
      </td>

      <td>
        `rate_limit_error`
      </td>

      <td>
        Trop de requêtes. Attendez avant de réessayer.
      </td>
    </tr>

    <tr>
      <td>
        `concurrent_limit_exceeded`
      </td>

      <td>
        `rate_limit_error`
      </td>

      <td>
        Nombre maximal de requêtes simultanées dépassé. Les forfaits supérieurs offrent une limite de
        requêtes simultanées plus élevée.
      </td>
    </tr>

    <tr>
      <td>
        `system_busy`
      </td>

      <td>
        `rate_limit_error`
      </td>

      <td>
        Le système est actuellement occupé. Réessayez plus tard.
      </td>
    </tr>

    <tr>
      <td>
        `insufficient_credits`
      </td>

      <td>
        `payment_required`
      </td>

      <td>
        Votre compte ne dispose pas de suffisamment de crédits pour cette opération.
      </td>
    </tr>

    <tr>
      <td>
        `internal_error`
      </td>

      <td>
        `internal_error`
      </td>

      <td>
        Une erreur inattendue est survenue. Contactez le support si le problème persiste.
      </td>
    </tr>

    <tr>
      <td>
        `service_unavailable`
      </td>

      <td>
        `service_unavailable`
      </td>

      <td>
        Le service est temporairement indisponible. Réessayez plus tard.
      </td>
    </tr>

    <tr>
      <td>
        `maintenance`
      </td>

      <td>
        `service_unavailable`
      </td>

      <td>
        Le service fait l’objet d’une maintenance planifiée.
      </td>
    </tr>
  </tbody>
</table>