friendship
Friendship Tracker
Eine persönliche Kontaktbuch-API. Verwalte Kontakte sowie deren Notizen, Aktivitäten und Erinnerungen - alles über parent_id an einen einzelnen Kontakt gebunden. Gebaut für Einzelnutzer, die ein Monica-ähnliches CRM führen.
Basis-URL
https://friendship-tracker.comDrei Wege, Friendship Tracker anzubinden - dieselben Daten, dieselben Zugriffsregeln, je nach Anwendungsfall ein anderer Pfad.
Nutzung & Abrechnung
Faire API-Nutzung im Rahmen der Anfragelimits ist in jedem Plan inbegriffen - die Integration soll sich nicht künstlich kompliziert anfühlen, nur weil ein günstigerer Plan gebucht ist. Enterprise-Kunden bekommen angepasste Limits nach Bedarf.
On-Demand-Betreuung ist verfügbar, und unser Entwicklerteam baut bei Bedarf maßgeschneiderte Integrationen - sprich uns an, wenn dein Anwendungsfall mehr braucht als die Standardanbindung.
Schnellstart
- 1
Token erstellen
Öffne in Friendship Tracker das Integrationen-Menü, klicke *Neues Token*, wähle Name und Berechtigungen, kopiere den
pat_…Wert. Er wird genau einmal angezeigt. - 2
Erste Anfrage senden
Token als Bearer-Header an einen Friendship Tracker-Endpunkt senden, den deine Berechtigungen abdecken. Paginierung, Filter und Sortierung sind pro Modell dokumentiert.
curl -H "Authorization: Bearer pat_…" \https://friendship-tracker.com/xapi2/data/activity - 3
Live-Updates abonnieren
Mit einem einzelnen WebSocket alle Create/Update/Delete-Ereignisse in Echtzeit empfangen - gleiche Zugriffsregeln, gleiches Token. Polling entfällt.
const ws = new WebSocket(`wss://${location.host}/xapi2/ch?token=${token}`)ws.onopen = () => ws.send(JSON.stringify({ op: "subscribe", id: "s1", dataType: "activity" }),)ws.onmessage = (e) => console.log(JSON.parse(e.data))
Wegweiser
Diese Dokumentation beschreibt jeden Endpunkt, den die App öffentlich macht. Modell-Seiten enthalten konkrete Code-Beispiele in curl, JavaScript, TypeScript und WebSocket.
JWT vs PAT, Bearer-Header.
Live-Events + CRUD über einen Socket.
Einheitliche Fehlerantworten.
Pro IP und pro Token.
11 Datenmodelle verfügbar.
Ein nativer Client für jeden Endpunkt - eine Zeile zum Installieren.
Verbinde Claude, Cursor & Co. mit deinen Daten.
Drop-in API-Wrapper für Python, TypeScript, Go, Java, Rust.
Reagiere auf Datenänderungen in Echtzeit.
Datenmodelle
Produktionsreife, branchenübliche Datenmodelle. Jedes Objekt wird sicher verwaltet - Validierung, Zugriffsregeln und Audit laufen einheitlich auf jedem Pfad - und die Daten gehören jederzeit dem jeweiligen Kunden. Export und Löschung sind selbstverständlich.
Pfeile zeigen vom referenzierenden Datenmodell zum referenzierten. Markierungen am Linienende beschreiben die Kardinalität (z.B. * = beliebig viele, 1 = genau eines, 0..1 = optional). Klick auf einen Knoten öffnet die Modell-Seite.
activityEine protokollierte Interaktion mit einem Kontakt (Treffen, Anruf, E-Mail, Nachricht, Veranstaltung, sonstiges). Über parent_id an einen Kontakt gebunden, optional mit occurred_at und location.
contactEine Person, mit der du in Kontakt bleibst. Trägt Identität (Name, Spitzname, E-Mail, Telefon), Kontext (Firma, Adresse, Social-Links) und Lifecycle-Felder (Geburtstag, Jahrestag, letzter Kontakt). Übergeordnetes Objekt für Notizen, Aktivitäten und Erinnerungen.
conversationLeichtgewichtiges Kommunikations-Log: ein einzelner Anruf / eine SMS / ein Video- oder Präsenztermin. Beim Erfassen aktualisiert der bump_last_contacted-Hook automatisch das last_contacted_at am übergeordneten Kontakt.
custom_fieldBeliebiges Label/Wert-Paar am Kontakt. kind steuert die Darstellung (Text / Zahl / Datum / URL / Boolean); auf der Leitung wird nur der textuelle value übertragen.
giftEine Geschenkidee, ein verschenktes oder erhaltenes Geschenk - an einen Kontakt gebunden. Status steuert die Spalte (Idee / Gegeben / Erhalten).
journal_entryEin eigenständiger Tagebucheintrag, nicht an einen Kontakt gebunden. Stimmung und Tags helfen beim Wiederfinden auf der Journal-Seite.
life_eventWichtige Ereignisse im Leben eines Kontakts - Geburtstage, Jahrestage, Jobwechsel, Umzüge, Meilensteine. recurring markiert jährlich wiederkehrende Termine für das Dashboard.
noteEin freier Journaleintrag, über parent_id an einen Kontakt gebunden. Mehrere Notizen pro Kontakt, chronologisch geordnet. Unterstützt eine pinned-Flagge.
petEin Tier des Kontakts. Vordefinierte Tierarten (Hund/Katze/Vogel/…) plus species_other für seltene Fälle. Optional Rasse, Geburtsdatum, Farbe, Notizen.
relationshipEine gerichtete Verbindung zwischen zwei eigenen Kontakten. Der pair_relationship-Hook spiegelt jede Verknüpfung beim Zielkontakt, damit beide Detailseiten sie sehen.
reminderEine einmalige Erinnerung zu einem Kontakt: due_date, message und ein completed-Boolean. Wiederkehrende Erinnerungen sind bewusst nicht abgebildet.