bluebarry.
KundenstimmenPreiseRessourcen
AnmeldenDemo buchen15-Minuten-Demo buchen
Hilfecenter/Entwicklerplattform/Profile über die API abrufen

Profile über die API abrufen

Martijn Douma
Martijn Douma · Mitgründer bei bluebarry
Aktualisiert am 1. Juli 2026

Lies Profildaten von bluebarry über die Data API aus und synchronisiere sie in deine eigenen Systeme wie ein Data Warehouse, ein CRM oder ein individuelles Dashboard. bluebarry führt die vielen Touchpoints einer kaufenden Person (eine anonyme Sitzung im Produktquiz, ein späterer identifizierter Besuch, ein zweites Gerät) zu einer einzelnen Identität zusammen. Diese Anleitung zeigt dir, wie du dich authentifizierst, diese Identitäten abrufst und nur Änderungen seit deinem letzten Durchlauf lädst, ohne Datensätze zu verpassen oder zu duplizieren.

Bevor du startest

Du benötigst einen API-Schlüssel. Erstelle einen im Studio unter „Integrations“ und dort unter „API keys“, und kopiere den Schlüsselwert. Ein API-Schlüssel gilt für einen einzelnen Workspace und kann jedes Profil in diesem Workspace lesen. Behandle ihn daher vertraulich und rufe die API nur von einem sicheren Server auf, niemals aus Storefront- oder Browser-Code.

Basis-URL
Production   https://data.bluebarry.ai/data
Staging      https://staging.data.bluebarry.ai/data

Authentifizierung

Sende deinen Schlüssel im Authorization-Header. Verwende nur den reinen Schlüsselwert. Füge kein Bearer-Präfix hinzu, da ein Bearer-Token an eine andere Anmeldemethode weitergeleitet und deine Anfrage mit HTTP 401 abgelehnt wird.

Die ersten Identitäten abrufen
curl "https://data.bluebarry.ai/data/Identities?\$top=5" \
  -H "Authorization: bb_your_api_key_here"

Identities oder Profiles

Es gibt zwei verwandte Collections. Nutze Identities, es sei denn, du hast einen konkreten Grund dagegen.

  • Identities gibt eine Zeile pro kaufender Person zurück, zusammengeführt aus allen Touchpoints. Jede Zeile besitzt eine feste id, die du speichern und für Upserts nutzen kannst, sowie die aufgelöste E-Mail-Adresse, Telefonnummer, den Namen, Antworten aus dem Produktquiz und personalisierte Produktempfehlungen. Das ist der richtige Endpunkt, um Personen in ein anderes System zu synchronisieren.
  • Profiles gibt die rohen, nicht zusammengeführten Zeilen zurück (eine pro Sitzung und Person). Nutze dies nur, wenn du gezielt Details zu einzelnen Sitzungen benötigst. Dieselbe Person kann in mehreren Profiles-Zeilen auftauchen.

Struktur einer Identity

Ein gültiger Schlüssel liefert HTTP 200 mit einem JSON-Envelope zurück. Die Identitäten befinden sich im value-Array. Feldnamen nutzen camelCase. Die Antworten aus dem Produktquiz unter properties und die Produktauswahl unter recommendations werden direkt inline zurückgegeben.

Antwort
{
  "@odata.context": "https://data.bluebarry.ai/data/$metadata#Identities",
  "value": [
    {
      "id": "0193b8a1-7e2c-7a10-9f4d-2b6f3c8e1a55",
      "email": "[email protected]",
      "phoneNumber": null,
      "firstName": "Alice",
      "lastName": "A",
      "userId": "34d33fe3-e88e-47cd-8b70-d0f978b5bd2a",
      "createdDate": "2026-06-01T10:00:00Z",
      "updatedDate": "2026-06-14T09:12:00Z",
      "memberCount": 3,
      "consentAccepted": true,
      "mergedIntoId": null,
      "properties": [
        { "name": "skill_level", "value": "beginner" }
      ],
      "recommendations": [
        {
          "position": 1,
          "title": "Starter Rope",
          "url": "https://shop.example/rope",
          "quizName": "Climbing Quiz",
          "price": 49.99
        }
      ]
    }
  ]
}
  • id ist stabil. Speichere sie und nutze sie für Upserts. Sie ändert sich nicht, wenn neue Sitzungen oder Geräte derselben Person zugeordnet werden.
  • memberCount gibt an, wie viele rohe Touchpoints in dieser Identität zusammengeführt wurden.
  • mergedIntoId ist normalerweise null. Siehe Zusammenführungen verarbeiten weiter unten.

