API Dokumentation

Bookyt Team
18. Mai 2026
16 Min. Lesezeit
Bookyt

API-Dokumentation

Die Bookyt-API ermöglicht die Anbindung externer Anwendungen an Bookyt. Sie können darüber Stammdaten abrufen, Verfügbarkeiten prüfen, Buchungen erstellen, Zahlungen verbuchen oder Vorgänge stornieren.

Diese Referenz beschreibt die technische Nutzung von api.php, die wichtigsten Zugriffsvoraussetzungen und die verfügbaren Endpunkte.

Technische Grundlagen

Basis-URL: https://<ihr-bookyt-account>/api.php

BereichHinweis
TransportHTTPS wird vorausgesetzt.
RückgabeformateDie meisten Endpunkte liefern JSON. Einzelne Endpunkte liefern PDF oder Plaintext.

Authentifizierung und Zugriff

ThemaBeschreibung
AktivierungDie globale Einstellung e->GlobaleEinstellungen['api_active'] muss den Wert 1 haben.
TokenDer Parameter token kann per GET oder POST übertragen werden und muss e->GlobaleEinstellungen['xml_token'] entsprechen.
IP-WhitelistWenn e->GlobaleEinstellungen['xml_only_access_from_ip'] gesetzt ist, muss REMOTE_ADDR in der Whitelist enthalten sein.

Lastschutz und Limits

RegelVerhalten
Sofort-CheckBei getServerAuslastung() > 35 wird der Request frühzeitig mit HTTP 400 und {error: 'Server too busy. Try again later.'} beendet.
Generelles ThrottlingBei Load >= 30 wird HTTP 503 mit einer JSON-Fehlermeldung zurückgegeben.
StundenlimitPro Stunde sind ungefähr 1000 Requests zulässig. Grundlage ist die Tabelle log_api im letzten Stundenzeitraum.
AntwortformateEinige Endpunkte liefern bewusst Plaintext wie OK, TRUE oder FALSE.

Fehlerbilder

StatusFormatBedeutung
200JSON, PDF oder PlaintextErfolgreiche Antwort.
400JSONUngültige Anfrage oder Busy-Guard.
403JSONZugriff verweigert oder ungültige Parameter.
503JSONLastschutz oder Requestlimit erreicht.

Konventionen

ThemaKonvention
MethodenDie meisten Endpunkte verwenden GET; einzelne Endpunkte verwenden POST und sind entsprechend gekennzeichnet.
DatumswerteHäufig werden Unix-Timestamps in Sekunden verwendet. Einige Endpunkte akzeptieren deutsche Datumsangaben im Format dd.mm.yyyy.
SpracheInhalte können mehrsprachige Felder wie _en, _es, _nl, _hr, _it, _pt oder _fr enthalten.
IDsIDs sind in der Regel numerisch. Strings wie no können Rechnungsnummern oder Onlinezahlungscodes enthalten.

Endpunkte mit call

update_status

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Status-Update einer Buchung; optional km-Stände. Bei Status=4 ggf. Rechnung generieren und per E-Mail versenden.

Parameter:

NameTypErforderlichBeschreibung
vorgang_nrintjaRechnungsnummer
status_idintja-
km_stand_ankunftintnein-
km_stand_abfahrtintnein-
Antwort:

JSON: {success:true}

Hinweise: Bei Status 4 und Setting ‘rueckgabe_abrechnen=1’ wird rechnungsnummer_rechnung erzeugt, PDF erstellt und per Mail versendet.

locations

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Stationen inkl. optionaler Öffnungszeiten.

Parameter:

NameTypErforderlichBeschreibung
showstringnein’all’ zeigt alle, sonst Filter: use_internet=1, aktiv=1, nicht_buchen=0
openstringnein’true’ ⇒ Öffnungszeiten-Arrays; Feiertage/Datumsausnahmen berücksichtigt
Antwort:

JSON Array: Stationen mit Feldern (ID, caption, address, zip, place, state, street, opening_string, opening_times, opening_times_special, tel_nr,…).

