> 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. # Errors ## API errors ElevenLabs uses standard HTTP status codes to indicate the success or failure of a request. Additionally, all API requests return a JSON object with a `detail` property that contains information about the error. In general, a `200` HTTP status code indicates a successful request. A `4xx` code indicates a problem with the request, like an invalid parameter or missing required field. A `500` HTTP status code indicates a problem with ElevenLabs' servers, which should be rare. ### Error properties | Property | Description | | ------------ | ------------------------------------------------------------------------------------------------------------------------- | | `type` | The type of error that occurred. See the table below for possible values. | | `code` | The code of the error. These are more specific than the type, and can be used to determine the cause of the error. | | `message` | The message of the error. This provides more details about the error. | | `status` | The status of the error. This is a legacy field that is no longer used, instead use the `code` property. | | `request_id` | The request ID of the error. This is a unique identifier for the request that can be used to troubleshoot the error. | | `param` | The parameter that caused the error. In the case of a validation error, this will indicate the parameter that is invalid. | ### Example error response Here's the response for an API request that used an incorrect model ID: ```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" } } ``` Using the error properties, we can see that the error is a validation error, and the code is `invalid_parameters`. The message provides more details about the error, and the `request_id` is a unique identifier for the request that can be used to troubleshoot the error. The `param` property indicates the parameter that caused the error. ### SDK error handling The ElevenLabs SDKs provide typed error classes that give you access to the error details. ```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"); } } } } ``` If you're unable to resolve the error, email Support at [support@elevenlabs.io](mailto:support@elevenlabs.io) with the `request_id` from the error response, the full error message, and steps to reproduce the issue. #### Rate limiting and concurrency If you receive a 429 HTTP status code, it means you have either made too many requests in a short period of time and exceeded the rate limit for the API endpoint, or you have exceeded the concurrency limit for the API endpoint. The error `code` will be `rate_limit_exceeded` or `concurrent_limit_exceeded` respectively. In the case of rate limiting, you should implement exponential backoff in your code when a 429 error is received. This means adding a delay before retrying the request. In the case of concurrency, you should wait for the current requests to complete before making new ones. See the [Concurrency and priority](/docs/overview/models#concurrency-and-priority) section for more information. ### Error types An error comes with a `type` property that indicates the type of error that occurred. See the table below for possible values. | Type | Description | HTTP Status Code | | ---------------------- | ----------------------------------------------------------------------------- | ---------------- | | `validation_error` | The request contains invalid parameter values. | 400 | | `invalid_request` | The request structure is malformed or missing required fields. | 400 | | `authentication_error` | Authentication failed - invalid or missing API key/token. | 401 | | `payment_required` | User has insufficient credits or payment is required. | 402 | | `authorization_error` | The authenticated user doesn't have the required permissions for this action. | 403 | | `not_found` | The requested resource was not found. | 404 | | `conflict` | The request conflicts with the current state of the resource. | 409 | | `rate_limit_error` | Too many requests - try again later. | 429 | | `internal_error` | An unexpected server error occurred. | 500 | | `service_unavailable` | The service is temporarily unavailable, this should be a rare occurrence. | 503 | ### Error codes
Code Type Description
`voice_not_found` `not_found` The specified voice ID does not exist. Verify the voice ID and try again.
`sample_not_found` `not_found` The specified voice sample was not found.
`voice_collection_not_found` `not_found` The specified voice collection does not exist.
`user_not_found` `not_found` The specified user was not found.
`auth_account_not_found` `not_found` The authentication account was not found.
`workspace_not_found` `not_found` The specified workspace does not exist.
`project_not_found` `not_found` The specified project was not found.
`history_item_not_found` `not_found` The specified history item does not exist.
`collection_not_found` `not_found` The specified collection was not found.
`document_not_found` `not_found` The specified document does not exist.
`file_not_found` `not_found` The specified file was not found.
`conversation_not_found` `not_found` The specified conversation does not exist.
`agent_not_found` `not_found` The specified agent was not found.
`dubbing_not_found` `not_found` The specified dubbing project does not exist.
`song_not_found` `not_found` The specified song was not found.
`read_not_found` `not_found` The specified read was not found.
`pronunciation_dictionary_not_found` `not_found` The specified pronunciation dictionary does not exist.
`knowledge_base_not_found` `not_found` The specified knowledge base was not found.
`phone_number_not_found` `not_found` The specified phone number does not exist.
`tool_not_found` `not_found` The specified tool was not found.
`snapshot_not_found` `not_found` The specified snapshot does not exist.
`task_not_found` `not_found` The specified task was not found.
`model_not_found` `not_found` The specified model does not exist.
`transcript_not_found` `not_found` The specified transcript was not found.
`keywords_list_not_found` `not_found` The specified keywords list was not found.
`category_not_found` `not_found` The specified category was not found.
`text_too_long` `validation_error` The provided text exceeds the maximum allowed length.
`text_too_short` `validation_error` The provided text is shorter than the minimum required length.
`invalid_text` `validation_error` The provided text contains invalid characters or formatting.
`empty_text` `validation_error` The text field cannot be empty.
`invalid_parameters` `validation_error` One or more request parameters are invalid. Check the `param` property for the invalid parameter.
`missing_required_field` `validation_error` A required field is missing from the request. Check the `param` property for the missing field.
`invalid_voice_settings` `validation_error` The voice settings contain invalid values. Check the `param` property for the invalid voice settings.
`invalid_voice_id` `validation_error` The voice ID format is invalid.
`unsupported_model` `validation_error` The specified model is not supported for this operation.
`invalid_audio` `validation_error` The provided audio is invalid or corrupted.
`invalid_audio_format` `validation_error` The specified audio format is not supported.
`invalid_output_format` `validation_error` The requested output format is not supported.
`audio_too_long` `validation_error` The audio exceeds the maximum allowed duration.
`audio_too_short` `validation_error` The audio is shorter than the minimum required duration.
`invalid_file_type` `validation_error` The file type is not supported.
`invalid_page_size` `validation_error` The page size parameter is outside the allowed range.
`invalid_cursor` `validation_error` The pagination cursor is invalid or expired.
`bad_request` `invalid_request` The request could not be understood by the server.
`malformed_json` `invalid_request` The request body contains invalid JSON.
`invalid_content_type` `invalid_request` The Content-Type header is missing or invalid.
`request_too_large` `invalid_request` The request body exceeds the maximum allowed size.
`invalid_api_key` `authentication_error` The provided API key is invalid.
`missing_api_key` `authentication_error` No API key was provided in the request.
`invalid_authorization_header` `authentication_error` The Authorization header format is invalid.
`unauthorized` `authentication_error` Authentication is required to access this resource.
`sign_in_required` `authentication_error` You must be signed in to perform this action.
`forbidden` `authorization_error` Access to this resource is forbidden.
`insufficient_permissions` `authorization_error` You do not have the required permissions for this action.
`workspace_access_denied` `authorization_error` You do not have access to this workspace.
`feature_not_available` `authorization_error` This feature is not available on your current plan.
`subscription_required` `authorization_error` A paid subscription is required to access this feature.
`voice_access_denied` `authorization_error` You do not have access to this voice.
`model_access_denied` `authorization_error` You do not have access to this model.
`conflict` `conflict` A conflict occurred.
`resource_already_exists` `conflict` A resource with the same identifier already exists.
`voice_already_exists` `conflict` A voice with this name already exists.
`already_running` `conflict` The operation is already running.
`already_processing` `conflict` The resource is already being processed.
`concurrent_modification` `conflict` The resource was modified by another request. Retry with the latest version.
`slug_already_exists` `conflict` A resource with this slug already exists.
`rate_limit_exceeded` `rate_limit_error` Too many requests. Wait before retrying.
`concurrent_limit_exceeded` `rate_limit_error` Maximum number of concurrent requests exceeded. Higher subscription tiers have a higher concurrency limit.
`system_busy` `rate_limit_error` The system is currently busy. Try again later.
`insufficient_credits` `payment_required` Your account does not have enough credits for this operation.
`internal_error` `internal_error` An unexpected error occurred. Contact support if this persists.
`service_unavailable` `service_unavailable` The service is temporarily unavailable. Try again later.
`maintenance` `service_unavailable` The service is undergoing scheduled maintenance.
> ElevenLabs provides APIs and SDKs for text to speech, voice cloning, speech to text, sound effects, voice isolator, voice changer, and conversational AI agents. Build voice-enabled applications with lifelike audio generation.