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

# Anfragen und Antworten

> Sende JSON, rufe Listen ab und gehe mit Fehlern und API-Limits um.

Verwende die Methode, die beim jeweiligen Endpunkt angegeben ist: `GET` zum Abrufen, `POST` zum Erstellen, `PATCH` zum Aktualisieren und `DELETE` zum Löschen. Beim Erstellen eines Kontakts kann Tapify auch einen bestehenden Kontakt anhand seiner E-Mail-Adresse aktualisieren.

## JSON senden

Sende bei `POST` und `PATCH` ein JSON-Objekt mit `Content-Type: application/json`:

```bash theme={null}
curl https://tapify.app/api/v1/contacts \
  --request POST \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{"fullName":"Mina Park","email":"mina@example.com"}'
```

Sende nur die für den Endpunkt beschriebenen Felder. Lass bei einer Aktualisierung alle Felder weg, deren Wert du behalten möchtest. Mit `null` leerst du ein optionales Textfeld. Arrays wie `tags` und `contactDetails` ersetzen beim Senden die vollständige Liste; `[]` entfernt alle Einträge.

## Erfolgreiche Antworten

Bei Workspaces, Kontakten und Teammitgliedern steht das Ergebnis unter `data`. Listen enthalten zusätzlich `pagination`. Ein erfolgreiches Löschen liefert `204 No Content` ohne Antwortinhalt.

Die Endpunkte zum Erstellen von Kontakten und Teammitgliedern liefern `201` für ein neues Element oder `200`, wenn ein bestehendes Element gefunden wird. Den Unterschied erkennst du an `data.created`. Bei einem bestehenden Kontakt werden die gesendeten Felder aktualisiert. Ein bestehendes Teammitglied wird unverändert zurückgegeben.

> [!NOTE]
>
> Die Zapier-Endpunkte für Trigger verwenden eine andere Antwortstruktur: Kontaktbeispiele werden direkt als Array und Abonnements direkt als Objekt zurückgegeben. Der jeweilige Zapier-Endpunkt zeigt die passende Struktur.

## Paginierung

Die Listenendpunkte für Kontakte und Teammitglieder liefern bis zu 100 Elemente pro Anfrage.

| Parameter | Funktion | Standard |
| - | - | - |
| `limit` | Anzahl der Elemente, von 1 bis 100 | `100` |
| `offset` | Anzahl der zu überspringenden Elemente | `0` |

So fragst du beispielsweise einen Kontakt ab:

```bash theme={null}
curl "https://tapify.app/api/v1/contacts?limit=1&offset=0" \
  --header "Authorization: Bearer YOUR_API_KEY"
```

In diesem Beispiel sind einige Kontaktfelder weggelassen:

```json theme={null}
{
  "data": [
    {
      "id": "f08f7c49-8f1e-42ac-b5ac-e0d6bd37d938",
      "fullName": "Mina Park"
    }
  ],
  "pagination": {
    "limit": 1,
    "offset": 0,
    "total": 74,
    "hasMore": true
  }
}
```

Addiere für die nächste Anfrage die Anzahl der erhaltenen Elemente zu `offset`. Beende den Abruf, sobald `hasMore` den Wert `false` hat. Verwende durchgehend dieselbe Sortierung. Listen können sich während des Abrufs ändern. Nutze deshalb die `id` jedes Elements, damit du es nicht doppelt verarbeitest.

Kontakte lassen sich auch [nach Erstellungs- oder Änderungsdatum sortieren](https://docs.tapify.app/de/api-reference/contacts/list.md#choose-the-order). Diese Listenendpunkte bieten weder einen Suchfilter noch einen Filter für Datumsbereiche.

## Fehler

Feldnamen und Fehlermeldungen der API bleiben auf Englisch. Fehler unterstützter Endpunkte enthalten einen Code und eine Meldung:

```json theme={null}
{
  "error": {
    "code": "bad_request",
    "message": "fullName is required."
  }
}
```

Manche Fehler enthalten unter `details` zusätzliche Informationen. Entscheide anhand des HTTP-Status und Fehlercodes, was zu tun ist.

| Status | Code | Was solltest du prüfen? |
| - | - | - |
| `400` | `bad_request` | Pflichtfelder, Feldwerte und JSON-Format. |
| `401` | `invalid_api_key` | Den vollständigen API-Schlüssel und den Authentifizierungsheader. |
| `402` | `subscription_required` | Teams-Connect-Zugriff und den Zahlungsstatus des Workspaces. |
| `404` | `not_found` | Die ID des Elements und den mit dem Schlüssel verbundenen Workspace. |
| `409` | `conflict` | Die E-Mail-Adresse des Teammitglieds wird bereits außerhalb dieses Workspaces verwendet. |
| `413` | `payload_too_large` | Allgemeine JSON-Bodies dürfen höchstens 256 KB (262.144 Byte) groß sein. Für Anfragen zu Zapier-Abonnements gilt ein Limit von 8 KB. |
| `429` | `rate_limited` | Warte die unter `Retry-After` angegebene Anzahl an Sekunden. |
| `500` | `internal_error` | Versuche es nach einer kurzen Wartezeit erneut. [Kontaktiere den Support](https://tapify.app/de/kontakt/support), wenn der Fehler weiterhin auftritt. |

Eine nicht unterstützte HTTP-Methode liefert `405 Method Not Allowed`. Diese Antwort verwendet möglicherweise nicht das oben gezeigte JSON-Fehlerformat.

## Limits und erneute Versuche

Die Limits gelten pro API-Schlüssel:

| Anfragetyp | Limit |
| - | - |
| `GET` | 120 pro Minute |
| `POST`, `PATCH` und `DELETE` zusammen | 30 pro Minute |

Eine `429`-Antwort enthält `Retry-After` in Sekunden. Warte mindestens so lange, bevor du es erneut versuchst.

> [!TIP]
>
> Prüfe nach einem Timeout oder Serverfehler bei einer Schreibanfrage zuerst, ob die Änderung bereits erfolgt ist. Wiederholtes Erstellen eines Kontakts ohne E-Mail-Adresse kann zu doppelten Kontakten führen.

## Datumsangaben und IDs

Datumsangaben verwenden ISO 8601, etwa `2026-07-28T09:30:00.000Z`. Leere optionale Felder sind meist `null`. Speichere IDs als Strings und verwende in späteren Anfragen die von Tapify zurückgegebenen IDs.


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