Technische Evaluierung

Repull für SaaS-Plattformen: 20 Fragen, beantwortet

Die Integrationsfragen, die SaaS-Plattformen uns vor einem ersten Gespräch schicken, jeweils beantwortet mit dem, was es heute gibt, und verlinkt mit der passenden Dokumentation. Fang mit dem Quickstart und der API-Referenz an, wenn du die API zuerst ausprobieren willst. Die kommerzielle Seite steht unter Repull für Plattformen.

F1 – F7

Plattformmodell und Verbindungen

F1.Unterstützt Repull ein SaaS-Plattformmodell, bei dem ein Repull-Kunde viele unabhängige Konten von Endnutzern verbindet?

Ja. Genau dafür ist der gehostete Connect-Flow gebaut: Jeder deiner Endnutzer autorisiert sein eigenes Kanalkonto (zum Beispiel sein eigenes Airbnb-Gastgeberkonto) in deinem Repull-Workspace. Jedes verbundene Konto wird unabhängig verfolgt, mit eigenen Tokens versehen und auf seinen Zustand überwacht.

Docs: Connect (mehrere Kanäle), OAuth Connect, Connect Widget.

F2.Wie viele verbundene Konten sind in einer Repull-Organisation maximal erlaubt?

Es gibt keine technische Obergrenze für verbundene Konten. Abgerechnet wird pro Inserat: Free deckt bis zu 3 Inserate ab, Starter kostet 99 $/Monat mit 10 inklusiven Inseraten und 5 $ pro Inserat ab dem 11. bis 100, und über 100 Inseraten (wo eine Plattform mit vielen Gastgebern landet) gibt es einen Custom-Plan mit Volumenpreisen und einem einzigen Partner-Workspace für alle deine Kunden.

Docs: Preise, Repull für Plattformen.

F3.Kann jeder verbundene Nutzer isolierte Zugangsdaten und Tokens haben?

Ja. Access- und Refresh-Tokens werden pro verbundenem Konto gespeichert, vollständig isoliert. Widerruft ein Nutzer den Zugriff, betrifft das nur sein Konto: Du bekommst für dieses Konto einen account.disconnected-Webhook mit einem maschinenlesbaren Grund, und alle anderen synchronisieren weiter.

F4.Können wir beim Anlegen einer Verbindung unsere eigene interne Kennung mitgeben, damit sie in jedem zugehörigen Webhook enthalten ist?

Ja. Übergib deine interne Nutzer-ID als state, wenn du die Connect-Session erstellst. Wenn der Nutzer fertig ist, gibt dir der Webhook connect.session.completed diesen state zusammen mit dem verbundenen Konto zurück, du ordnest beides also einmal zu. Ab dann trägt jede Webhook-Zustellung einen account-Block (provider und externalAccountId, die eigene ID des Anbieters) sowie die Header X-Repull-Account und X-Repull-Account-Id, und Buchungen, Konversationen und Bewertungen tragen dasselbe Konto in jedem Datensatz.

Docs: OAuth Connect, Webhooks.

F5.Können wir alle Verbindungen unserer Organisation abrufen, zum Beispiel über einen Endpunkt wie GET /connections?

Ja. GET /v1/connect listet alle Verbindungen in deinem Workspace (ID, Anbieter, Status, externe Konto-ID). Außerdem gibt es einen eigenen Status-Endpunkt pro Kanal, zum Beispiel GET /v1/channels/airbnb/connection, der jedes verbundene Airbnb-Konto mit Status und Grund der letzten Trennung liefert und dafür gebaut ist, von einer Statusseite abgefragt zu werden.

Docs: API-Referenz, Connect.

F6.Wird der Ablauf Session erstellen → weiterleiten → autorisieren → zurückleiten → Webhook → aktiv → API unterstützt?

