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

# Überblick

> Überblick über die REST-Endpoints der Kameleoon Data API zum Abrufen und Schreiben von Besucherereignissen, Produktdaten und externen Map-Daten.

Die **Data API** ist eine REST-API, die auf den Remote-Servern von Kameleoon gespeicherte Daten abruft oder schreibt. Verwenden Sie die verfügbaren Endpoints, um:

* Besuchsereignisse für einen bestimmten Besucher abzurufen.
* Zusätzliche Besuchsereignisse für einen bestimmten Besucher zu senden, wie zum Beispiel Offline-Konversionsereignisse.
* Produktdaten für einen bestimmten Sitecode zu senden und abzurufen.
* Zusätzliche Daten für einen bestimmten Besucher zu speichern, wie zum Beispiel CRM- oder Segmentierungsdaten.

## Data-API-Endpoints

**Die Endpoints lassen sich in drei Hauptkategorien von Daten einteilen:**

### Visit-Endpoints

Die **Visit-Endpoints** rufen Ereignisse (Conversions, Custom Data, Segmente und mehr) für einen bestimmten Besuchercode ab und senden sie. Verwenden Sie diese Endpoints, um Offline-Kaufdaten, wie zum Beispiel Einkäufe im stationären Handel, in Kameleoon zu importieren.

* [GET /visit/visitor](/api-reference/visit/get-visitor-data): Dieser Endpoint ruft die von Kameleoon erfassten Besuchsdaten ab, wie zum Beispiel Experimente und Personalisierungen, die für den Benutzer ausgelöst wurden, oder gezielte Segmente.