Felder auswählen, filtern und sortieren

Der Endpunkt akzeptiert die standardmäßigen OData-Abfrageoptionen. Kodiere die Werte für URLs, sodass ein Leerzeichen zu %20 und ein Plus zu %2B wird.

  • $select gibt nur die angegebenen Felder zurück, zum Beispiel $select=id,email,updatedDate.
  • $filter grenzt die Zeilen ein, zum Beispiel nach updatedDate oder einer E-Mail-Adresse.
  • $orderby sortiert die Zeilen. Setze dies bei der Paginierung immer, da die Reihenfolge sonst nicht garantiert ist.
  • $count=true fügt ein Feld @odata.count mit der Gesamtzahl hinzu.

Bei Zeitstempeln schließt gt den Grenzwert aus und ge schließt ihn ein. Verwende einen ISO-8601-UTC-Wert wie 2026-06-01T10:10:00Z.

Durch große Ergebnismengen paginieren

Eine einzelne Anfrage gibt maximal 5000 Zeilen zurück. Setze $top, um eine kleinere Seitengröße (1 bis 5000) zu wählen, und $skip, um zur nächsten Seite zu springen, immer in Kombination mit einem stabilen $orderby. Ein Wert für $top außerhalb des Bereichs von 1 bis 5000 liefert HTTP 400. Wenn du $top weglässt und das Ergebnis mehr als 5000 Zeilen umfasst, enthält die Antwort eine @odata.nextLink-URL. Folge dieser URL so lange, bis sie nicht mehr vorhanden ist.

Nur Änderungen synchronisieren, ohne Datensätze zu verpassen

Jede Identität hat ein updatedDate, das aktualisiert wird, sobald die kaufende Person aktiv ist. Um inkrementell zu synchronisieren, merke dir das neueste verarbeitete updatedDate und frage beim nächsten Durchlauf die Identitäten ab, die sich seitdem geändert haben. Führe für jeden Eintrag einen Upsert in dein System anhand der id durch.

Wichtig zu wissen: updatedDate wird gesetzt, wenn ein Event der kaufenden Person erzeugt wird. Die Änderung wird jedoch erst kurz danach geschrieben, und diese Schreibvorgänge treffen nicht garantiert in der Reihenfolge der Zeitstempel ein. Eine Änderung mit einem früheren updatedDate kann also erst sichtbar werden, nachdem du diesen Zeitpunkt bereits ausgelesen hast. Wenn du streng nach Werten filterst, die größer als dein letzter Zeitstempel sind, könntest du Änderungen verpassen. Vermeide das durch ein kleines Überlappungsfenster: Starte jeden Durchlauf kurz vor deinem letzten Zeitstempel (zum Beispiel eine Stunde davor) und lies den überlappenden Zeitraum erneut ein. Da du den Upsert über die id machst, ist das erneute Lesen bereits vorhandener Zeilen unproblematisch.

Schleife für inkrementelle Synchronisierung (Pseudocode)
// cursor ist das neueste updatedDate, das du vollständig verarbeitet hast.
let cursor = loadCursor() ?? "1970-01-01T00:00:00Z";
const OVERLAP_MS = 60 * 60 * 1000; // Sicherheitsfenster von 1 Stunde

