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

# Errores

## Errores de la API

ElevenLabs utiliza códigos de estado HTTP estándar para indicar si una solicitud se ha realizado correctamente o ha fallado. Además, todas las solicitudes a la API devuelven un objeto JSON con una propiedad `detail` que contiene información sobre el error.

En general, un código de estado HTTP `200` indica que la solicitud se ha realizado correctamente. Un código `4xx` indica un problema con la solicitud, como un parámetro no válido o la falta de un campo obligatorio. Un código de estado HTTP `500` indica un problema con los servidores de ElevenLabs, algo que debería ocurrir rara vez.

### Propiedades de los errores

| Propiedad    | Descripción                                                                                                            |
| ------------ | ---------------------------------------------------------------------------------------------------------------------- |
| `type`       | El tipo de error que se ha producido. Consulta la tabla siguiente para ver los posibles valores.                       |
| `code`       | El código del error. Es más específico que el tipo y puede utilizarse para determinar la causa del error.              |
| `message`    | El mensaje del error. Proporciona más detalles sobre el error.                                                         |
| `status`     | El estado del error. Es un campo heredado que ya no se utiliza; usa en su lugar la propiedad `code`.                   |
| `request_id` | El ID de solicitud del error. Es un identificador único de la solicitud que puede utilizarse para solucionar el error. |
| `param`      | El parámetro que ha causado el error. En caso de error de validación, indicará el parámetro que no es válido.          |

### Ejemplo de respuesta de error

Esta es la respuesta de una solicitud a la API que ha utilizado un ID de modelo incorrecto:

```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"
  }
}
```

Con las propiedades del error, podemos ver que se trata de un error de validación y que el código es `invalid_parameters`. El mensaje ofrece más detalles sobre el error y `request_id` es un identificador único de la solicitud que puede utilizarse para solucionar el error. La propiedad `param` indica el parámetro que ha causado el error.

### Gestión de errores en los SDK

Los SDK de ElevenLabs proporcionan clases de error tipadas que te dan acceso a los detalles del error.

