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

# Was sind häufige Fehler bei der API?

> Stolpersteine bei Verbindungen mit der Laposta API, mit dem Fehler, den Sie erhalten, und der Lösung.

## Eine unbekannte ID liefert keinen 404

Wenn Sie prüfen, ob eine Liste oder ein Abonnent existiert, indem Sie auf einen `404` testen, übersehen Sie jede unbekannte ID. Die API gibt in diesem Fall einen `400` zurück:

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

Einen `404` erhalten Sie nur bei einem Pfad, der nicht existiert, beispielsweise bei einem Tippfehler in der URL. Prüfen Sie daher auf `code` `203` anstatt auf den Statuscode.

Achten Sie dabei auf den Unterschied zwischen zwei Codes: Eine ID oder E-Mail-Adresse, die in der Liste nicht existiert, liefert `203`, während `202` ("Invalid member_id") bedeutet, dass die Syntax des Parameters nicht stimmt.

## Ein leeres Mehrfachauswahlfeld wird nicht geleert

Wenn Sie für ein `select_multiple`-Feld eine leere Liste mitsenden, werden die ausgewählten Optionen nicht entfernt. Die bestehenden Werte bleiben erhalten und Sie erhalten einfach einen `200` ohne Fehlermeldung zurück.

**`curl`**

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

**`PHP`**

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

Wenn Sie sicherstellen möchten, dass eine Auswahl leer ist, prüfen Sie die Antwort und melden Sie es über [helpdesk@laposta.nl](mailto:helpdesk@laposta.nl), falls noch Werte darin enthalten sind.

## Labels ohne eckige Klammern mitzusenden funktioniert nicht

Ein Abonnent kann mehrere [Labels](/labels) haben, daher erwartet das Feld eine Liste von Werten. Wenn Sie einen einzelnen Wert ohne Klammern senden, erhalten Sie ohne Fehlermeldung einen `200` mit dem Abonnenten zurück, ohne dass sich etwas geändert hat.

**`curl`**

```bash title="curl"
-d "custom_fields[labels]=Kunde"      # erfolgreich, bewirkt aber nichts
-d "custom_fields[labels][]=Kunde"    # so ist es richtig
```

**`PHP`**

```php title="PHP"
'custom_fields' => ['labels' => 'Kunde']      // erfolgreich, bewirkt aber nichts
'custom_fields' => ['labels' => ['Kunde']]    // so ist es richtig
```

Das Feld `labels` existiert erst, sobald die Liste mindestens ein Label hat. Davor wird es weder bei den Feldern noch beim Abonnenten angezeigt. Sie können damit auch kein neues Label anlegen: Ein Name, den die Liste nicht kennt, führt zu einem `400`.

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

Senden Sie immer den Namen und nicht die ID aus `options_full`. Eine ID führt zur gleichen Meldung.

Bei Bulk-Anfragen senden Sie JSON, also keine Klammern, sondern ein Array. Wenn Sie dort einen einzelnen Textwert mitsenden, zählt die API den Abonnenten ohne Fehlermeldung als geändert, aber die Labels dieses Abonnenten sind danach leer.

```json
"custom_fields": { "labels": "Kunde" }     // 200, edited_count 1, Labels danach leer
"custom_fields": { "labels": ["Kunde"] }   // so ist es richtig
```

Wenn Sie bei einer Bulk-Anfrage ein unbekanntes Label mitsenden, landet dieser Abonnent mit demselben Code `203` in `errors` und wird nicht hinzugefügt.

## Bulk ist standardmäßig deaktiviert

Der Endpunkt für die Bulk-Synchronisierung existiert in jedem Konto, gibt aber ohne Freischaltung einen `401` zurück:

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

Das ist kein Fehler in Ihrem Code. Wer Bulk verwenden kann und wie Sie die Funktion freischalten lassen, erfahren Sie unter [Abonnenten über die API synchronisieren](/relaties-synchroniseren-via-de-api).

## Eine Kampagne wird bei einem zweiten Aufruf doppelt gesendet

Wenn Sie [Kampagne versenden](/campagnes/campagne-verzenden) zweimal aufrufen, erhalten Sie beide Male einen `200` und die Zustellung wird erneut gestartet. Wie Sie das in Ihrem eigenen Code verhindern, lesen Sie unter [Kampagne über die API versenden](/campagne-versturen-via-de-api).

Auch das Ändern einer bereits gesendeten Kampagne wird nicht blockiert.

## Das Abrufen von Kampagneninhalten funktioniert nicht bei jeder Kampagne

Wenn Sie den Inhalt einer Kampagne abrufen, die im Drag-and-Drop-Editor erstellt wurde, erhalten Sie:

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

Das ist keine Störung. Bei welchen Kampagnen dies möglich ist, steht unter [Kampagne über die API versenden](/campagne-versturen-via-de-api).

## Das \_iso-Feld kann fehlen

Bei einem leeren Datumsfeld fehlt die `_iso`-Variante in der Antwort manchmal vollständig, anstatt `null` zu sein. Prüfen Sie daher zuerst, ob dieses Feld in der Antwort vorhanden ist, bevor Sie es auslesen, da Ihr Code sonst wegen eines fehlenden Schlüssels abbricht. Siehe: [Datums- und Zeitfelder in der API](/api-datum-en-tijdvelden).

## Das Limit für die Anzahl der Anfragen ist schnell erreicht

Mit einem kostenlosen Konto dürfen Sie 30 Anfragen pro Minute stellen, mit einem bezahlten Konto 120. Eine Synchronisierung, die pro Abonnent einen Aufruf durchführt, erreicht dieses Limit bei ein paar hundert Abonnenten sehr schnell.

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

Warten Sie die Anzahl der Sekunden aus dem `Retry-After`-Header ab, anstatt es sofort erneut zu versuchen, und nutzen Sie für große Mengen die [Bulk-Synchronisierung](/lijsten/lijst-synchroniseren-bulk). Mehr dazu lesen Sie unter [Limits und Fehlermeldungen der API](/api-limieten-en-foutmeldingen).

## Ein unbekannter Feldname in einem Segment erzeugt keine Fehlermeldung

Ein Segment erstellen Sie mit einer Definition in JSON. Die API prüft die Struktur und die Vergleiche, aber nicht, ob das Feld, nach dem Sie filtern, tatsächlich existiert. Ein Tippfehler in einem Feldnamen liefert also trotzdem einen `201`, führt aber zu einem Segment, das niemanden auswählt.

Prüfen Sie die Feldnamen in Ihrer Definition daher anhand der Felder, die Sie über [Alle Felder abrufen](/velden/alle-velden-opvragen) abgefragt haben.

## Verwandte Artikel

#### [Was sind die Limits und Fehlermeldungen der API?](/api-limieten-en-foutmeldingen)

Wie viele Anfragen die API pro Minute zulässt und welche Status- und Fehlercodes Sie…

#### [Abonnenten über die API synchronisieren](/relaties-synchroniseren-via-de-api)

Halten Sie Ihre Liste synchron mit Ihrem Webshop oder CRM: Hinzufügen, Aktualisieren…

#### [Die API mit Try it ausprobieren](/api-uitproberen)

Senden Sie aus Ihrem Browser einen echten Aufruf an die Laposta API, ohne etwas zu…