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

# Fouten

## API-fouten

ElevenLabs gebruikt standaard HTTP-statuscodes om aan te geven of een request is geslaagd of mislukt. Daarnaast retourneren alle API-requests een JSON-object met een eigenschap `detail` die informatie over de fout bevat.

Over het algemeen geeft een HTTP-statuscode `200` een geslaagd request aan. Een code `4xx` wijst op een probleem met het request, zoals een ongeldige parameter of een ontbrekend verplicht veld. Een HTTP-statuscode `500` wijst op een probleem met de servers van ElevenLabs, wat zelden zou moeten voorkomen.

### Fouteigenschappen

| Eigenschap   | Beschrijving                                                                                                                   |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------ |
| `type`       | Het type fout dat is opgetreden. Zie de onderstaande tabel voor mogelijke waarden.                                             |
| `code`       | De code van de fout. Deze zijn specifieker dan het type en kunnen worden gebruikt om de oorzaak van de fout te bepalen.        |
| `message`    | Het foutbericht. Dit geeft meer informatie over de fout.                                                                       |
| `status`     | De status van de fout. Dit is een verouderd veld dat niet meer wordt gebruikt; gebruik in plaats daarvan de eigenschap `code`. |
| `request_id` | De request-ID van de fout. Dit is een unieke identifier voor het request die je kunt gebruiken om de fout op te lossen.        |
| `param`      | De parameter die de fout heeft veroorzaakt. Bij een validatiefout geeft dit aan welke parameter ongeldig is.                   |

### Voorbeeld van een foutresponse

Dit is de response voor een API-request waarvoor een onjuiste model-ID is gebruikt:

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

Aan de hand van de fouteigenschappen zien we dat het om een validatiefout gaat en dat de code `invalid_parameters` is. Het bericht geeft meer informatie over de fout en de `request_id` is een unieke identifier voor het request die je kunt gebruiken om de fout op te lossen. De eigenschap `param` geeft de parameter aan die de fout heeft veroorzaakt.

### Foutafhandeling in SDK's

De ElevenLabs SDK's bieden getypeerde foutklassen waarmee je toegang krijgt tot de foutdetails.

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

Als je de fout niet kunt oplossen, stuur dan een e-mail naar Support via [support@elevenlabs.io](mailto:support@elevenlabs.io) met de `request_id` uit de foutresponse, het volledige foutbericht en stappen om het probleem te reproduceren.

#### Rate limiting en concurrency

Als je een HTTP-statuscode 429 ontvangt, betekent dit dat je te veel requests in korte tijd hebt gedaan en de ratelimiet voor het API-endpoint hebt overschreden, of dat je de concurrencylimiet voor het API-endpoint hebt overschreden. De fout-`code` is respectievelijk `rate_limit_exceeded` of `concurrent_limit_exceeded`.

Bij rate limiting moet je exponential backoff in je code implementeren wanneer je een 429-fout ontvangt. Dit betekent dat je een vertraging toevoegt voordat je het request opnieuw probeert.