Ja, genau so:

  1. 1POST /v1/connect liefert die URL einer gehosteten Session (30 Minuten gültig)
  2. 2Du leitest deinen Nutzer dorthin
  3. 3Der Nutzer autorisiert Airbnb (oder wählt einen anderen Kanal in der Auswahl)
  4. 4Der Nutzer wird mit status=connected&accountId=… und deinem state zu deiner redirectUrl zurückgeleitet
  5. 5Die Webhooks account.created und connect.session.completed werden ausgelöst
  6. 6Die Verbindung ist aktiv; der erste Sync startet automatisch im Hintergrund
  7. 7Du liest Daten über die API und bekommst laufend Webhooks

Docs: Connect, Quickstart.

F7.Übernimmt Repull die Airbnb-Authentifizierung komplett: Login, Berechtigungen, Token-Austausch, Refresh, Ablauf, erneute Anmeldung?

Ja, von Anfang bis Ende: Airbnb-Login, Berechtigungen und Scopes (nur lesen, Messaging oder voller Zugriff), Token-Austausch, Refresh-Tokens und Ablauf übernimmt Repull. Wird ein Refresh abgelehnt oder der Zugriff beim Anbieter widerrufen, wird das Konto markiert und du bekommst account.disconnected mit einem Grund (refresh_token_rejected, auth_expired, revoked_upstream, manual_disconnect), damit du den Nutzer durch denselben gehosteten Flow zur erneuten Anmeldung schicken kannst.

Docs: Airbnb-Kanal.

F8 – F9

Testen und Anpassen

F8.Welche Testumgebungen oder Sandboxes gibt es: Testverbindungen, Testkonten, Testinserate, Mock-Daten, Sandbox-Antworten?

Ja. Es gibt keine separate Sandbox: Jedes Konto bekommt bei der Registrierung einen sk_live_*-Key (kostenloser Plan, keine Kreditkarte), du testest also direkt gegen die echte API: Du legst echte Objekte, Buchungen und Webhook-Abos an und löschst sie wieder, wenn du fertig bist. Das Webhook-System hat eigene Testwerkzeuge: POST /v1/webhooks/{id}/test/{event_type} schickt realistische Beispiel-Payloads für jeden Event-Typ, dazu kommen Ping- und Wiederholungs-Endpunkte und vollständige Zustellprotokolle.

Ehrlicher Hinweis: Airbnb selbst bietet keine Sandbox-Gastgeberkonten, ein kompletter OAuth-Test braucht also in jeder Umgebung einen echten Airbnb-Login. Alles danach (Webhooks, Datenformate, Fehlerbehandlung) lässt sich vollständig mit Beispiel-Events testen, ohne echte Airbnb-Verbindung.

Docs: Webhooks verwalten.

F9.Lässt sich die Verbindungsoberfläche anpassen: Branding, Logo, Farben, Texte, Weiterleitung?

Ja.Die gehosteten Connect-Seiten sind pro Workspace White-Label: App-Name, Logo (helle und dunkle Variante), Primär- und Akzentfarbe für beide Themes, Support-E-Mail in der Fußzeile, deine eigenen URLs zu AGB und Datenschutz, eine Standard-Weiterleitungs-URL und eine Standardsprache. Die URL bleibt auf connect.repull.dev, und die Seite trägt einen „Powered by Repull“-Link.

Docs: Connect Widget.

F10 – F14

Kanäle, Objekte und Bewertungen

F10.Kann ein einzelner Nutzer mehrere Kanäle über Repull verbinden?

Ja. Ein Nutzer kann mehrere Verbindungen gleichzeitig haben (Airbnb, Booking.com, Vrbo und ein PMS), und ein Workspace kann viele Konten pro Kanal haben: viele Airbnb-Gastgeber, viele Booking.com-Unterkünfte, viele Vrbo-Konten. Die einzige Grenze heute ist eine Verbindung pro Property-Management-System pro Workspace. Die gehostete Session kann eine Kanalauswahl zeigen oder über allowedProviders auf bestimmte Anbieter beschränkt werden.