<Note>
  Der Zugriff auf diesen Endpoint erfordert die Kameleoon-Lösung [Feature Experimentation](../../feature-experimentation/targeting-and-segmentation/native-segmentation#handling-data-in-kameleoon-sdks). Weitere Informationen erhalten Sie beim Customer Success Manager.
</Note>

* [POST /visit/forget](/api-reference/visit/remove-data-for-several-visitors): Dieser Endpoint entfernt Daten für mehrere Besucher.
* [POST /visit/events](/api-reference/visit/send-visitor-events): Dieser Endpoint sendet Daten für einen bestimmten Besucher, wie zum Beispiel Konversions- und Seitenaufruf-Ereignisse.

### Product-Endpoints

Die **Product-Endpoints** rufen Produktdaten für einen bestimmten Sitecode ab und senden sie. Verwenden Sie diese Endpoints, um produktbezogene Ereignisse wie Ansichten, Hinzufügen zum Warenkorb oder Kaufereignisse zu registrieren oder um Statistiken zu bestimmten Produkten abzurufen, wie historische Kauf- oder Aufrufzahlen.

* [POST /product/events](/api-reference/product/send-product-events): Dieser Endpoint sendet Produktattribute und Ereignisse (Ansicht, Hinzufügen zum Warenkorb und Kauf) für mehrere Produkte. Die [Activation API](../activation-api-js/api-reference/api-reference#kameleoonapiproducts) verwendet die Methoden `obtainProductData` und `obtainProductInteractions`, um diese Daten abzurufen und für Targeting oder Empfehlungen zu verwenden.
* [GET /product/productCounters](/api-reference/product/get-product-counters): Dieser Endpoint ruft Zählwerte (Anzahl der Aufrufe, Mengen im Warenkorb, Transaktionsmengen) für mehrere Produkte ab.
* [GET /product/productData](/api-reference/product/get-product-data): Dieser Endpoint ruft Attribute für mehrere Produkte ab.

<Note>
  Sie benötigen Zugriff auf das Product Recommendation-Modul oder das Product Targeting-Add-on. Beide lassen sich in die Lösung [Web Experimentation](https://www.kameleoon.com/en/platform/ab-testing-client-side) integrieren. Weitere Informationen erhalten Sie vom Customer Success Manager.
</Note>

### Map-Endpoints

Die **Map-Endpoints** speichern zusätzliche Daten für einen bestimmten Schlüssel (in der Regel ein Besuchercode oder eine interne User-ID). Die [Activation API](../activation-api-js/api-reference/api-reference#retrievedatafromremotesource) und alle [SDKs](../../sdks/web-sdks/nodejs-sdk#getremotedata) verwenden die Methode `retrieveDataFromRemoteSource`, um diese Daten abzurufen und für Targeting und Segmentierung zu verwenden. Verwenden Sie den `map`-Endpoint, um gespeicherte Daten für einen bestimmten Schlüssel abzurufen.

* [GET /map/map](/api-reference/map/get-data-for-a-key): Dieser Endpoint ruft Daten für einen bestimmten Schlüssel ab.
* [GET /map/maps](/api-reference/map/get-data-for-a-key): Dieser Endpoint ruft Daten für mehrere Schlüssel ab.
* [POST /map/maps](/api-reference/map/update-data-for-several-keys): Dieser Endpoint sendet Daten für mehrere Schlüssel.

## Authentifizierung und Ratenbegrenzung

### Authentifizierung

Die Data API verwendet denselben Authentifizierungsfluss wie die [Automation API](../automation-api-rest/get-started/get-started#authentifizierung) unter Verwendung von JSON Web Tokens.

Wahren Sie die Sicherheit und schützen Sie Ihre API-Anmeldedaten, indem Sie die Authentifizierung für bestimmte Anfragetypen verwenden:

* **Serverseitige Quellen**: Für Anfragen, die von Ihren Servern stammen, empfiehlt Kameleoon die Authentifizierung dringend, da sie die [Ratenbegrenzungen](#ratenbegrenzungen) erhöht. Authentifizieren Sie sich, wenn Sie serverseitige SDKs mit Feature Experimentation verwenden.
* **Clientseitige Quellen**: Für Anfragen, die von einer Clientanwendung wie einem Webbrowser stammen, bei denen API-Anmeldedaten offengelegt werden könnten, sollten Sie sich **nicht authentifizieren**. Kameleoon empfiehlt diese Konfiguration bei der Verwendung von Web Experimentation nicht.

Jede Anfrage, die ein API-Token mit falschem Format, ein abgelaufenes Token oder eine ungültige Signatur bereitstellt, führt zu einer HTTP-401-Antwort „Unauthorized".

Weitere Informationen zum Authentifizierungsprozess finden Sie in der Dokumentation [Automation API Authentication Flow](../automation-api-rest/get-started/get-started#authentifizierung).

<Note>
  Standardmäßig erfordert die Data API keine Authentifizierung, da sie die Web-Experimentation-Engine beim Abrufen historischer Daten unterstützt. Wenn Sie ausschließlich Feature Experimentation und serverseitige SDKs verwenden, kontaktieren Sie den Customer Success Manager, um die Authentifizierung für bestimmte Endpoints zu aktivieren. Kameleoon bietet eine flexible Einrichtung, um Endpoints zu sichern und die Authentifizierung auf GET- oder POST-Anfragen zu beschränken.
</Note>

### Ratenbegrenzungen

Die Data API erzwingt Ratenbegrenzungen basierend auf Ihren **vertraglich vereinbarten monatlichen Unique Visitors (MUV)** und **Ihrer IP-Adresse**. Wenn Ihre Anwendung eine dieser Grenzen überschreitet, gibt die API eine **HTTP 429-„Too Many Requests"**-Antwort zurück.
Diese Ratenbegrenzungen stellen sicher, dass der Kameleoon-Service für alle Kunden leistungsfähig und zuverlässig bleibt.

Für **serverseitige Quellen** können Sie die **IP-basierten Begrenzungen** durch [Authentifizierung](#authentifizierung) aufheben.

| **Anfragetyp**           | **Limits für alle Anfragen**                                                                       | **Zusätzliche Limits, die nur für nicht authentifizierte Anfragen gelten** |
| ------------------------ | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| **GET-Anfragen**         | `((500,000 + Anzahl der MUV) / 500) * multiplier` Anfragen pro Minute pro Kundenkonto              | `120` Anfragen pro Minute pro IP                                           |
| **Andere HTTP-Methoden** | `((500,000 + Anzahl der MUV) / 50) * multiplier` Anfragen pro Minute pro Kundenkonto (pro Methode) | `1,200` Anfragen pro Minute pro IP (pro Methode)                           |

Der Wert von `multiplier` hängt von Ihrem Abonnement ab:

* `1` — Sie nutzen nur eine Lösung, entweder Web Experimentation oder Feature Experimentation
* `2` — Sie nutzen sowohl Web Experimentation als auch Feature Experimentation

<Note>
  Wenn Sie für Ihren Anwendungsfall höhere Ratenbegrenzungen benötigen, wenden Sie sich bitte an Ihren Account Manager, um weitere Informationen zu erhalten.
</Note>

#### Was Anfragen generiert

Das Verständnis, welche Operationen GET- und POST-Anfragen generieren, hilft Ihnen, den Verbrauch Ihres Rate-Limits zu schätzen und zu verwalten. Die folgende Aufschlüsselung gilt hauptsächlich für **clientseitige Technologien** (engine.js, das JavaScript SDK und mobile SDKs), bei denen jedes Gerät eigene Anfragen sendet. Für POST-Tracking-Anfragen sind serverseitige SDKs bei großen Datenmengen effizienter, da sie Daten mehrerer Besucher in einer einzigen Anfrage bündeln können; GET-Anfragen richten sich immer an einen einzelnen Besucher.

Ihre Anwendung löst GET-Anfragen nur aus, wenn sie explizit einen der folgenden Vorgänge aufruft. Das SDK und der Engine führen kein automatisches Polling durch:

* **Besucherdaten-Abruf**: `getRemoteVisitorData()` (SDKs) oder `performRemoteSynchronization()` (engine.js) laden Remote-Besucherdaten für einen bestimmten Besucher bei Bedarf.
* **Remote-Daten- und Warehouse-Audience-Abruf**: `getVisitorWarehouseAudience()` (SDKs) oder `retrieveDataFromRemoteSource()` (SDKs und engine.js) laden Data-Warehouse- oder Remote-Map-Daten bei Bedarf.

**POST-Anfragen** stammen vom Tracking-Mechanismus, der Besucherdaten vor dem Senden bündelt:

* **Tracking-Anfragen**: Der primäre wiederkehrende POST-Aufruf. Das SDK oder der Engine bündelt ausstehende Besucherdaten und sendet sie höchstens einmal pro Tracking-Intervall, jedoch nur wenn Daten ausstehen. Das Standardintervall beträgt 1 Sekunde. In SDKs können Sie das Intervall zwischen 1 und 5 Sekunden mithilfe von `trackingIntervalMillisecond` / `tracking_interval_millisecond` konfigurieren; engine.js verwendet ein festes Intervall von 500 Millisekunden. Konversionen, getrackte Feature-Flag-Auswertungen und explizite `flush()`-Aufrufe stellen Daten für das nächste Intervall in die Warteschlange, oder senden sie sofort, wenn Sie einen sofortigen Flush auslösen.
* **Activity-Tracking**: Ein sekundärer Mechanismus, der Besucheraktivitätsdaten (Klicks, Scrollvorgänge und Mausbewegungen) in den nächsten Tracking-Versand einbindet. Das SDK sammelt Aktivitätsdaten nur, wenn der Benutzer auf dem aktiven Tab aktiv ist. Das Standardintervall beträgt 60 Sekunden. In SDKs können Sie das Intervall mithilfe von `activityTrackingIntervalMillisecond` / `activity_tracking_interval_millisecond` konfigurieren; engine.js verwendet ein festes Intervall von 60 Sekunden.

Für **mobile SDKs**: Das periodische Tracking wird automatisch angehalten, wenn die App in den Hintergrund wechselt. Ein expliziter sofortiger Flush kann unabhängig vom App-Status noch ausstehende Daten senden.

Für das **JavaScript SDK**: Die Tracking-Anfrage wird nur gesendet, wenn der Besucher seit dem letzten Intervall-Tick tatsächlich mit der Seite interagiert hat (durch Mausbewegung oder Scrollen), was verhindert, dass ausgeblendete oder in den Hintergrund versetzte Tabs die Besuchsanzahl aufblähen. Um weiterhin Daten zu senden, wenn die Seite nicht aktiv ist, rufen Sie `flush({instant: true})` explizit auf. Wenn die Kameleoon Engine (`window.Kameleoon`) ebenfalls auf der Seite vorhanden ist, verhindert das SDK eine doppelte Activity-Tracking-Erfassung.

#### Kontoweite Limits

Ratenlimits gelten für Ihr gesamtes Kundenkonto, nicht für einzelne Projekte. Wenn ein Projekt übermäßig viele Anfragen erzeugt (beispielsweise weil eine fehlerhafte Implementierung eine Schleife erstellt, die Custom-Data-Events wiederholt sendet), verbraucht dieses Projekt das gemeinsame Konto-Limit und kann HTTP 429-Fehler in all Ihren anderen Projekten verursachen.

#### Diagnose von übermäßigem Anfragevolumen

Verwenden Sie die [Live events](/user-manual/experiment-analytics/analyze-results/data-and-metrics/live-events)-Seite (**Insights > Live events**), um das Projekt zu identifizieren, das unerwarteten Traffic erzeugt:

1. **Ereignisvolumen nach Projekt prüfen**: Wählen Sie jedes Projekt nacheinander aus und prüfen Sie die Ereignisanzahl der letzten Stunde oder 24 Stunden. Ein Projekt, das deutlich mehr Ereignisse erzeugt, als sein Besuchervolumen rechtfertigt (beispielsweise mehrere Millionen Ereignisse bei einem Vertrag mit 100.000 MUV), ist wahrscheinlich die Ursache.
2. **Nach Ereignistyp filtern**: Sobald Sie das verdächtige Projekt identifiziert haben, filtern Sie die Ereignisse nach Typ. Custom-Data-Events sind die häufigste Ursache für unerwartetes Volumen. Eine fehlerhafte Implementierung kann eine Schleife erstellen, die dieselbe Custom-Data-Variable oder alle Custom-Data-Variablen bei jedem Seitenaufruf sendet und in kurzer Zeit eine große Anzahl von Ereignissen produziert.

#### Ihre Anfragenanzahl prüfen

Verwenden Sie die Data-API-Request-Endpoints der Automation API, um genau zu sehen, woher Ihr Anfragevolumen an die Data API stammt, bevor es sich Ihrem Rate Limit nähert:

* **Nach Endpoint**: `GET /data-api-requests/by-endpoint` gibt die Anzahl der an die Data API gesendeten Anfragen für eine bestimmte Site zurück, aufgeschlüsselt nach Tag, HTTP-Methode, Pfad und Statuscode. Verwenden Sie diesen Endpoint, um zu erkennen, welche Integration oder welcher Endpoint Ihren Traffic verursacht.
* **Nach Quelle**: `GET /data-api-requests/by-source` gibt die Anzahl der an die Data API gesendeten Anfragen für eine bestimmte Site zurück, aufgeschlüsselt nach Tag und Quelle (`Engine`, `SDK: <name>` oder `Direct`). Verwenden Sie diesen Endpoint, um zu erkennen, welcher Clienttyp Ihren Traffic verursacht.

Beide Endpoints verwenden dieselben drei erforderlichen Query-Parameter:

| **Parameter** | **Typ** | **Beschreibung**                                                             |
| ------------- | ------- | ---------------------------------------------------------------------------- |
| `siteCode`    | string  | Der Kameleoon-Sitecode.                                                      |
| `from`        | date    | Der Beginn des Datumsbereichs, im ISO-8601-Format (`YYYY-MM-DD`). Inklusive. |
| `to`          | date    | Das Ende des Datumsbereichs, im ISO-8601-Format (`YYYY-MM-DD`). Inklusive.   |

<Note>
  Der Bereich zwischen `from` und `to` darf 7 Tage nicht überschreiten.
</Note>

Authentifizieren Sie sich mit einem OAuth-2.0-Bearer-Token und folgen Sie dabei demselben [Authentifizierungsablauf der Automation API](../automation-api-rest/get-started/get-started#authentifizierung), der auch für andere Automation-API-Aufrufe verwendet wird.

So schlüsseln Sie das Anfragevolumen nach HTTP-Methode, Pfad und Statuscode auf:

```bash curl theme={null}
curl -H "Authorization: Bearer <ACCESS_TOKEN>" \
     -H "Content-Type: application/json" \
     "https://api.kameleoon.com/data-api-requests/by-endpoint?siteCode=<SITE_CODE>&from=2026-07-17&to=2026-07-23"
```

So schlüsseln Sie das Anfragevolumen nach Quelle auf:

```bash curl theme={null}
curl -H "Authorization: Bearer <ACCESS_TOKEN>" \
     -H "Content-Type: application/json" \
     "https://api.kameleoon.com/data-api-requests/by-source?siteCode=<SITE_CODE>&from=2026-07-17&to=2026-07-23"
```

Führen Sie diese Prüfung immer dann aus, wenn [Live events](/user-manual/experiment-analytics/analyze-results/data-and-metrics/live-events) unerwarteten Traffic anzeigt, um zu bestätigen, welche HTTP-Methoden, Pfade, Statuscodes oder Quellen Ihr Anfragevolumen ausmachen.