Bij concurrency moet je wachten tot de huidige requests zijn voltooid voordat je nieuwe doet. Zie het gedeelte [Concurrency en prioriteit](/docs/nl/overview/models#concurrency-and-priority) voor meer informatie.

### Fouttypen

Een fout heeft een eigenschap `type` die aangeeft welk type fout is opgetreden. Zie de onderstaande tabel voor mogelijke waarden.

| Type                   | Beschrijving                                                                  | HTTP-statuscode |
| ---------------------- | ----------------------------------------------------------------------------- | --------------- |
| `validation_error`     | Het request bevat ongeldige parameterwaarden.                                 | 400             |
| `invalid_request`      | De structuur van het request is onjuist of verplichte velden ontbreken.       | 400             |
| `authentication_error` | Authenticatie is mislukt - ongeldige of ontbrekende API-sleutel/token.        | 401             |
| `payment_required`     | De gebruiker heeft onvoldoende credits of betaling is vereist.                | 402             |
| `authorization_error`  | De geauthenticeerde gebruiker heeft niet de vereiste rechten voor deze actie. | 403             |
| `not_found`            | De opgevraagde resource is niet gevonden.                                     | 404             |
| `conflict`             | Het request conflicteert met de huidige status van de resource.               | 409             |
| `rate_limit_error`     | Te veel requests - probeer het later opnieuw.                                 | 429             |
| `internal_error`       | Er is een onverwachte serverfout opgetreden.                                  | 500             |
| `service_unavailable`  | De service is tijdelijk niet beschikbaar; dit zou zelden moeten voorkomen.    | 503             |

### Foutcodes

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

      <th>
        Type
      </th>

      <th>
        Beschrijving
      </th>
    </tr>
  </thead>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven stem-ID bestaat niet. Controleer de stem-ID en probeer het opnieuw.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven stemvoorbeeld is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven stemcollectie bestaat niet.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven gebruiker is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het authenticatieaccount is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven workspace bestaat niet.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven project is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven geschiedenisitem bestaat niet.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven collectie is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven document bestaat niet.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven bestand is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven gesprek bestaat niet.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven agent is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven nasynchronisatieproject bestaat niet.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven nummer is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven read is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven uitspraakwoordenboek bestaat niet.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven kennisbank is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven telefoonnummer bestaat niet.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven tool is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven snapshot bestaat niet.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven taak is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven model bestaat niet.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        Het opgegeven transcript is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven lijst met zoekwoorden is niet gevonden.
      </td>
    </tr>

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

      <td>
        `not_found`
      </td>

      <td>
        De opgegeven categorie is niet gevonden.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        De opgegeven tekst is langer dan de maximaal toegestane lengte.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        De opgegeven tekst is korter dan de minimaal vereiste lengte.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        De opgegeven tekst bevat ongeldige tekens of opmaak.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        Het tekstveld mag niet leeg zijn.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        Een of meer requestparameters zijn ongeldig. Controleer de eigenschap `param` op de ongeldige
        parameter.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        Een verplicht veld ontbreekt in het request. Controleer de eigenschap `param` op het ontbrekende
        veld.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        De steminstellingen bevatten ongeldige waarden. Controleer de eigenschap `param` op de ongeldige stem-
        instellingen.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        De indeling van de stem-ID is ongeldig.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        Het opgegeven model wordt niet ondersteund voor deze bewerking.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        De opgegeven audio is ongeldig of beschadigd.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        Het opgegeven audioformaat wordt niet ondersteund.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        Het opgevraagde uitvoerformaat wordt niet ondersteund.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        De audio overschrijdt de maximaal toegestane duur.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        De audio is korter dan de minimaal vereiste duur.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        Het bestandstype wordt niet ondersteund.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        De parameter voor de paginagrootte valt buiten het toegestane bereik.
      </td>
    </tr>

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

      <td>
        `validation_error`
      </td>

      <td>
        De pagineringscursor is ongeldig of verlopen.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        De server kon het request niet begrijpen.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        De requestbody bevat ongeldige JSON.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        De header Content-Type ontbreekt of is ongeldig.
      </td>
    </tr>

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

      <td>
        `invalid_request`
      </td>

      <td>
        De requestbody overschrijdt de maximaal toegestane grootte.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        De opgegeven API-sleutel is ongeldig.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        Er is geen API-sleutel opgegeven in het request.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        De indeling van de Authorization-header is ongeldig.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        Authenticatie is vereist om toegang te krijgen tot deze resource.
      </td>
    </tr>

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

      <td>
        `authentication_error`
      </td>

      <td>
        Je moet ingelogd zijn om deze actie uit te voeren.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Toegang tot deze resource is verboden.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Je hebt niet de vereiste rechten voor deze actie.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Je hebt geen toegang tot deze workspace.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Deze functie is niet beschikbaar in je huidige abonnement.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Een betaald abonnement is vereist om toegang te krijgen tot deze functie.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Je hebt geen toegang tot deze stem.
      </td>
    </tr>

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

      <td>
        `authorization_error`
      </td>

      <td>
        Je hebt geen toegang tot dit model.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Er is een conflict opgetreden.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Er bestaat al een resource met dezelfde identifier.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Er bestaat al een stem met deze naam.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        De bewerking wordt al uitgevoerd.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        De resource wordt al verwerkt.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        De resource is gewijzigd door een ander request. Probeer het opnieuw met de nieuwste versie.
      </td>
    </tr>

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

      <td>
        `conflict`
      </td>

      <td>
        Er bestaat al een resource met deze slug.
      </td>
    </tr>

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

      <td>
        `rate_limit_error`
      </td>

      <td>
        Te veel requests. Wacht voordat je het opnieuw probeert.
      </td>
    </tr>

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

      <td>
        `rate_limit_error`
      </td>

      <td>
        Het maximale aantal gelijktijdige requests is overschreden. Hogere abonnementsniveaus hebben een hogere
        concurrencylimiet.
      </td>
    </tr>

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

      <td>
        `rate_limit_error`
      </td>

      <td>
        Het systeem is momenteel bezig. Probeer het later opnieuw.
      </td>
    </tr>

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

      <td>
        `payment_required`
      </td>

      <td>
        Je account heeft niet genoeg credits voor deze bewerking.
      </td>
    </tr>

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

      <td>
        `internal_error`
      </td>

      <td>
        Er is een onverwachte fout opgetreden. Neem contact op met support als dit aanhoudt.
      </td>
    </tr>

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

      <td>
        `service_unavailable`
      </td>

      <td>
        De service is tijdelijk niet beschikbaar. Probeer het later opnieuw.
      </td>
    </tr>

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

      <td>
        `service_unavailable`
      </td>

      <td>
        De service ondergaat gepland onderhoud.
      </td>
    </tr>
  </tbody>
</table>