Dokumentation
GET/api/v1/bookings

Buchung anlegen

Legt eine Buchung im Namen eines Fahrgasts an (Gast-Buchung). Der Idempotency-Key-Header ist Pflicht — Wiederholungen mit demselben Key liefern dieselbe Buchung (200 statt 201) und buchen nie doppelt.

Wofür

Der Schreibkanal für eigene Buchungsoberflächen und Plugins: Halte über /stops auflösen, Abfahrt über /trips finden, dann hier buchen. Der Fahrgast erhält die Bestätigung samt Verwaltungslink an die übermittelte Telefonnummer.

Anfrage

Erfordert das Recht write:bookings.
AnfrageShell
curl -sS \
  -H "Authorization: Bearer rb_live_…" \
  "https://rufbusle.de/api/v1/bookings"

Antwort

BeispielantwortJSON
{
  "id": "bkg_5Rt8wY",
  "tripId": "trp_9Vc4mQ",
  "rideDate": "2026-08-12",
  "boardingStopId": "stp_7Kq2vX",
  "alightingStopId": "stp_1Ax9bN",
  "seats": 2,
  "wheelchairUsers": 0,
  "status": "SCHEDULED",
  "canceled": false,
  "transportMode": "BUS",
  "source": "WEB",
  "sourcePluginSlug": "phone-agent",
  "pickupWindowStart": "08:15",
  "pickupWindowEnd": "08:15",
  "createdAt": "2026-08-10T14:32:05.000Z",
  "phone": "+4915112345678"
}

Beispielwerte, keine echten Daten. Unbekannte Felder bitte ignorieren — es können jederzeit welche hinzukommen.

Felder

FeldTypBeschreibung
idstringInterne ID der Buchung.
tripIdstringFahrt, auf die gebucht wurde.
rideDatestring | nullServicedatum der Fahrt (YYYY-MM-DD).
boardingStopIdstringEinstieg — Verweis auf einen Halt.
alightingStopIdstringAusstieg — Verweis auf einen Halt.
seatsintegerGebuchte Sitzplätze.
wheelchairUsersintegerDavon Rollstuhlplätze.
statusstringStand der Durchführung: SCHEDULED | PICKED_UP | COMPLETED | NOSHOW.
canceledbooleanStorniert. Stornos verschwinden nicht, sie werden markiert.
transportModestringDurchführung als BUS oder TAXI.
sourcestringHerkunft der Buchung: WEB | RECURRING | PLUGIN | API.
sourcePluginSlugstring | nullSlug des erzeugenden Plugins (bei source PLUGIN oder plugin-gebundenen API-Schlüsseln); sonst null. Erlaubt Integrationen, eigene Buchungen zu erkennen.
pickupWindowStartstring | nullBeginn des zugesagten Abholfensters; sonst null.
pickupWindowEndstring | nullEnde des zugesagten Abholfensters; sonst null.
createdAtstringZeitpunkt der Buchung, ISO 8601 (UTC).
phoneoptionalstring | nullNur mit Scope read:bookings:pii; sonst nicht enthalten.

Worauf zu achten ist

Die Punkte, an denen Integrationen erfahrungsgemäß hängen bleiben.
  • Der Idempotency-Key ist Pflicht. Maschinen wiederholen Requests — ohne Key wäre der erste Timeout eine Doppelbuchung.
  • Die Buchung entsteht als Gast-Buchung: phone ist Pflicht (E.164) und empfängt die Bestätigungs-SMS. Zurücklesen lässt sich die Nummer nur mit read:bookings:pii.
  • Antwort 201 = neu angelegt, 200 = Idempotenz-Replay. 409 CONFLICT heißt: keine freie Kapazität auf diesem Abschnitt.
  • In booking.created-Webhooks erkennen Sie eigene Buchungen an source/sourcePluginSlug.
  • Zusätzliche Limits: enger Schreib-Bucket pro Schlüssel, Limit pro Zielrufnummer und ein Tages-Deckel pro Stadt.