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

# Erros

## Erros da API

A ElevenLabs usa códigos de status HTTP padrão para indicar o sucesso ou a falha de uma solicitação. Além disso, todas as solicitações à API retornam um objeto JSON com uma propriedade `detail` que contém informações sobre o erro.

Em geral, um código de status HTTP `200` indica uma solicitação bem-sucedida. Um código `4xx` indica um problema com a solicitação, como um parâmetro inválido ou um campo obrigatório ausente. Um código de status HTTP `500` indica um problema nos servidores da ElevenLabs, o que deve ser raro.

### Propriedades do erro

| Propriedade  | Descrição                                                                                                                     |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `type`       | O tipo de erro ocorrido. Consulte a tabela abaixo para ver os valores possíveis.                                              |
| `code`       | O código do erro. Esses códigos são mais específicos do que o tipo e podem ser usados para determinar a causa do erro.        |
| `message`    | A mensagem do erro. Ela fornece mais detalhes sobre o erro.                                                                   |
| `status`     | O status do erro. Este é um campo legado que não é mais usado; use a propriedade `code`.                                      |
| `request_id` | O ID da solicitação que causou o erro. É um identificador exclusivo da solicitação que pode ser usado para solucionar o erro. |
| `param`      | O parâmetro que causou o erro. No caso de um erro de validação, ele indicará qual parâmetro é inválido.                       |

### Exemplo de resposta de erro

Esta é a resposta para uma solicitação à API que usou um ID de modelo incorreto:

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

Usando as propriedades do erro, podemos ver que se trata de um erro de validação e que o código é `invalid_parameters`. A mensagem fornece mais detalhes sobre o erro, e o `request_id` é um identificador exclusivo da solicitação que pode ser usado para solucionar o erro. A propriedade `param` indica o parâmetro que causou o erro.

### Tratamento de erros no SDK

Os SDKs da ElevenLabs oferecem classes de erro tipadas que dão acesso aos detalhes do erro.

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

Se não conseguir resolver o erro, envie um e-mail para o Suporte em [support@elevenlabs.io](mailto:support@elevenlabs.io) com o `request_id` da resposta de erro, a mensagem de erro completa e as etapas para reproduzir o problema.

#### Limite de taxa e simultaneidade

Se você receber um código de status HTTP 429, isso significa que fez muitas solicitações em um curto período e excedeu o limite de taxa do endpoint da API, ou que excedeu o limite de simultaneidade do endpoint da API. O `code` do erro será `rate_limit_exceeded` ou `concurrent_limit_exceeded`, respectivamente.

No caso de limite de taxa, você deve implementar backoff exponencial no código ao receber um erro 429. Isso significa adicionar um atraso antes de tentar a solicitação novamente.