articles

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Aktive, im Internet verfügbare Artikel inkl. Kategorie, Dateien, Einschränkungen (Gruppen/Stationen).

Antwort:

JSON Array: pro Artikel normalisierte Felder, ‘files’ (URLs), ‘categories’:[fahrzeuggruppe_sub_id], ‘stationen’:[station_id].

artikelpreise

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Artikelpreise aus PreisCheck für Preisliste/Zeitraum.

Parameter:

NameTypErforderlichBeschreibung
preisliste_idintja-
mwst_satznumberja-
startint|dateja-
stopint|dateja-
Antwort:

JSON Array: Preisdaten (vom PreisCheck).

tac

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Allgemeine Geschäftsbedingungen (mehrsprachig).

Antwort:

JSON: {tac, tac_en, tac_es, tac_nl, tac_it, tac_fr, tac_hr, tac_pt}

news

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Neueste 10 News (newsboard) ohne Schnappi.

Antwort:

JSON Array: [{betreff, mitteilung, datum}]

category

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Fahrzeuggruppen-Sub inkl. Mediadateien, Suchbegriff, Bezeichnungen je Sprache, Anzahl Fahrzeuge etc.

Parameter:

NameTypErforderlichBeschreibung
fahrzeuggruppe_idintneinFilter
Antwort:

JSON Map keyed by ID mit u. a. files[], fzg_gruppe_sub[_xx], suchbegriff, anzahl_fahrzeuge, bezeichnung[_xx], internet_link, frontend_link.

get_booking

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Vorgang per Rechnungsnummer oder Onlinezahlungs-Code abrufen.

Parameter:

NameTypErforderlichBeschreibung
nostringja<=30 Zeichen: numeric ⇒ rechnungsnummer, sonst onlinezahlung_code
Antwort:

JSON: {vorgang:{...}} inkl. Kunde, Beträge, MwSt, Positionen (bereinigt). 'error' falls nicht gefunden.

set_payment

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Zahlung auf Vorgang verbuchen (Schnellerfassung).

Parameter:

NameTypErforderlichBeschreibung
nostringjaRechnungsnummer
amountnumberja>0
zahlart_idintneinsonst Default aus GlobaleEinstellungen
Antwort:

Plaintext: TRUE oder FALSE.

reservierungsbestaetigungPDF

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Download der Reservierungsbestätigung als PDF.

Parameter:

NameTypErforderlichBeschreibung
buchung_idintja-
Antwort:

Content-Type: application/pdf; Content-Disposition: download; filename=confirmation_.pdf

get_all_bookings

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Alle Buchungen im Intervall inkl. Artikelliste (aus Positionen fp%).

Parameter:

NameTypErforderlichBeschreibung
dateint|dateneinStandard heute
date_stopint|dateneinStandard wie ‘date’
category_idintneinFilter
station_idintneinFilter
Antwort:

JSON: {bookings:[...], fahrzeuge:[...], fahrzeuge_sperren:[...], fahrzeuge_station:[...], stationen:[...]}

calculate_tarif

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Tarifberechnung (PreisCheck.InitOhneB_ID).

Parameter:

NameTypErforderlichBeschreibung
startint|dateja-
stopint|dateja-
category_idintja-
station_idintja-
kunde_idintnein-
kilometernumbernein-
rabatt_satznumbernein-
only_online_tarifboolnein’true’ um nur Online-Tarife zu nutzen
Antwort:

JSON: kompletter PreisCheck-Objektzustand (serialisiert).

get_bookings

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Buchungen im Intervall (kompakter, ohne Artikel-GC) – optional Einzelauswahl.

Parameter:

NameTypErforderlichBeschreibung
dateint|dateneinStandard heute
date_stopint|dateneinStandard wie ‘date’
station_idintnein-
buchung_idintneinsetzt breiten Zeitraum ±10y
category_idintneinFilter nach Sub-Gruppe
Antwort:

JSON Array keyed by ID mit Zeiten, Station, Sub-Gruppe, Status, Kundendaten, Vorgang_nr, Buchungscode, anlage_datum.