Docs: Connect (mehrere Kanäle), PMS-Abdeckung.

F11.Gibt es einen API-Ablauf, um ein Konto von einem Kanal zu trennen?

Ja. DELETE /v1/connect/{provider} widerruft den OAuth-Token, wo der Kanal das unterstützt, löscht gespeicherte Zugangsdaten und stoppt alle Sync-Jobs dieser Verbindung. Übergib eine accountId, um ein Konto zu trennen, ohne die anderen auf demselben Kanal anzufassen.

F12.Können wir Objekte und Inserate aus verbundenen Kanälen abrufen, nach Kanal gefiltert, mit der ursprünglichen Objekt-ID des Kanals und Kanalzuordnung?

Ja. GET /v1/listings ist cursor-paginiert und mit ?channel=airbnb|booking|vrbo filterbar. Jedes Inserat trägt ein channels[]-Array mit der Plattform, der ursprünglichen Objekt-ID des Kanals (externalId) und dem Aktiv- und Sync-Status, du weißt also immer, zu welchem Kanal ein Objekt gehört und wie seine native ID lautet. Optionale Erweiterungen mit ?include=content,details,amenities.

Docs: Objekte auflisten, Objektdetails, Inhalte und Details eines Inserats.

F13.Können wir auf unterstützten Kanälen (zum Beispiel Airbnb, Vrbo, Booking.com) auf Bewertungen antworten?

Airbnb: ja, über POST /v1/reviews/{id}/reply, wenn der Gastgeber mit vollem Zugriff verbunden ist. Airbnb erlaubt Schreibzugriff auf Bewertungen nur mit seiner Property-Management-Berechtigung, daher können Nur-Lesen- und Messaging-Verbindungen Bewertungen lesen, aber nicht beantworten. Booking.com und Vrbo: im Test. Antworten laufen über denselben Endpunkt, sind an einer echten Bewertung aber noch nicht bewiesen.

Docs: Bewertungen, OAuth Connect.

F14.Können wir Bewertungen über die API empfangen? Sind neue Bewertungen und ihre Aktualisierungen verfügbar?

Ja. GET /v1/reviews ist ein kanalübergreifender Bewertungsstrom (Airbnb, Booking.com, Vrbo) mit Filtern für Plattform, Inserat, Bewertungsbereich, beantwortet oder offen sowie Gast- oder Gastgeber-Bewertungen. Aktualisierungen, einschließlich Gastgeber-Antworten, landen in denselben Datensätzen.

Die Webhooks review.created und review.responded melden dir, wenn eine Bewertung eingeht oder beantwortet wird. Der Endpunkt wird aus unserer Datenbank bedient, nie über einen Live-Aufruf beim Kanal, Abfragen ist also auch günstig.

Docs: Bewertungen auflisten.

F15

Webhooks

F15.Könnt ihr eine vollständige Liste der verfügbaren Webhook-Events geben?

Der aktuelle Katalog steht unter Webhook-Event-Typen und maschinenlesbar unter GET /v1/webhooks/event-types (mit Beispiel-Payloads). Aktuelle Events:

Buchungen
reservation.createdreservation.updatedreservation.cancelledreservation.message.receivedreservation.message.sentreservation.message.updatedreservation.alteration.createdreservation.alteration.respondedreservation.request.createdreservation.request.updated
Anfragen
inquiry.createdinquiry.updated
Inserate
listing.createdlisting.updatedlisting.deletedlisting.suspendedlisting.reactivated
Kalender
calendar.updated
Konten
account.createdconnect.session.completedaccount.disconnected
Bewertungen
review.createdreview.responded
KI
ai.operation.completedai.operation.failed
Zahlungen
payment.completedpayment.refundedpayout.completed
Migrationen
migration.completedmigration.failed
System
repull.pingusage.quota.warning