```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 no puedes resolver el error, envía un correo a Soporte a [support@elevenlabs.io](mailto:support@elevenlabs.io) con el `request_id` de la respuesta de error, el mensaje de error completo y los pasos para reproducir el problema.

#### Límite de solicitudes y concurrencia

Si recibes un código de estado HTTP 429, significa que has realizado demasiadas solicitudes en poco tiempo y has superado el límite de solicitudes de la ruta de API, o que has superado el límite de concurrencia de la ruta de API. El `code` de error será `rate_limit_exceeded` o `concurrent_limit_exceeded`, respectivamente.

En caso de límite de solicitudes, debes implementar un retroceso exponencial en tu código cuando recibas un error 429. Esto implica añadir una espera antes de volver a intentar la solicitud.

En caso de concurrencia, debes esperar a que terminen las solicitudes actuales antes de hacer otras nuevas. Consulta la sección [Concurrencia y prioridad](/docs/es/overview/models#concurrency-and-priority) para obtener más información.

### Tipos de error

Un error incluye una propiedad `type` que indica el tipo de error que se ha producido. Consulta la tabla siguiente para ver los posibles valores.

| Tipo                   | Descripción                                                               | Código de estado HTTP |
| ---------------------- | ------------------------------------------------------------------------- | --------------------- |
| `validation_error`     | La solicitud contiene valores de parámetros no válidos.                   | 400                   |
| `invalid_request`      | La estructura de la solicitud no es válida o faltan campos obligatorios.  | 400                   |
| `authentication_error` | Error de autenticación: clave o token de API no válido o ausente.         | 401                   |
| `payment_required`     | El usuario no tiene créditos suficientes o se requiere un pago.           | 402                   |
| `authorization_error`  | El usuario autenticado no tiene los permisos necesarios para esta acción. | 403                   |
| `not_found`            | No se ha encontrado el recurso solicitado.                                | 404                   |
| `conflict`             | La solicitud entra en conflicto con el estado actual del recurso.         | 409                   |
| `rate_limit_error`     | Demasiadas solicitudes; inténtalo de nuevo más tarde.                     | 429                   |
| `internal_error`       | Se ha producido un error inesperado del servidor.                         | 500                   |
| `service_unavailable`  | El servicio no está disponible temporalmente; debería ocurrir rara vez.   | 503                   |

### Códigos de error

<table searchable>
  <thead>
    <tr>
      <th>
        Código
      </th>

      <th>
        Tipo
      </th>

      <th>
        Descripción
      </th>
    </tr>
  </thead>

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

      <td>
        `not_found`
      </td>

      <td>
        El ID de voz especificado no existe. Comprueba el ID de voz e inténtalo de nuevo.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado la muestra de voz especificada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        La colección de voces especificada no existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado el usuario especificado.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado la cuenta de autenticación.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        El espacio de trabajo especificado no existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado el proyecto especificado.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        El elemento del historial especificado no existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado la colección especificada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        El documento especificado no existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado el archivo especificado.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        La conversación especificada no existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado el agente especificado.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        El proyecto de doblaje especificado no existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado la canción especificada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado la lectura especificada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        El diccionario de pronunciación especificado no existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado la base de conocimientos especificada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        El número de teléfono especificado no existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado la herramienta especificada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        La instantánea especificada no existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado la tarea especificada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        El modelo especificado no existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado la transcripción especificada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado la lista de palabras clave especificada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        No se ha encontrado la categoría especificada.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El texto proporcionado supera la longitud máxima permitida.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El texto proporcionado es más corto que la longitud mínima requerida.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El texto proporcionado contiene caracteres o formato no válidos.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El campo de texto no puede estar vacío.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        Uno o más parámetros de la solicitud no son válidos. Consulta la propiedad `param` para ver el
        parámetro no válido.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        Falta un campo obligatorio en la solicitud. Consulta la propiedad `param` para ver el campo
        que falta.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        La configuración de voz contiene valores no válidos. Consulta la propiedad `param` para ver la
        configuración de voz no válida.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El formato del ID de voz no es válido.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El modelo especificado no es compatible con esta operación.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El audio proporcionado no es válido o está dañado.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El formato de audio especificado no es compatible.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El formato de salida solicitado no es compatible.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El audio supera la duración máxima permitida.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El audio es más corto que la duración mínima requerida.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El tipo de archivo no es compatible.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El parámetro de tamaño de página está fuera del intervalo permitido.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        El cursor de paginación no es válido o ha caducado.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        El servidor no ha podido entender la solicitud.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        El cuerpo de la solicitud contiene JSON no válido.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        La cabecera Content-Type falta o no es válida.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        El cuerpo de la solicitud supera el tamaño máximo permitido.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        La clave de API proporcionada no es válida.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        No se ha proporcionado ninguna clave de API en la solicitud.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        El formato de la cabecera Authorization no es válido.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        Se requiere autenticación para acceder a este recurso.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        Debes iniciar sesión para realizar esta acción.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        El acceso a este recurso está prohibido.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        No tienes los permisos necesarios para esta acción.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        No tienes acceso a este espacio de trabajo.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Esta función no está disponible en tu plan actual.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Se requiere una suscripción de pago para acceder a esta función.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        No tienes acceso a esta voz.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        No tienes acceso a este modelo.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Se ha producido un conflicto.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Ya existe un recurso con el mismo identificador.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Ya existe una voz con este nombre.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        La operación ya está en ejecución.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        El recurso ya se está procesando.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Otra solicitud ha modificado el recurso. Vuelve a intentarlo con la versión más reciente.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Ya existe un recurso con este slug.
      </td>
    </tr>

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

      <td>
        `rate_limit_error`
      </td>

      <td>
        Demasiadas solicitudes. Espera antes de volver a intentarlo.
      </td>
    </tr>

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

      <td>
        `rate_limit_error`
      </td>

      <td>
        Se ha superado el número máximo de solicitudes simultáneas. Los niveles de suscripción superiores tienen un
        límite de concurrencia más alto.
      </td>
    </tr>

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

      <td>
        `rate_limit_error`
      </td>

      <td>
        El sistema está ocupado actualmente. Inténtalo de nuevo más tarde.
      </td>
    </tr>

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

      <td>
        `payment_required`
      </td>

      <td>
        Tu cuenta no tiene suficientes créditos para esta operación.
      </td>
    </tr>

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

      <td>
        `internal_error`
      </td>

      <td>
        Se ha producido un error inesperado. Ponte en contacto con Soporte si el problema persiste.
      </td>
    </tr>

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

      <td>
        `service_unavailable`
      </td>

      <td>
        El servicio no está disponible temporalmente. Inténtalo de nuevo más tarde.
      </td>
    </tr>

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

      <td>
        `service_unavailable`
      </td>

      <td>
        El servicio está en mantenimiento programado.
      </td>
    </tr>
  </tbody>
</table>