> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getqr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fouten

> Foutformaat en foutcodes van de GetQR API.

> [!NOTE]
>
> De GetQR API is in bèta en beschikbaar voor geselecteerde workspaces. Details kunnen nog veranderen vóór de algemene release.

De GetQR API gebruikt standaard HTTP-statuscodes. Geslaagde verzoeken geven `2xx` terug. Mislukte verzoeken geven `4xx` of `5xx` terug, met een JSON-body die uitlegt wat er misging.

## Foutformaat

Elke fout heeft dezelfde vorm: een vaste code, een leesbaar bericht en een link naar de beschrijving van die code.

```json theme={null}
{
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized: Invalid API key.",
    "doc_url": "https://getqr.com/account/api-docs#error-unauthorized"
  }
}
```

**error.code** `string` *required*

Vaste, machineleesbare foutcode. Gebruik deze in je code in plaats van het bericht. Zie [Foutcodes](#foutcodes).

**error.message** `string` *required*

Leesbare beschrijving van het probleem. De formulering kan veranderen.

**error.doc\_url** `string` *required*

Link naar de beschrijving van de foutcode in de API-documentatie in je GetQR-account.

## Foutcodes

| Code | HTTP-status | Wanneer het gebeurt |
| - | - | - |
| `bad_request` | 400 | Het verzoek is ongeldig: de body is geen geldige JSON, de `Authorization`-header mist het voorvoegsel `Bearer `, of de actie is niet toegestaan in de huidige staat van de resource (bijvoorbeeld een voltooide bulkaanmaak annuleren). |
| `unauthorized` | 401 | De API-sleutel ontbreekt of is ongeldig, bijvoorbeeld omdat hij opnieuw is gegenereerd. |
| `forbidden` | 403 | Het abonnement van de Admin van de workspace is niet actief, of je rol in de workspace staat deze actie niet toe. |
| `exceeded_limit` | 403 | Je hebt een limiet van je abonnement bereikt. Bij het Single QR-abonnement: een QR-code maken of dupliceren terwijl de workspace er al een heeft, of een bulkaanmaak starten. |
| `not_found` | 404 | De resource bestaat niet of hoort niet bij je workspace, het endpoint bestaat niet, of de API is niet ingeschakeld voor je workspace. |
| `method_not_allowed` | 405 | Het endpoint bestaat, maar accepteert deze HTTP-methode niet. De `Allow`-header noemt de methoden die het wel accepteert. |
| `conflict` | 409 | Het verzoek botst met bestaande gegevens: de slug van de korte link is al bezet, een verzoek met dezelfde `Idempotency-Key` loopt nog, een planning overlapt met een bestaande, of een bulkarchief is nog niet klaar. |
| `invite_pending` | 409 | Je bent uitgenodigd voor de workspace, maar bent nog niet lid geworden. Verzoeken met een API-sleutel geven deze code niet terug: de workspace van de sleutel is altijd een workspace waar je lid van bent. |
| `invite_expired` | 410 | Je uitnodiging voor de workspace is verlopen. Verzoeken met een API-sleutel geven deze code om dezelfde reden niet terug. |
| `unprocessable_entity` | 422 | De body of de queryparameters zijn niet door de validatie gekomen. Het bericht noemt het veld en wat er mis mee is. Zie [Validatiefouten](#validatiefouten). |
| `rate_limit_exceeded` | 429 | De API-sleutel heeft zijn verzoeken voor het huidige venster opgebruikt. Zie [Rate limits](https://docs.getqr.com/nl/api/rate-limits.md). |
| `internal_server_error` | 500 | Er ging iets mis aan onze kant. Probeer het later opnieuw en neem contact op met support als het blijft gebeuren. |

## Validatiefouten

Komen de body of de queryparameters niet door de validatie, dan antwoordt de API met `422`. Het bericht beschrijft het eerste ongeldige veld als `<issue>: <field>: <details>`:

```json theme={null}
{
  "error": {
    "code": "unprocessable_entity",
    "message": "too_big: pageSize: Max page size is 100.",
    "doc_url": "https://getqr.com/account/api-docs#error-unprocessable_entity"
  }
}
```

Geneste velden gebruiken puntnotatie, bijvoorbeeld `link.url`.

## Fouten afhandelen

* Baseer je logica op `error.code`, niet op `error.message`.
* Probeer `4xx`-fouten niet ongewijzigd opnieuw: pas eerst het verzoek aan. Uitzonderingen zijn een `409` voor een verzoek dat nog loopt en `429`.
* Wacht bij `429` het aantal seconden uit de `Retry-After`-header. Zie [Rate limits](https://docs.getqr.com/nl/api/rate-limits.md#als-je-over-de-limiet-gaat).
* Probeer `5xx`-fouten opnieuw met exponentiële backoff.

## Veelvoorkomende problemen

> [accordion] Elk verzoek geeft 404 "This endpoint is not available."
>
> De API is in bèta en nog niet ingeschakeld voor je workspace.

> [accordion] 404 "This endpoint does not exist."
>
> Het pad klopt niet. Vergelijk het met de endpointpagina's en controleer of het begint met `/api/v1/`.

> [accordion] 403 "Access denied: This account does not have an active subscription."
>
> Het abonnement van de Admin van de workspace is afgelopen. De API-sleutel werkt weer zodra de Admin opnieuw een abonnement afsluit.

> [accordion] 403 "API access is not available for this role."
>
> Je rol in de workspace is Viewer. Alleen de Admin van de workspace en Editors kunnen de API gebruiken.

## Volgende stappen

> [card] [Rate limits](https://docs.getqr.com/nl/api/rate-limits.md)

> [card] [Authenticatie](https://docs.getqr.com/nl/api/authentication.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.