Die API eignet sich zum Beispiel für eigene Software, interne Dashboards, Reporting-Lösungen oder Integrationen mit Make, Zapier, n8n und anderen Systemen.
Die aktuelle API-Version v1 ist ausschließlich lesend. Daten können über die API abgerufen, aber nicht erstellt, geändert oder gelöscht werden.
1. Voraussetzungen
Für den Zugriff benötigst du einen API-Key aus deinem WebinarSuite-Account.
Du findest die Verwaltung unter:
API-Verwaltung → Meine eigene API
Dort kannst du einen neuen API-Key erstellen und festlegen, auf welche Daten dieser Key zugreifen darf.
Je nach gewählten Berechtigungen stehen folgende Bereiche zur Verfügung:
Plain text
2. Wichtiger Sicherheitshinweis
Dein API-Key ist ein Zugangsschlüssel zu deinen WebinarSuite-Daten.
Er gehört deshalb ausschließlich auf deinen Server oder in die sichere Secret-Verwaltung deiner Automatisierungsplattform.
Verwende den API-Key niemals direkt in:
- JavaScript auf deiner Webseite
- öffentlich zugänglichem Frontend-Code
- GitHub-Repositories
- öffentlich sichtbaren Dateien
- Browser-Erweiterungen, in denen der Key ausgelesen werden kann
Die WebinarSuite API ist für Server-zu-Server-Kommunikation vorgesehen.
Direkte API-Aufrufe aus Webseiten bzw. Browser-JavaScript werden nicht unterstützt.
3. Basis-URL
Alle Endpunkte der aktuellen Version befinden sich unter:
https://my.webinarsuite.me/api/v1
Die Versionsnummer /v1 ist Bestandteil der API.
4. Authentifizierung
Bei jedem Request muss dein API-Key im HTTP-Header Authorization übertragen werden.
Format:
Ein WebinarSuite API-Key beginnt beispielsweise mit:
Beispiel mit cURL:
Der API-Key darf nicht als URL-Parameter übertragen werden.
/api/v1/me?api_key=ws_live_...
5. Verbindung testen
Der einfachste Verbindungstest ist:
Beispiel:
Eine erfolgreiche Antwort sieht grundsätzlich so aus:
Damit kannst du gleichzeitig prüfen:
- ob der API-Key gültig ist,
- mit welchem Account du verbunden bist,
- welchen Namen der API-Key besitzt,
- welche Berechtigungen der Key besitzt.
6. Verfügbare Endpunkte
Die API v1 stellt folgende Endpunkte bereit:
7. Öffentliche IDs
Die API verwendet bewusst keine internen Datenbank-IDs.
Webinare besitzen beispielsweise eine öffentliche Kennung wie:
Landingpages:
Accounts:
Für Anmeldungen wird der tkey verwendet.
Nutze ausschließlich diese öffentlichen Kennungen.
Eine interne oder numerische ID wie:
ist kein gültiger Ersatz für eine Webinar- oder Landingpage-ID.
Beispiel:
Nicht:
8. Webinare abrufen
Alle Webinare:
Beispiel:
Ein bestimmtes Webinar:
Beispiel:
Dafür benötigt dein API-Key die Berechtigung:
9. Landingpages abrufen
Alle Landingpages:
Einzelne Landingpage:
Beispiel:
Dafür benötigt dein API-Key:
10. Anmeldungen abrufen
Alle Anmeldungen werden über folgenden Endpunkt abgerufen:
Beispiel:
Dafür benötigt dein Key:
Eine einzelne Anmeldung kannst du über ihren tkey abrufen:
Beispiel:
Der tkey ist die stabile öffentliche Kennung einer Anmeldung und eignet sich deshalb auch hervorragend als eindeutiger Schlüssel in deiner eigenen Datenbank.
11. Teilnahmen abrufen
Teilnahmedaten werden über folgenden Endpunkt abgerufen:
Beispiel:
"https://my.webinarsuite.me/api/v1/teilnahmen?limit=50"
Dafür benötigt dein API-Key:
Über diesen Bereich können unter anderem Teilnahmesessions mit Daten wie Wiedergabedauer sowie Join- und Endzeitpunkt abgerufen werden.
12. Listen und Pagination
Listen werden nicht unbegrenzt in einer einzigen Antwort ausgegeben.
Standardmäßig liefert ein Request maximal:
Mit dem Parameter limit kannst du die Anzahl verändern.
Beispiel:
Der maximale Wert beträgt:
Eine Listen-Antwort enthält zusätzlich Informationen zur Pagination:
Wenn:
zurückgegeben wird, existiert mindestens eine weitere Seite.
Verwende anschließend den zurückgegebenen next_cursor für den nächsten Request.
Beispiel:
Wichtig:
Verändere oder dekodiere den Cursor nicht für deine Programmlogik.
Der Cursor ist für deinen Client ein undurchsichtiger Wert. Übernimm ihn exakt so, wie die API ihn zurückgibt.
13. Beispiel: alle Anmeldungen durchlaufen
Das Prinzip sieht folgendermaßen aus:
Eine Integration sollte sich niemals darauf verlassen, dass alle Daten mit einem einzigen Request zurückgegeben werden.
14. Nur neue oder geänderte Daten abrufen
Für regelmäßige Synchronisationen solltest du nicht jedes Mal sämtliche Datensätze neu abrufen.
Dafür gibt es den Parameter:
Beispiel:
Der Zeitwert wird im ISO-8601-Format übergeben.
Beispiel mit cURL:
seit und cursor können gemeinsam verwendet werden.
Der seit-Wert definiert dabei das Zeitfenster und der Cursor blättert durch die darin gefundenen Datensätze.
15. Empfohlene Synchronisationsstrategie
Für eine zuverlässige Integration empfehlen wir folgende Vorgehensweise:
Speichere nach einem erfolgreichen Synchronisationslauf den zuletzt verarbeiteten updated_at-Zeitpunkt.
Beim nächsten Lauf verwendest du diesen Wert wieder als seit-Parameter.
Ziehe dabei eine kleine Sicherheitsüberlappung ab, beispielsweise eine Minute.
Beispiel:
Letzter erfolgreich verarbeiteter Zeitpunkt:
Nächster Abruf:
Durch diese kleine Überlappung vermeidest du, dass Änderungen an einer zeitlichen Grenze verloren gehen.
16. Warum Datensätze doppelt auftreten können
Während du mehrere Seiten abrufst, können sich Daten in WebinarSuite gleichzeitig ändern.
Wird ein bereits gelieferter Datensatz aktualisiert, kann sich dessen Position innerhalb der Sortierung verändern.
Dadurch kann derselbe Datensatz während eines Synchronisationslaufs unter Umständen ein zweites Mal erscheinen.
Das ist beabsichtigt.
Die API priorisiert:
Kein Datensatz soll verloren gehen.
Deine Integration sollte deshalb sogenannte idempotente Verarbeitung verwenden.
Bei Anmeldungen bedeutet das:
Verwende den tkey als eindeutigen Schlüssel und führe ein Upsert durch.
Vereinfacht:
Vermeide deshalb eine Logik wie:
Sonst erzeugst du bei einer erneuten Lieferung Duplikate.
17. Zeitstempel
Zeitangaben der API werden in UTC und im ISO-8601-Format ausgegeben.
Beispiel:
Wenn du die Zeiten einem Benutzer anzeigen möchtest, solltest du sie anschließend in dessen lokale Zeitzone umrechnen.
Für Webinar-Termine solltest du den von der API gelieferten UTC-Terminwert verwenden.
Text hier eingeben...