Erreurs

Découvrez les messages d’erreur et leurs solutions.

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
typeLe type d’erreur survenue. Consultez le tableau ci-dessous pour connaître les valeurs possibles.
codeLe code de l’erreur. Plus précis que le type, il permet d’en déterminer la cause.
messageLe message d’erreur. Il fournit davantage de détails sur l’erreur.
statusL’état de l’erreur. Ce champ historique n’est plus utilisé, utilisez plutôt la propriété code.
request_idL’ID de requête de l’erreur. Cet identifiant unique permet de résoudre le problème.
paramLe 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 :

{
"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.

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")

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

TypeDescriptionCode d’état HTTP
validation_errorLa requête contient des valeurs de paramètres non valides.400
invalid_requestLa structure de la requête est mal formée ou des champs obligatoires manquent.400
authentication_errorL’authentification a échoué, clé API ou jeton non valide ou manquant.401
payment_requiredL’utilisateur ne dispose pas de crédits suffisants ou un paiement est requis.402
authorization_errorL’utilisateur authentifié ne dispose pas des autorisations requises.403
not_foundLa ressource demandée est introuvable.404
conflictLa requête entre en conflit avec l’état actuel de la ressource.409
rate_limit_errorTrop de requêtes, réessayez plus tard.429
internal_errorUne erreur serveur inattendue est survenue.500
service_unavailableLe service est temporairement indisponible, ce qui devrait être rare.503

Codes d’erreur

CodeTypeDescription
voice_not_foundnot_foundL’ID de voix indiqué n’existe pas. Vérifiez l’ID de voix et réessayez.
sample_not_foundnot_foundL’échantillon vocal indiqué est introuvable.
voice_collection_not_foundnot_foundLa collection de voix indiquée n’existe pas.
user_not_foundnot_foundL’utilisateur indiqué est introuvable.
auth_account_not_foundnot_foundLe compte d’authentification est introuvable.
workspace_not_foundnot_foundLe Workspace indiqué n’existe pas.
project_not_foundnot_foundLe projet indiqué est introuvable.
history_item_not_foundnot_foundL’élément d’historique indiqué n’existe pas.
collection_not_foundnot_foundLa collection indiquée est introuvable.
document_not_foundnot_foundLe document indiqué n’existe pas.
file_not_foundnot_foundLe fichier indiqué est introuvable.
conversation_not_foundnot_foundLa conversation indiquée n’existe pas.
agent_not_foundnot_foundL’agent indiqué est introuvable.
dubbing_not_foundnot_foundLe projet de doublage indiqué n’existe pas.
song_not_foundnot_foundLa chanson indiquée est introuvable.
read_not_foundnot_foundLa lecture indiquée est introuvable.
pronunciation_dictionary_not_foundnot_foundLe dictionnaire de prononciation indiqué n’existe pas.
knowledge_base_not_foundnot_foundLa base de connaissances indiquée est introuvable.
phone_number_not_foundnot_foundLe numéro de téléphone indiqué n’existe pas.
tool_not_foundnot_foundL’outil indiqué est introuvable.
snapshot_not_foundnot_foundL’instantané indiqué n’existe pas.
task_not_foundnot_foundLa tâche indiquée est introuvable.
model_not_foundnot_foundLe modèle indiqué n’existe pas.
transcript_not_foundnot_foundLa transcription indiquée est introuvable.
keywords_list_not_foundnot_foundLa liste de mots-clés indiquée est introuvable.
category_not_foundnot_foundLa catégorie indiquée est introuvable.
text_too_longvalidation_errorLe texte fourni dépasse la longueur maximale autorisée.
text_too_shortvalidation_errorLe texte fourni est plus court que la longueur minimale requise.
invalid_textvalidation_errorLe texte fourni contient des caractères ou une mise en forme non valides.
empty_textvalidation_errorLe champ de texte ne peut pas être vide.
invalid_parametersvalidation_error

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.

missing_required_fieldvalidation_error

Un champ obligatoire est absent de la requête. Consultez la propriété param pour connaître le champ manquant.

invalid_voice_settingsvalidation_error

Les paramètres vocaux contiennent des valeurs non valides. Consultez la propriété param pour connaître les paramètres vocaux non valides.

invalid_voice_idvalidation_errorLe format de l’ID de voix n’est pas valide.
unsupported_modelvalidation_errorLe modèle indiqué n’est pas pris en charge pour cette opération.
invalid_audiovalidation_errorL’audio fourni n’est pas valide ou est corrompu.
invalid_audio_formatvalidation_errorLe format audio indiqué n’est pas pris en charge.
invalid_output_formatvalidation_errorLe format de sortie demandé n’est pas pris en charge.
audio_too_longvalidation_errorL’audio dépasse la durée maximale autorisée.
audio_too_shortvalidation_errorL’audio est plus court que la durée minimale requise.
invalid_file_typevalidation_errorCe type de fichier n’est pas pris en charge.
invalid_page_sizevalidation_errorLe paramètre de taille de page est hors de la plage autorisée.
invalid_cursorvalidation_errorLe curseur de pagination n’est pas valide ou a expiré.
bad_requestinvalid_requestLe serveur n’a pas pu interpréter la requête.
malformed_jsoninvalid_requestLe corps de la requête contient du JSON non valide.
invalid_content_typeinvalid_requestL’en-tête Content-Type est absent ou non valide.
request_too_largeinvalid_requestLe corps de la requête dépasse la taille maximale autorisée.
invalid_api_keyauthentication_errorLa clé API fournie n’est pas valide.
missing_api_keyauthentication_errorAucune clé API n’a été fournie dans la requête.
invalid_authorization_headerauthentication_errorLe format de l’en-tête Authorization n’est pas valide.
unauthorizedauthentication_errorUne authentification est requise pour accéder à cette ressource.
sign_in_requiredauthentication_errorVous devez être connecté pour effectuer cette action.
forbiddenauthorization_errorL’accès à cette ressource est interdit.
insufficient_permissionsauthorization_errorVous ne disposez pas des autorisations requises pour cette action.
workspace_access_deniedauthorization_errorVous n’avez pas accès à ce Workspace.
feature_not_availableauthorization_errorCette fonctionnalité n’est pas disponible avec votre forfait actuel.
subscription_requiredauthorization_errorUn abonnement payant est requis pour accéder à cette fonctionnalité.
voice_access_deniedauthorization_errorVous n’avez pas accès à cette voix.
model_access_deniedauthorization_errorVous n’avez pas accès à ce modèle.
conflictconflictUn conflit est survenu.
resource_already_existsconflictUne ressource avec le même identifiant existe déjà.
voice_already_existsconflictUne voix portant ce nom existe déjà.
already_runningconflictL’opération est déjà en cours.
already_processingconflictLa ressource est déjà en cours de traitement.
concurrent_modificationconflictLa ressource a été modifiée par une autre requête. Réessayez avec la version la plus récente.
slug_already_existsconflictUne ressource avec ce slug existe déjà.
rate_limit_exceededrate_limit_errorTrop de requêtes. Attendez avant de réessayer.
concurrent_limit_exceededrate_limit_error

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

system_busyrate_limit_errorLe système est actuellement occupé. Réessayez plus tard.
insufficient_creditspayment_requiredVotre compte ne dispose pas de suffisamment de crédits pour cette opération.
internal_errorinternal_errorUne erreur inattendue est survenue. Contactez le support si le problème persiste.
service_unavailableservice_unavailableLe service est temporairement indisponible. Réessayez plus tard.
maintenanceservice_unavailableLe service fait l’objet d’une maintenance planifiée.