---
title: "Fouten"
description: "Verwerk fouten van de AI Glot API met stabiele foutcodes, request-ID's, richtlijnen voor opnieuw proberen en uitleg met ankerlinks voor elke gedocumenteerde fout."
canonical: "https://ai-glot.com/docs/nl/api/errors"
updated: "2026-10-12"
---

# Fouten

Elke API-fout gebruikt dezelfde envelop. Gebruik `error.code` om te bepalen wat je doet, nooit de leesbare foutmelding.

```json title="Voorbeeldfout"
{
  "error": {
    "type": "permission_error",
    "code": "insufficient_scope",
    "message": "This credential is missing the batches:write scope.",
    "docs_url": "https://ai-glot.com/docs/api/errors#insufficient_scope"
  },
  "request_id": "req_example"
}
```

## Statuscodes

| Status  | Betekenis                                                  | Wat je moet doen                              |
| ------- | ---------------------------------------------------------- | --------------------------------------------- |
| 400     | Ongeldig verzoek of onbekend veld                          | Corrigeer het verzoek                         |
| 401     | Referentie ontbreekt, is ongeldig, verlopen of ingetrokken | Vervang of vernieuw de referentie             |
| 403     | Geauthenticeerd, maar geen toestemming                     | Ken de vereiste scope of functie toe          |
| 404     | Resource ontbreekt of valt buiten deze workspace           | Controleer de ID en workspace                 |
| 409     | Huidige status is in strijd met het verzoek                | Lees de resource en bepaal daarna wat je doet |
| 413     | Requestbody is te groot                                    | Verstuur een kleinere body                    |
| 422     | Waarde heeft een geldig formaat, maar is ongeldig          | Corrigeer de genoemde waarde                  |
| 429     | Verzoeklimiet bereikt                                      | Wacht volgens `Retry-After`                   |
| 500/503 | AI Glot is uitgevallen of tijdelijk niet beschikbaar       | Probeer het opnieuw met back-off              |

**Los het probleem op voordat je het opnieuw probeert**

Voor de meeste 400-, 401-, 403-, 404-, 409-, 413- en 422-antwoorden moet je de referentie, identificatie, status of het verzoek aanpassen.

**Probeer het veilig opnieuw**

Probeer het na een 429 opnieuw volgens `Retry-After`; probeer het na een 500 of 503 opnieuw met exponentiële back-off en willekeurige jitter.

> **Note**
>
> Bewaar de `request_id` in logs en supportberichten. Deze ID verwijst naar het serververzoek zonder je API-sleutel of CSV-inhoud bloot te leggen.

## Authenticatie- en toestemmingscodes

### authentication\_required

Er is geen bearer-referentie meegestuurd. Voeg de header `Authorization` toe.

### invalid\_api\_key

De sleutel heeft een ongeldige indeling of is onbekend. Controleer of de volledige waarde `aig_live_…` is gekopieerd.

### api\_key\_expired

De sleutel heeft de ingestelde vervaldatum bereikt. Maak een vervangende sleutel aan of gebruik er een.

### api\_key\_revoked

Een beheerder heeft deze sleutel ingetrokken of vervangen. Werk de integratie bij met een actieve referentie.

### insufficient\_scope

De referentie is geauthenticeerd, maar heeft niet de scope die voor deze bewerking vereist is.

### feature\_not\_available

Het workspace-abonnement of de huidige platformversie bevat de gevraagde functie niet.

### admin\_required

Alleen een workspacebeheerder kan deze bewerking uitvoeren.

## Verzoekcodes

### invalid\_request

Het verzoek kan niet worden geparseerd of voldoet niet aan de specificaties van het endpoint.

### unknown\_field

Een eigenschap in de JSON-body wordt niet herkend. Corrigeer de spelling in plaats van de validatie te verwijderen. Onbekende _queryparameters_ veroorzaken deze fout niet; ze worden genegeerd. Een verkeerd gespeld filter levert dus een ongefilterde `200` op.

### invalid\_parameter

Een parameter heeft het verkeerde type, bereik of formaat.

### invalid\_cursor

De paginatiecursor is ongeldig. Gebruik `next_cursor` precies zoals die is teruggegeven.

### request\_too\_large

De requestbody overschrijdt de harde limiet van het endpoint.

## Resource- en statuscodes

### batch\_not\_found

Er is geen zichtbare vertaling met deze ID. Resources in een andere workspace geven bewust dezelfde fout.

### glossary\_not\_found

Er bestaat geen woordenlijst voor dit taalpaar.

### resource\_not\_found

De aangevraagde resource of route bestaat niet.

### glossary\_already\_exists

Er bestaat al een woordenlijst voor dit taalpaar. Werk die bij in plaats van een nieuwe aan te maken.

### result\_not\_ready

De vertaling is nog niet voltooid, dus er kan nog geen resultaat worden gedownload.

### batch\_not\_editable

De huidige status van de vertaling staat de gevraagde beheerderswijziging niet toe.

## Bestands- en formaatcodes

### unsupported\_format

De bestandsextensie wordt niet door AI Glot geaccepteerd. Bekijk [Bestanden en formaten](/docs/platform/files-and-formats) voor alle ondersteunde formaten en extensies.

### file\_too\_large

Het bestand overschrijdt de limiet voor het betreffende formaat. De limieten gelden per formaat, niet in het algemeen (60 MB voor CSV, 4 MB voor een PO-catalogus). Een bestandsgrootte die voor de ene extensie is toegestaan, kan voor een andere worden geweigerd.

