> 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 veelgemaakte fouten met de API?

> Valkuilen bij koppelingen met de Laposta API, met de foutmelding die je krijgt en de oplossing.

## Een onbekend id geeft geen 404

Test je of een lijst of relatie bestaat door op een `404` te controleren, dan mis je elk onbekend id. De API geeft in dat geval een `400`:

```json
{ "error": { "type": "invalid_input", "message": "Unknown list", "code": 203, "parameter": "list_id" } }
```

Een `404` krijg je alleen bij een pad dat niet bestaat, bijvoorbeeld een typefout in de URL. Controleer dus op `code` `203` in plaats van op de statuscode.

Let daarbij op het verschil tussen twee codes: een id of e-mailadres dat niet in de lijst bestaat geeft `203`, terwijl `202` ("Invalid member_id") betekent dat de syntax van de parameter niet klopt.

## Een leeg meerkeuzeveld wordt niet leeggemaakt

Stuur je voor een `select_multiple`-veld een lege lijst mee, dan verdwijnen de keuzes niet. De bestaande waarden blijven staan en je krijgt gewoon een `200` terug zonder foutmelding.

**`curl`**

```bash title="curl"
curl https://api.laposta.nl/v2/member/relatie@example.net \
  -u JOUW_API_SLEUTEL: \
  -d list_id=BaImMu3JZA \
  -d "custom_fields[interesses][]="
```

**`PHP`**

```php title="PHP"
$laposta = new Laposta('JOUW_API_SLEUTEL');
$laposta->memberApi()->update('BaImMu3JZA', 'relatie@example.net', [
    'custom_fields' => ['interesses' => ['']],
]);
```

Wil je zeker weten dat een selectie leeg is, controleer dan het antwoord en meld het via [helpdesk@laposta.nl](mailto:helpdesk@laposta.nl) als er nog waarden in staan.

## Labels meesturen zonder vierkante haken werkt niet

Een relatie kan meerdere [labels](/labels) hebben, dus het veld verwacht een reeks. Stuur je één waarde zonder haken, dan krijg je zonder foutmelding een `200` terug met de relatie erin, en is er niets veranderd.

**`curl`**

```bash title="curl"
-d "custom_fields[labels]=Klant"      # slaagt, maar doet niets
-d "custom_fields[labels][]=Klant"    # zo hoort het
```

**`PHP`**

```php title="PHP"
'custom_fields' => ['labels' => 'Klant']      // slaagt, maar doet niets
'custom_fields' => ['labels' => ['Klant']]    // zo hoort het
```

Het veld `labels` bestaat pas zodra de lijst minstens één label heeft. Daarvoor zie je het niet terug bij de velden of bij de relatie. Je kunt er ook geen label mee aanmaken: een naam die de lijst niet kent geeft een `400`.

```json
{ "error": { "type": "invalid_input", "message": "Field labels: unknown option", "code": 203, "parameter": "labels" } }
```

Stuur altijd de naam en niet het id uit `options_full`. Een id geeft dezelfde melding.

Bij bulk stuur je JSON, dus geen haken maar een array. Stuur je daar een losse tekst mee, dan telt de API de relatie als gewijzigd zonder foutmelding, maar zijn de labels van die relatie daarna leeg.

```json
"custom_fields": { "labels": "Klant" }     // 200, edited_count 1, labels daarna leeg
"custom_fields": { "labels": ["Klant"] }   // zo hoort het
```

Stuur je in bulk een onbekend label mee, dan komt die relatie in `errors` te staan met dezelfde code `203`, en wordt die niet toegevoegd.

## Bulk staat standaard uit

Het endpoint voor bulk-synchronisatie bestaat in elk account, maar geeft zonder toestemming een `401` terug:

```json
{ "error": { "type": "invalid_request", "message": "Not permitted to issue bulk requests (1)" } }
```

Dat is geen fout in je code. Wie bulk kan gebruiken en hoe je het laat inschakelen, staat bij [Relaties synchroniseren via de API](/relaties-synchroniseren-via-de-api).

## Een campagne wordt dubbel verzonden bij een tweede aanroep

Roep je [Campagne verzenden](/campagnes/campagne-verzenden) twee keer aan, dan krijg je beide keren een `200` en wordt de verzending opnieuw in gang gezet. Hoe je dat in je eigen code voorkomt, staat bij [Campagne versturen via de API](/campagne-versturen-via-de-api).

Ook het wijzigen van een al verzonden campagne wordt niet geblokkeerd.

## Campagne-inhoud opvragen werkt niet bij elke campagne

Vraag je de inhoud op van een campagne die in de drag & drop-editor is gemaakt, dan krijg je:

```json
{ "error": { "type": "invalid_input", "message": "Wrong campaign type", "code": 203, "parameter": "campaign_id" } }
```

Dat is geen storing. Bij welke campagnes het wel kan, staat bij [Campagne versturen via de API](/campagne-versturen-via-de-api).

## Het \_iso-veld kan ontbreken

Bij een leeg datumveld ontbreekt de `_iso`-variant soms helemaal in het antwoord, in plaats van dat hij `null` is. Controleer dus eerst of dit veld in het antwoord zit voordat je het uitleest, anders loopt je code vast op een ontbrekende sleutel. Zie: [Datum- en tijdvelden in de API](/api-datum-en-tijdvelden).

## Je zit snel aan de limiet voor het aantal aanvragen

Op een gratis account mag je 30 aanvragen per minuut doen, op een betaald account 120. Een synchronisatie die per relatie een aanroep doet, zit daar bij een paar honderd relaties zo doorheen.

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

Wacht het aantal seconden uit de `Retry-After`-header af in plaats van meteen opnieuw te proberen, en gebruik voor grote aantallen de [bulk-synchronisatie](/lijsten/lijst-synchroniseren-bulk). Meer hierover lees je bij [Limieten en foutmeldingen van de API](/api-limieten-en-foutmeldingen).

## Een onbekende veldnaam in een segment geeft geen foutmelding

Een segment maak je met een definitie in JSON. De API controleert de vorm en de vergelijkingen, maar niet of het veld waarop je selecteert bestaat. Een typefout in een veldnaam levert dus gewoon een `201` op, met een segment dat niemand selecteert.

Controleer de veldnamen in je definitie daarom aan de hand van de velden die je met [Alle velden opvragen](/velden/alle-velden-opvragen) hebt opgehaald.

## Gerelateerde artikelen

#### [Wat zijn de limieten en foutmeldingen van de API?](/api-limieten-en-foutmeldingen)

Hoeveel aanvragen de API per minuut toestaat en welke status- en foutcodes je kunt…

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

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

#### [De API uitproberen met Try it](/api-uitproberen)

Verstuur vanuit je browser een echte aanroep naar de Laposta API, zonder iets te…