No caso de simultaneidade, você deve aguardar a conclusão das solicitações atuais antes de fazer novas. Consulte a seção [Simultaneidade e prioridade](/docs/pt/overview/models#concurrency-and-priority) para mais informações.

### Tipos de erro

Um erro vem com uma propriedade `type` que indica o tipo de erro ocorrido. Consulte a tabela abaixo para ver os valores possíveis.

| Tipo                   | Descrição                                                                 | Código de status HTTP |
| ---------------------- | ------------------------------------------------------------------------- | --------------------- |
| `validation_error`     | A solicitação contém valores de parâmetros inválidos.                     | 400                   |
| `invalid_request`      | A estrutura da solicitação está malformada ou faltam campos obrigatórios. | 400                   |
| `authentication_error` | A autenticação falhou: chave ou token da API inválido ou ausente.         | 401                   |
| `payment_required`     | O usuário não tem créditos suficientes ou é necessário efetuar pagamento. | 402                   |
| `authorization_error`  | O usuário autenticado não tem as permissões necessárias para esta ação.   | 403                   |
| `not_found`            | O recurso solicitado não foi encontrado.                                  | 404                   |
| `conflict`             | A solicitação entra em conflito com o estado atual do recurso.            | 409                   |
| `rate_limit_error`     | Muitas solicitações: tente novamente mais tarde.                          | 429                   |
| `internal_error`       | Ocorreu um erro inesperado no servidor.                                   | 500                   |
| `service_unavailable`  | O serviço está temporariamente indisponível; isso deve ocorrer raramente. | 503                   |

### Códigos de erro

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

      <th>
        Tipo
      </th>

      <th>
        Descrição
      </th>
    </tr>
  </thead>

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

      <td>
        `not_found`
      </td>

      <td>
        O ID de voz especificado não existe. Verifique o ID de voz e tente novamente.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A amostra de voz especificada não foi encontrada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A coleção de vozes especificada não existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O usuário especificado não foi encontrado.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A conta de autenticação não foi encontrada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O espaço de trabalho especificado não existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O projeto especificado não foi encontrado.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O item de histórico especificado não existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A coleção especificada não foi encontrada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O documento especificado não existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O arquivo especificado não foi encontrado.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A conversa especificada não existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O agente especificado não foi encontrado.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O projeto de dublagem especificado não existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A música especificada não foi encontrada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A leitura especificada não foi encontrada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O dicionário de pronúncia especificado não existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A base de conhecimento especificada não foi encontrada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O número de telefone especificado não existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A ferramenta especificada não foi encontrada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O snapshot especificado não existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A tarefa especificada não foi encontrada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        O modelo especificado não existe.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A transcrição especificada não foi encontrada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A lista de palavras-chave especificada não foi encontrada.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        A categoria especificada não foi encontrada.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O texto fornecido excede o tamanho máximo permitido.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O texto fornecido é menor que o tamanho mínimo exigido.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O texto fornecido contém caracteres ou formatação inválidos.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O campo de texto não pode estar vazio.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        Um ou mais parâmetros da solicitação são inválidos. Verifique a propriedade `param` para identificar o
        parâmetro inválido.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        Está faltando um campo obrigatório na solicitação. Verifique a propriedade `param` para identificar o campo
        ausente.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        As configurações de voz contêm valores inválidos. Verifique a propriedade `param` para identificar as configurações de voz
        inválidas.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O formato do ID de voz é inválido.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O modelo especificado não é compatível com esta operação.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O áudio fornecido é inválido ou está corrompido.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O formato de áudio especificado não é compatível.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O formato de saída solicitado não é compatível.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O áudio excede a duração máxima permitida.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O áudio é mais curto que a duração mínima exigida.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O tipo de arquivo não é compatível.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O parâmetro de tamanho da página está fora do intervalo permitido.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        O cursor de paginação é inválido ou expirou.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        O servidor não conseguiu entender a solicitação.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        O corpo da solicitação contém JSON inválido.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        O cabeçalho Content-Type está ausente ou é inválido.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        O corpo da solicitação excede o tamanho máximo permitido.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        A chave de API fornecida é inválida.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        Nenhuma chave de API foi fornecida na solicitação.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        O formato do cabeçalho Authorization é inválido.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        É necessário autenticar-se para acessar este recurso.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        Você precisa estar conectado para realizar esta ação.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        O acesso a este recurso é proibido.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Você não tem as permissões necessárias para esta ação.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Você não tem acesso a este espaço de trabalho.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Este recurso não está disponível no seu plano atual.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        É necessária uma assinatura paga para acessar este recurso.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Você não tem acesso a esta voz.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Você não tem acesso a este modelo.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Ocorreu um conflito.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Já existe um recurso com o mesmo identificador.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Já existe uma voz com este nome.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        A operação já está em execução.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        O recurso já está sendo processado.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        O recurso foi modificado por outra solicitação. Tente novamente com a versão mais recente.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Já existe um recurso com este slug.
      </td>
    </tr>

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

      <td>
        `rate_limit_error`
      </td>

      <td>
        Muitas solicitações. Aguarde antes de tentar novamente.
      </td>
    </tr>

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

      <td>
        `rate_limit_error`
      </td>

      <td>
        O número máximo de solicitações simultâneas foi excedido. Planos de assinatura superiores têm um limite de
        simultaneidade maior.
      </td>
    </tr>

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

      <td>
        `rate_limit_error`
      </td>

      <td>
        O sistema está ocupado no momento. Tente novamente mais tarde.
      </td>
    </tr>

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

      <td>
        `payment_required`
      </td>

      <td>
        Sua conta não tem créditos suficientes para esta operação.
      </td>
    </tr>

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

      <td>
        `internal_error`
      </td>

      <td>
        Ocorreu um erro inesperado. Entre em contato com o suporte se ele persistir.
      </td>
    </tr>

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

      <td>
        `service_unavailable`
      </td>

      <td>
        O serviço está temporariamente indisponível. Tente novamente mais tarde.
      </td>
    </tr>

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

      <td>
        `service_unavailable`
      </td>

      <td>
        O serviço está passando por manutenção programada.
      </td>
    </tr>
  </tbody>
</table>