async function sync() {
  const from = new Date(Date.parse(cursor) - OVERLAP_MS).toISOString();
  let newest = cursor;
  let skip = 0;

  while (true) {
    const url = new URL("https://data.bluebarry.ai/data/Identities");
    url.searchParams.set("$filter", `updatedDate ge ${from}`);
    url.searchParams.set("$orderby", "updatedDate asc,id asc");
    url.searchParams.set("$top", "1000");
    url.searchParams.set("$skip", String(skip));

    const res = await fetch(url, {
      headers: { Authorization: process.env.BLUEBARRY_API_KEY },
    });
    const { value } = await res.json();
    if (value.length === 0) break;

    for (const identity of value) {
      if (identity.mergedIntoId) {
        // Diese Identität wurde zusammengeführt; führe deine lokale Kopie mit mergedIntoId zusammen.
        redirect(identity.id, identity.mergedIntoId);
      } else {
        upsertById(identity.id, identity); // Idempotent: Erneutes Lesen ist unproblematisch
      }
      if (identity.updatedDate > newest) newest = identity.updatedDate;
    }
    skip += value.length;
  }

  saveCursor(newest); // Erst nach vollständigem Erfolg des Durchlaufs weitersetzen
}

Setze und speichere den Cursor erst, wenn ein Durchlauf erfolgreich abgeschlossen ist. Schlägt ein Durchlauf mittendrin fehl, startet der nächste Durchlauf beim alten Cursor und das Überlappungsfenster deckt alles dazwischen ab.

Zusammenführungen verarbeiten

Gelegentlich stellt sich heraus, dass zwei Identitäten zur selben kaufenden Person gehören. Zum Beispiel hinterlässt ein anonymer Gast später eine E-Mail-Adresse, die bereits bei einer anderen Identität hinterlegt war. In diesem Fall behält bluebarry eine bestehende Identität bei und markiert die andere mit einer mergedIntoId, die auf die verbleibende Identität verweist. Die archivierte Identität erscheint weiterhin im Änderungsfeed, sodass deine Synchronisierung die lokale Kopie der alten id mit der verbleibenden Identität zusammenführen kann. Filtere mit mergedIntoId eq null, wenn du nur aktive Identitäten abrufen möchtest.

Limits und Best Practices

  • Frage maximal 5000 Zeilen pro Aufruf ab und paginiere durch den Rest.
  • Nutze $select, um nur die benötigten Felder abzurufen. Das hält die Antworten schlank und schnell.
  • Identitäten enthalten personenbezogene Daten wie E-Mail-Adresse, Telefonnummer und Name. Speichere und verarbeite sie im Einklang mit deinen Datenschutzpflichten und beachte das Flag consentAccepted.
  • Bewahre deinen API-Schlüssel auf dem Server auf. Sollte ein Schlüssel offengelegt werden, lösche ihn im Studio und erstelle einen neuen.

Weitere Artikel

Übersicht zur API-Authentifizierung

bluebarry unterstützt die API-Authentifizierung für freigegebene Integrationen über API-Keys, OAuth und mandantenbezogene Anfragen. Nutze die Methode, die zu deinem Integrationstyp passt.

Artikel lesen →

API-Keys verwalten

Erstelle API-Keys für genehmigte externe Tools, serverseitige Automatisierungen und Integrations-Workflows, die Daten aus bluebarry abrufen müssen.

Artikel lesen →

Die Identify-API nutzen

Nutze die Identify-API, um bekannten Quiz-Besuchern nach dem Checkout oder Login eine E-Mail-Adresse oder eine externe ID zuzuordnen.

Artikel lesen →

Du kommst nicht weiter? Wir helfen dir.

Unsere Anleitungen stammen direkt vom Produktteam. Wenn eine Frage offenbleibt, melde dich bei uns. Wir helfen dir weiter und verbessern die Anleitung.

Kontakt aufnehmenKostenlos auf Discord austauschen
bluebarry.

Wir helfen Beauty-, Health- und Outdoor-Marken, ihren idealen AOV zu erreichen

[email protected]+31 6 57 16 10 87De Ried 10, 9285KK Buitenpost (Niederlande)
Martijn DoumaStan van RooyAnco PostmaJelmer Reitsma

Das Team, das deinen AOV steigert.

Plattform
Quiz-FunnelsLandingpagesProduktquizProduktempfehlungenShopsucheIntegrationenPreise
Ressourcen
FallstudienHilfebereichFAQVergleiche
Unternehmen
KontaktPartner & AffiliateBewertungenDemo anfragen
15-minütige Demo buchen
© 2026 bluebarry. Alle Rechte vorbehalten.
DatenschutzerklärungCookie-RichtlinieAGB
English/Deutsch
bluebarry