customerlist

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Kundenliste (Query personenv2.sql) exklusive Typen (6,7).

Antwort:

JSON Array: Kundenfelder je Query.

ressources

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Ressourcen/Fahrzeuge inkl. Schäden und Sperren zum Stichtag.

Parameter:

NameTypErforderlichBeschreibung
category_idintneinFilter
station_idintneinFilter
datumintneinStandard now()
Antwort:

JSON Array: Fahrzeuge (bereinigte Felder), dazu damages[] und sperren[].

damages

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Schäden eines Fahrzeugs.

Parameter:

NameTypErforderlichBeschreibung
fahrzeug_idintja-
Antwort:

JSON: {:[...]} oder {error:true, message:'...'}

events

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards + Modul aktiv

Event-Termine mit Kapazität, Artikeln, Regionen, Dateien, gruppenspezifischen Preisen und Freitext-Kategorien.

Antwort:

JSON Array: pro Event-Datum umfangreiche Struktur inkl. capacity_

  • Felder. Hinweise: Nur wenn e->GlobaleEinstellungen[‘modul_eventplaner’]==1. Liefert zukünftige (start>now), online=1.

reporting (chat_id)

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Führt gespeicherte GPT/Chat-Query (SQL) im Reporting-User-Kontext aus.

Parameter:

NameTypErforderlichBeschreibung
chat_idintja-
Antwort:

JSON Array: Datensätze der Query; bei Nichtfinden HTTP 400 + {error:‘GPT Query not fo und’}.

reporting (query_id)

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Führt gespeicherte Query (formulare_query) aus, optional mit Filtern.

Parameter:

NameTypErforderlichBeschreibung
query_idintja-
filter[]jsonneinmehrfach; wird zur WHERE-Klausel addiert
Antwort:

JSON Array: Ergebnisse; wenn Reporting-Tabellen fehlen, leeres Array.

customer_details

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Detaildaten eines Kunden (Personenobjekt).

Parameter:

NameTypErforderlichBeschreibung
kunde_idintja-
Antwort:

JSON: person→person_array

getcustomer

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Rohdaten einer Person (bereinigt um sensible/ID-Felder).

Parameter:

NameTypErforderlichBeschreibung
IDintja-
Antwort:

JSON: Personenfelder ohne ID/Passwort etc.

updatecustomer

EigenschaftWert
MethodePOST
AuthentifizierungToken/Whitelist-Guards

Kundenstammdaten aktualisieren.

Parameter:

NameTypErforderlichBeschreibung
IDintja-
formobjectjaKey-Value der zu aktualisierenden Felder
Antwort:

JSON: {success:true}

contract

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Mietvertrag als PDF (inline) über unique_id.

Parameter:

NameTypErforderlichBeschreibung
unique_idstringjaalphanumerisch
Antwort:

Content-Type: application/pdf; Content-Disposition: inline; filename=contract_.pdf

fahrtenbuch

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Fahrtenbuch-Einträge eines Fahrzeugs im Zeitraum.

Parameter:

NameTypErforderlichBeschreibung
startint|datejaUnix-TS oder dt. Datum
stopint|dateja-
fahrzeug_idintja-
Antwort:

JSON: {fehler:bool, meldung?:string, fahrtenbuch:[...]}

Hinweise: Maximal 3 Jahre. Validierungsfehler liefern fehler=true und eine Meldung.

insertFahrtenbuch

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Fahrtenbuch-Eintrag anlegen.

Parameter:

NameTypErforderlichBeschreibung
user_idintja-
startintjaTS
stopintjaTS
station_idintja-
station_id_stopintja-
start_kmintja-
stop_kmintja-
fahrzeug_idintja-
bemerkungstringnein-
Antwort:

JSON: {success:true|false, meldung?:string}

availability

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Verfügbarkeit & Preis für Zeit/Station/Kategorie/Fahrzeug.

Parameter:

