> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.laposta.org/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.laposta.org/_mcp/server.

# Wat zijn de limieten en foutmeldingen van de API?

> Hoeveel aanvragen de API per minuut toestaat en welke status- en foutcodes je kunt terugkrijgen.

## Hoeveel aanvragen mag je doen?

De API beperkt het aantal aanvragen per minuut per account.

| Accounttype | Aanvragen per minuut |
| ----------- | -------------------- |
| Gratis      | 30                   |
| Betaald     | 120                  |

Ga je eroverheen, dan krijg je een `429` met een header die vertelt hoelang je moet wachten:

```http
HTTP/1.1 429 Too Many Requests
Retry-After: 60
```

```json
{
  "error": {
    "type": "invalid_request",
    "message": "Rate limit exceeded, try again after 60 seconds"
  }
}
```

Er zijn geen headers die je verbruik bijhouden zolang het goed gaat. Wacht dus op de `Retry-After` en houd zelf bij hoeveel aanvragen je verstuurt. Cache daarnaast wat zelden verandert: de velden van een lijst hoef je niet bij elke paginaweergave op te halen, één keer per dag is genoeg.

## Hoe ziet een foutmelding eruit?

Alle foutmeldingen hebben dezelfde opbouw, dus je kunt ze op één plek afvangen. Elke fout komt terug als JSON met een `type`, een `message`, en meestal een `code` en de `parameter` die de fout veroorzaakte.

```json
{
  "error": {
    "type": "invalid_input",
    "message": "Email: invalid address",
    "code": 208,
    "parameter": "email"
  }
}
```

Het veld `type` kan drie waarden hebben: `invalid_request` als de aanroep zelf niet klopt, `invalid_input` als de meegestuurde gegevens niet kloppen, en `internal` als het aan de kant van Laposta misgaat.

## Statuscodes

De API gebruikt gewone HTTP-statuscodes om aan te geven hoe de aanvraag is verlopen.

| Code  | Betekenis                                                                          |
| ----- | ---------------------------------------------------------------------------------- |
| `200` | Gelukt.                                                                            |
| `201` | Gelukt, en er is iets aangemaakt.                                                  |
| `400` | Er klopt iets niet aan de aanvraag of aan de meegestuurde gegevens.                |
| `401` | Geen geldige sleutel meegestuurd, of dit endpoint staat niet aan voor dit account. |
| `402` | De gegevens klopten, maar de aanvraag is niet uitgevoerd.                          |
| `404` | Dit pad bestaat niet.                                                              |
| `429` | Te veel aanvragen in een minuut.                                                   |
| `500` | Er ging iets mis aan de kant van Laposta.                                          |

> **Warning**
>
> Een object dat niet bestaat geeft geen `404` maar een `400` met foutcode `203`. Test dus niet op `404` om te zien of een lijst of relatie bestaat, want die krijg je alleen bij een pad dat niet bestaat.

## Foutcodes

Bij `invalid_input` staat een numerieke code, zodat je de fout kunt vertalen naar een melding voor je eigen gebruiker. Samen met `parameter` weet je precies om welk veld het gaat.

| Code  | Betekenis                                                                             |
| ----- | ------------------------------------------------------------------------------------- |
| `201` | De parameter is leeg.                                                                 |
| `202` | De opgegeven waarde heeft niet de juiste vorm.                                        |
| `203` | De opgegeven waarde bestaat niet, bijvoorbeeld een id dat niet bij dit account hoort. |
| `204` | De waarde bestaat al.                                                                 |
| `205` | De waarde is geen getal.                                                              |
| `206` | De waarde is geen `true` of `false`.                                                  |
| `207` | De waarde is geen datum.                                                              |
| `208` | De waarde is geen e-mailadres.                                                        |
| `209` | De waarde is geen URL.                                                                |
| `210` | De waarde is geen geldige JSON.                                                       |
| `999` | Er is iets anders mis met de waarde.                                                  |

Een id van een ander account geeft dezelfde melding als een id dat nergens bestaat: `Unknown list`, met code `203`. Dat is met opzet, zodat niet te zien is wat er in andere accounts staat.

## Gerelateerde artikelen

#### [Wat zijn veelgemaakte fouten met de API?](/veelgemaakte-fouten-met-de-api)

Valkuilen bij koppelingen met de Laposta API, met de foutmelding die je krijgt en de…

#### [Relaties synchroniseren via de API](/relaties-synchroniseren-via-de-api)

Houd je lijst gelijk aan je webshop of CRM: toevoegen, bijwerken, afmelden en fouten…

#### [Hoe werken datum- en tijdvelden in de API?](/api-datum-en-tijdvelden)

De API gebruikt twee formaten voor datums en tijden. Lees hoe je die uitleest en…