Zustellungen sind mit HMAC-SHA256 signiert (im Stil von Stripe), mit Wiederholungen, erneuter Zustellung und vollständigen Protokollen: Signaturen prüfen, Wiederholungen, Webhooks verwalten.

F16 – F17

Skalierung und Architektur

F16.Wie geht Repull mit großen Synchronisierungen um, zum Beispiel 800 Objekten und 100.000 Bewertungen? Bulk-APIs, Hintergrund-Jobs, Paginierungsgrenzen, Dauer eines Komplett-Syncs?

Syncs sind Hintergrund-Jobs. Das Verbinden eines Kontos startet parallele Sync-Pipelines (Inserate, Kalender und Preise, Nachrichten, Bewertungen, Transaktionen) auf unserer Queue-Infrastruktur; du musst nichts davon verwalten. Die Dauer des ersten Syncs hängt vor allem von den Limits des Kanals selbst ab, sie wächst also mit der Kontogröße: Große Portfolios laufen im Hintergrund durch, während die Verbindung schon nutzbar ist.

Lesezugriffe sind cursor-paginiert mit bis zu 100 Einträgen pro Seite (stabil in jeder Tiefe), 100.000 Bewertungen sind also etwa 1.000 Aufrufe, eine Kleinigkeit beim Standardlimit von 600 Anfragen pro Minute. Änderungen kommen per Webhook, du musst also nie alles neu einlesen.

Docs: Rate Limits, Idempotenz.

F17.Werden Daten live von Airbnb- und Kanal-APIs abgerufen oder von Repull zwischengespeichert und synchronisiert?

Synchronisiert. Repull synchronisiert Kanaldaten in unsere eigene Datenbank und bedient die API von dort. Das ist eine zentrale Designentscheidung: schnelle, konsistente Lesezugriffe, die nie an der Airbnb-API blockieren oder in deren Limits laufen, und deine App funktioniert weiter, auch wenn die Quelle wackelt. Antworten enthalten einen data_freshness-Block (last_synced_at, Veraltet-Flag), damit du immer weißt, wie frisch die Daten sind.

F18 – F20

Preise und Support

F18.Basiert der Preis auf API-Aufrufen, verbundenen Konten, Objekten, Buchungen oder Bewertungen?

Pro Inserat, mit einem API-Kontingent pro Plan, nicht pro Buchung, Bewertung, Webhook oder verbundenem Konto. Free: 0 $, bis zu 3 Inserate, 1.000 Aufrufe/Monat. Starter: 99 $/Monat, 10 Inserate inklusive, 5 $ pro Inserat ab dem 11. bis 100, 100.000 Aufrufe/Monat, Webhooks inklusive. Custom: mehr als 100 Inserate mit Volumenpreisen und API-Limits passend zu deiner Integration.

Docs: Preise, Credits und Nutzung.

F19.Was würde es für 1.000 verbundene Property-Manager-Nutzer kosten?

Das ist ein Fall für den Custom-Plan. Der Preis hängt in dieser Größenordnung von den Inseraten pro Nutzer und dem API-Volumen ab, und wir gestalten ihn als Plattformpartnerschaft, nicht als Preis pro Platz. Schick uns deine Zahlen, und du bekommst ein konkretes Angebot: so funktionieren Plattformpreise.

F20.Gibt es einen eigenen technischen Support-Kanal für Integrationsprobleme?

Starter enthält E-Mail-Support; Custom enthält bevorzugten E-Mail-Support, und für eine große Plattform-Integration können wir einen gemeinsamen Kanal mit unserem Engineering-Team einrichten.

Im Alltag ist die API auf Selbsthilfe ausgelegt: Jede Fehlerantwort enthält eine request_id, einen maschinenlesbaren Code, ein fix-Feld mit dem genauen nächsten Schritt und einen direkten Link in die Fehlerdokumentation.

RepullFragen von SaaS-Plattformen

Fragen? hello@repull.dev