Zum Inhalt springen

Ticket+ in eure eigene Webseite, App oder Vereinsverwaltung

Eine offene REST-API für Veranstalter-Profile, Veranstaltungen und Kalender – frei nutzbar, ohne Genehmigungsprozess. Für alles, was einen eigenen Login pro Veranstalter braucht (eigene Events verwalten, Portal-Sprungmarke), gibt es API-Schlüssel im Portal unter API-Zugang.

Für wen ist das?

  • Vereinsverwaltungen & Fachsysteme (z. B. Vereinheit): Mitgliederplattform zeigt die nächste Veranstaltung des Vereins an oder bietet einen Sprung direkt ins Ticket+-Portal des Vereins.
  • Stadt-/Regionalportale (z. B. eine städtische Veranstaltungs-App): zentraler Veranstaltungskalender, gespeist aus mehreren Ticket+-Veranstaltern.
  • Eigene Veranstalter-Webseiten, die enger als das Standard-Widget einbinden wollen (z. B. eine Ballettschule, ein Verein mit eigenem Ball) – eigene Gestaltung der Event-Liste, Ticket+ nur für Daten & Kauf.

Öffentliche Endpunkte (kein Schlüssel nötig)

Alles hier ist ohnehin öffentlich im Shop sichtbar – nur veröffentlichte Veranstaltungen, keine internen Daten.

GET/api/v1/organizers/{slug}
Veranstalter-Profil
öffentlich
GET/api/v1/organizers/{slug}/events
Event-Liste – Parameter status=upcoming|past|all, type=events|products|all, limit=1–50
öffentlich
GET/api/v1/organizers/{slug}/events/latest
Die eine aktuell relevante Veranstaltung
öffentlich
GET/api/v1/organizers/{slug}/calendar.ics
Veranstaltungskalender als iCal-Feed (abonnierbar & einbettbar)
öffentlich
GET/api/v1/events/{slug}
Ein Event inkl. Kategorien & Live-Verfügbarkeit
öffentlich
curl https://ticket-plus.net/api/v1/organizers/ballettschule-on-point/events/latest

Organizer-gebundene Endpunkte (API-Schlüssel)

Für Integrationen, die dem Veranstalter selbst gehören – Vereinheit-Backend, eigene Website mit Login. Schlüssel erstellt der Inhaber selbst im Portal unter API-Zugang, kostenlos, jederzeit widerrufbar.

GET/api/v1/me
Wer bin ich – Schlüssel-Gültigkeit prüfen
API-Schlüssel
GET/api/v1/me/events
Eigene Events inkl. Entwürfe (nicht nur veröffentlichte)
API-Schlüssel
POST/api/v1/me/portal-link
Einmal-Link direkt ins Ticket+-Portal (60 s gültig) – für „In Ticket+ bearbeiten“-Buttons
API-Schlüssel
curl -H "Authorization: Bearer tp_live_..." https://ticket-plus.net/api/v1/me/events

# Deep-Link ins Portal ausstellen (z. B. Button "In Ticket+ öffnen"):
curl -X POST -H "Authorization: Bearer tp_live_..." \
     -H "Content-Type: application/json" \
     -d '{"returnTo":"/portal/events"}' \
     https://ticket-plus.net/api/v1/me/portal-link
# → {"url":"https://ticket-plus.net/api/organizer-sso/redeem?token=...","expiresInSeconds":60}
# Diesen "url"-Wert öffnet ihr per normalem Link/Redirect (kein iframe) –
# meldet den Veranstalter direkt im Ticket+-Portal an.

120 Anfragen/Minute je Schlüssel. Wer mehr braucht, meldet sich über das Kontaktformular.

Webhooks (Ticket+ meldet sich bei euch)

Statt regelmäßig abzufragen, bekommt euer System bei jedem Ereignis sofort eine signierte POST-Anfrage mit JSON-Body. Einrichten im Portal unter Webhooks – Ziel-URL (https) eintragen, gewünschte Ereignisse wählen, fertig. Funktioniert mit Zapier, Make, n8n oder eigener Software.

order.paidBestellung bezahlt – Bestellcode, Event, Käufer, Betrag, Anzahl Tickets
order.cancelledBestellung storniert (z. B. Rücklastschrift)
order.refundedTicket erstattet (Storno durch den Käufer)
event.cancelledEvent abgesagt
ticket.checked_inTicket beim Einlass gescannt – Ticket-Code, Kategorie, Platz, Wiedereinlass ja/nein
POST https://euer-system.example/hook
Content-Type: application/json
X-Ticketplus-Event: order.paid
X-Ticketplus-Delivery: <Zustell-ID>
X-Ticketplus-Signature: sha256=<HMAC-SHA256 des rohen Bodys mit eurem Secret>

{"id":"evt_…","type":"order.paid","createdAt":"2026-10-02T12:00:00.000Z",
 "data":{"orderCode":"TP-4F8A21","eventTitle":"…","totalCents":5800,"ticketCount":2}}

// Signatur prüfen (Node.js):
const expected = "sha256=" + crypto.createHmac("sha256", SECRET).update(rawBody).digest("hex");
const ok = signatureHeader.length === expected.length &&
  crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signatureHeader));
if (!ok) return 401;

Antwortet euer System nicht mit 2xx, versuchen wir es mit steigendem Abstand bis zu 6-mal. Nach 20 Fehlschlägen in Folge pausiert der Endpunkt automatisch (im Portal wieder aktivierbar). Über die X-Ticketplus-Delivery-ID lassen sich doppelte Zustellungen erkennen.

Zwei feste Regeln

🏷️
Ticket+-Branding bleibt sichtbar

Jede API-Antwort enthält einen poweredBy-Block (Name, Logo, Link). Wer Events/Kalender einbindet, zeigt „Tickets über Ticket+“ mit Verlinkung auf ticket-plus.net – wie beim bestehenden Einbett-Widget. Das gilt für alle Integrationen, unabhängig von der Größe.

🔗
Kauf läuft immer über Ticket+

Die API liefert Daten und Deep-Links (ticketPlusUrl, widgetUrl) – kein eigener Checkout, kein White-Label-Ticketshop. Für enge Einbindung ohne Seitenwechsel gibt es das widgetUrl (iframe), für alles andere den direkten Link.

Fragen zur Integration?

Schreibt uns über das Kontaktformular – gerade bei individuellen Wünschen wie einer engen Verdrahtung in eure eigene Veranstaltungsseite.

Zum Kontaktformular