### file\_fetch\_failed

`file_url` kon niet worden opgehaald. De URL moet HTTPS gebruiken en rechtstreeks naar de uiteindelijke bestemming verwijzen. Omleidingen worden niet gevolgd, dus een verkorte link of een ondertekende link die daarna doorverwijst, mislukt.

### file\_retention\_expired

De bewaartermijn van het geüploade bestand is verstreken en het bestand wordt niet meer opgeslagen. Maak de vertaling opnieuw aan op basis van het bronbestand.

### file\_expired

Het bestand waarop deze vertaling is gebaseerd, is verdwenen. De bewerking kan daarom niet worden uitgevoerd.

### result\_too\_large

De voltooide vertaling is te groot om terug te sturen. Splits het bronbestand op en vertaal de delen afzonderlijk.

## Abonnements- en goedkeuringscodes

### plan\_invalid

De instructie of verfijning kon niet worden omgezet in een bruikbaar plan. Formuleer de instructie anders. Het is betrouwbaarder om de te vertalen velden of kolommen te benoemen dan ze alleen te beschrijven.

### plan\_changed

De ingediende `expected_plan_revision` komt niet overeen met het huidige plan dat ter beoordeling klaarstaat, of die revisie kan niet worden geverifieerd. Deze goedkeuring heeft geen nieuw werk gestart. Lees de batch opnieuw, controleer de huidige scope, uitsluitingen en berekende kosten en beslis daarna of je met de nieuwe revisie wilt goedkeuren. Probeer de oude goedkeuring niet zomaar opnieuw.

### no\_plan\_yet

Er is geprobeerd goed te keuren voordat er een plan bestond. Roep eerst [`POST /v1/batches/{batch_id}/plan`](/docs/api/translations/plan) aan. Deze controle voorkomt dat een integratie een workspace kosten in rekening brengt voor een vertaling die niemand heeft beschreven.

### batch\_not\_awaiting\_approval

De vertaling heeft geen status waarvoor goedkeuring nodig is. Meestal is de vertaling al bezig of al voltooid. Vraag de status op met [`GET /v1/batches/{batch_id}`](/docs/api/translations/retrieve) in plaats van opnieuw goed te keuren.

### insufficient\_credits

Het saldo van de workspace is niet toereikend voor de berekende kosten van het plan (HTTP 402). Er wordt niets gereserveerd, dus je kunt de vertaling goedkeuren zodra er credits zijn toegevoegd.

De fout bevat een `payment`-object, zowel in de REST API als in de MCP-tool `approve_translation`:

```json
"payment": {
  "credits_needed": 30000,
  "credit_balance": 5000,
  "credits_missing": 25000,
  "credits_to_buy": 25000,
  "price_eur": 25,
  "payment_url": "https://app.ai-glot.com/w/<workspace_id>/new?continue=<batch_id>&pay=1",
  "plans": [
    { "plan": "Starter", "eur_per_month": 42, "credits_per_month": 100000 },
    { "plan": "Pro", "eur_per_month": 199, "credits_per_month": 1000000 }
  ]
}
```

`credits_to_buy` is de kleinste aankoop waarmee het tekort wordt aangevuld (de minimale aankoop geldt). `payment_url` opent deze vertaling in AI Glot met het aankoopvenster al geopend. Je ziet daar het exacte bedrag, de creditpakketten en abonnementen, plus het gratis voorbeeld als de workspace daarvoor in aanmerking komt. De link werkt alleen voor een aangemeld workspace-lid en kan daarom veilig worden weergegeven. In `plans` staan de maandabonnementen, die voordeliger zijn per credit voor wie regelmatig vertaalt. Op dezelfde pagina worden ze onder de eenmalige aankoop weergegeven.

Een agent moet eerst de gebruiker om toestemming vragen voordat de link wordt aangeboden, mag niet namens diegene betalen en moet na de betaling het saldo controleren met [`GET /v1/account`](/docs/api/account/get-account). Keur de vertaling pas opnieuw goed nadat de gebruiker dit heeft bevestigd. De gebruiker kan de vertaling ook vanaf die pagina starten.

## Taal- en woordenlijstcodes

### language\_not\_supported

De tag valt buiten de ondersteunde catalogus. Lees [`GET /v1/languages`](/docs/api/languages/list).

### invalid\_language\_pair

De identificatie van het taalpaar kan niet worden opgesplitst in twee ondersteunde BCP 47-tags.

### glossary\_term\_limit\_reached

Het aantal termen zou de limiet van het workspace-abonnement overschrijden. De update wordt in zijn geheel uitgevoerd of helemaal niet; er is niets gewijzigd.

### glossary\_limit\_reached

De workspace heeft het maximumaantal woordenlijsten voor het huidige abonnement bereikt.

### invalid\_glossary\_terms

Een of meer woordenlijsttermen zijn leeg, onvolledig of anderszins ongeldig.

## Servicecodes

### rate\_limited

De referentie heeft de limiet binnen een rate window overschreden. Wacht volgens `Retry-After` en probeer het daarna opnieuw met jitter.

### internal\_error

AI Glot is onverwacht uitgevallen. Probeer het opnieuw met back-off en bewaar de `request_id`.

### service\_unavailable

Een vereiste service is tijdelijk niet beschikbaar. Probeer het opnieuw met back-off.