NameTypErforderlichBeschreibung
startstringjaISO/Datum; wird zu TS geparst
stopstringja-
location_idintja-
category_idintja-
fahrzeug_idintnein-
kunde_idintnein-
kilometernumbernein-
rabatt_satznumbernein-
only_online_tarifboolnein-
Antwort:

JSON: {available:bool, error:string|'', notice:string, vatrate:number, vatid:int, price:number, price_net:number, price_detail:object, price_valid_fares:[...], preisliste_id:int}

Hinweise:

newBooking

EigenschaftWert
MethodePOST
AuthentifizierungToken/Whitelist-Guards

Neue Buchung anlegen; legt optional Kunde an, berechnet Preise/Positionen und liefert Quittungs-URL/QR.

Parameter:

NameTypErforderlichBeschreibung
startstringja-
stopstringja-
location_idintja-
category_idintja-
fahrzeug_idintneinAutomatische Zuweisung möglich (xml_kennzeichen_automatisch)
kunde_idintnein-
kilometernumbernein-
rabatt_satznumbernein-
only_online_tarifboolnein-
vatidintja-
vatratenumberja-
zahlart_idintja-
voucher_codestringnein-
remarksstringneinintern
remarks_customerstringneinwird beim Kunden gespeichert
customer_idintneinfalls vorhanden
customerobjectjawenn customer_id leer {name, firstname, email, anrede_id, mobil, adresse, plz, ort, land_id, geburtsdatum}
positionenarrayjaListe mit Objekten: {type(1=Tarif/sonst Artikel), amount, price_net, caption, artikel_id?}
Antwort:

JSON: {success:bool, remarks, errormsg, vorgang_nr:int|null, buchung_id:int|null, quittung_url, qr_code}

Hinweise: Prüft Verfügbarkeit via checkBuchungFreeV2. Setzt Status/Zweck aus GlobaleEinstellungen.

cancel

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Storniert Buchung per Vorgangsnummer.

Parameter:

NameTypErforderlichBeschreibung
vorgang_nrintja-
Antwort:

JSON: {success:bool, notice?:string}

updateRessources

EigenschaftWert
MethodePOST
AuthentifizierungToken/Whitelist-Guards

Mehrere Fahrzeug-Station-Zuordnungen zum Datum setzen.

Parameter:

NameTypErforderlichBeschreibung
fahrzeugearrayjaArray von {fahrzeug_id, datum, station_id}
Antwort:

Kein explizites JSON (kein echo) – in der Regel HTTP 200 ohne Inhalt.

Hinweise: Bei geänderter Station wird insertStation() aufgerufen.

updateRessource

EigenschaftWert
MethodePOST
AuthentifizierungToken/Whitelist-Guards

Einzelnes Fahrzeug anlegen/aktualisieren (Stammdaten/Status/Station/Zugehörigkeit).

Parameter:

NameTypErforderlichBeschreibung
fahrzeug_idintja0 ⇒ Neuanlage
fzgobjectjaFelder: bezeichnung, fahrzeug_nr, weitere_fahrzeug_nummer, schluesselnr1, briefnr, aktivierdatum, fahrgestellnummer, freitext?, kennzeichen?, deaktivierdatum?, status_id?, fahrzeuggruppe_sub_id (bei Neuanlage), datum, station_id
Antwort:

JSON: {success:bool, fahrzeug_id:int}

sendEmail

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Versendet eine vorbereitete E-Mail (Template) optional mit generiertem PDF-Anhang.

Parameter:

NameTypErforderlichBeschreibung
email_idintja-
ds_idintjaDatensatz-ID
langstringnein-
email_tostringjaEmpfängeradresse
print_formular_idintneinWenn gesetzt, wird zuvor ein Dokument erzeugt und angehängt
Antwort:

JSON: {success:true}

paymentTypes

EigenschaftWert
MethodeGET
AuthentifizierungToken/Whitelist-Guards

Liste aktiver Zahlungsarten für Personen.

Antwort:

JSON Array: [{ID, bezeichnung, bezeichnung_en, bemerkung}]

Zuletzt aktualisiert am 18. Mai 2026