API Documentation

Bookyt Team
May 18, 2026
17 min read
Bookyt

API Documentation

The Bookyt API allows external applications to connect to Bookyt. You can use it to retrieve master data, check availability, create bookings, record payments, or cancel operations.

This reference describes the technical use of api.php, the key access requirements, and the available endpoints.

Technical Basics

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

AreaNote
TransportHTTPS is required.
Response formatsMost endpoints return JSON. Individual endpoints return PDF or plain text.

Authentication and Access

TopicDescription
ActivationThe global setting e->GlobaleEinstellungen['api_active'] must have the value 1.
TokenThe token parameter can be sent via GET or POST and must match e->GlobaleEinstellungen['xml_token'].
IP whitelistIf e->GlobaleEinstellungen['xml_only_access_from_ip'] is set, REMOTE_ADDR must be included in the whitelist.

Load Protection and Limits

RuleBehavior
Immediate checkIf getServerAuslastung() > 35, the request is terminated early with HTTP 400 and {error: 'Server too busy. Try again later.'}.
General throttlingIf Load >= 30, HTTP 503 is returned with a JSON error message.
Hourly limitApproximately 1000 requests are allowed per hour. This is based on the log_api table for the previous one-hour period.
Response formatsSome endpoints intentionally return plain text such as OK, TRUE, or FALSE.

Error Patterns

StatusFormatMeaning
200JSON, PDF, or plain textSuccessful response.
400JSONInvalid request or busy guard.
403JSONAccess denied or invalid parameters.
503JSONLoad protection or request limit reached.

Conventions

TopicConvention
MethodsMost endpoints use GET; individual endpoints use POST and are marked accordingly.
Date valuesUnix timestamps in seconds are commonly used. Some endpoints accept German date values in the format dd.mm.yyyy.
LanguageContent may include multilingual fields such as _en, _es, _nl, _hr, _it, _pt, or _fr.
IDsIDs are generally numeric. Strings such as no may contain invoice numbers or online payment codes.

Endpoints with call

update_status

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Status update for a booking; optional mileage readings. For status=4, an invoice may be generated and sent by email.

Parameters:

NameTypeRequiredDescription
vorgang_nrintyesInvoice number
status_idintyes-
km_stand_ankunftintno-
km_stand_abfahrtintno-
Response:

JSON: {success:true}

Notes: For status 4 and the setting ‘rueckgabe_abrechnen=1’, rechnungsnummer_rechnung is created, a PDF is generated, and it is sent by email.

locations

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Locations including optional opening hours.

Parameters:

NameTypeRequiredDescription
showstringno’all’ shows all; otherwise filter: use_internet=1, aktiv=1, nicht_buchen=0
openstringno’true’ ⇒ opening-hours arrays; holidays/date exceptions are taken into account
Response:

JSON array: locations with fields (ID, caption, address, zip, place, state, street, opening_string, opening_times, opening_times_special, tel_nr,…).

articles

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Active articles available online, including category, files, and restrictions (groups/locations).

Response:

JSON array: normalized fields per article, ‘files’ (URLs), ‘categories’:[fahrzeuggruppe_sub_id], ‘stationen’:[station_id].

artikelpreise

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Article prices from PreisCheck for price list/period.

Parameters:

NameTypeRequiredDescription
preisliste_idintyes-
mwst_satznumberyes-
startint|dateyes-
stopint|dateyes-
Response:

JSON array: price data (from PreisCheck).

tac

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

General Terms and Conditions (multilingual).

Response:

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

news

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Latest 10 news items (newsboard) without Schnappi.

Response:

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

category

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Vehicle subgroup including media files, search term, labels by language, number of vehicles, etc.

Parameters:

NameTypeRequiredDescription
fahrzeuggruppe_idintnoFilter
Response:

JSON map keyed by ID with files[], fzg_gruppe_sub[_xx], suchbegriff, anzahl_fahrzeuge, bezeichnung[_xx], internet_link, frontend_link, among others.

get_booking

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Retrieve a transaction by invoice number or online payment code.

Parameters:

NameTypeRequiredDescription
nostringyes<=30 characters: numeric ⇒ rechnungsnummer, otherwise onlinezahlung_code
Response:

JSON: {vorgang:{...}} including customer, amounts, VAT, positions (cleaned). 'error' if not found.

set_payment

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Record payment against a transaction (quick entry).

Parameters:

NameTypeRequiredDescription
nostringyesInvoice number
amountnumberyes>0
zahlart_idintnootherwise default from GlobaleEinstellungen
Response:

Plain text: TRUE or FALSE.

reservierungsbestaetigungPDF

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Download the reservation confirmation as a PDF.

Parameters:

NameTypeRequiredDescription
buchung_idintyes-
Response:

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

get_all_bookings

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

All bookings in the interval, including article list (from positions fp%).

Parameters:

NameTypeRequiredDescription
dateint|datenoDefault: today
date_stopint|datenoDefaults to same as ‘date’
category_idintnoFilter
station_idintnoFilter
Response:

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

calculate_tarif

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Rate calculation (PreisCheck.InitOhneB_ID).

Parameters:

NameTypeRequiredDescription
startint|dateyes-
stopint|dateyes-
category_idintyes-
station_idintyes-
kunde_idintno-
kilometernumberno-
rabatt_satznumberno-
only_online_tarifboolno’true’ to use only online rates
Response:

JSON: complete PreisCheck object state (serialized).

get_bookings

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Bookings in the interval (compact, without article GC), optionally selecting an individual booking.

Parameters:

NameTypeRequiredDescription
dateint|datenoDefault: today
date_stopint|datenoDefaults to same as ‘date’
station_idintno-
buchung_idintnosets a wide time range of ±10y
category_idintnoFilter by subgroup
Response:

JSON array keyed by ID with times, location, subgroup, status, customer data, vorgang_nr, booking code, anlage_datum.

customerlist

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Customer list (personenv2.sql query), excluding types (6,7).

Response:

JSON array: customer fields by query.

ressources

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Resources/vehicles including damage records and blocks as of the reference date.

Parameters:

NameTypeRequiredDescription
category_idintnoFilter
station_idintnoFilter
datumintnoDefault now()
Response:

JSON array: vehicles (cleaned fields), plus damages[] and sperren[].

damages

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Damage records for a vehicle.

Parameters:

NameTypeRequiredDescription
fahrzeug_idintyes-
Response:

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

events

PropertyValue
MethodGET
AuthenticationToken/whitelist guards + module active

Event dates with capacity, articles, regions, files, group-specific prices, and free-text categories.

Response:

JSON array: extensive structure per event date including capacity_

  • fields. Notes: Only if e->GlobaleEinstellungen[‘modul_eventplaner’]==1. Returns future events (start>now), online=1.

reporting (chat_id)

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Executes a saved GPT/chat query (SQL) in the reporting user context.

Parameters:

NameTypeRequiredDescription
chat_idintyes-
Response:

JSON array: query records; if not found, HTTP 400 + {error:‘GPT Query not fo und’}.

reporting (query_id)

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Executes a saved query (formulare_query), optionally with filters.

Parameters:

NameTypeRequiredDescription
query_idintyes-
filter[]jsonnomultiple; added to the WHERE clause
Response:

JSON array: results; if reporting tables are missing, an empty array is returned.

customer_details

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Detailed data for a customer (person object).

Parameters:

NameTypeRequiredDescription
kunde_idintyes-
Response:

JSON: person→person_array

getcustomer

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Raw data for a person (cleaned of sensitive/ID fields).

Parameters:

NameTypeRequiredDescription
IDintyes-
Response:

JSON: Person fields without ID/password etc.

updatecustomer

PropertyValue
MethodPOST
AuthenticationToken/whitelist guards

Update customer master data.

Parameters:

NameTypeRequiredDescription
IDintyes-
formobjectyesKey-value data for the fields to update
Response:

JSON: {success:true}

contract

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Rental contract as PDF (inline) via unique_id.

Parameters:

NameTypeRequiredDescription
unique_idstringyesalphanumeric
Response:

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

fahrtenbuch

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Vehicle logbook entries for a vehicle within the period.

Parameters:

NameTypeRequiredDescription
startint|dateyesUnix timestamp or German date
stopint|dateyes-
fahrzeug_idintyes-
Response:

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

Notes: Maximum 3 years. Validation errors return fehler=true and a message.

insertFahrtenbuch

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Create a logbook entry.

Parameters:

NameTypeRequiredDescription
user_idintyes-
startintyesTS
stopintyesTS
station_idintyes-
station_id_stopintyes-
start_kmintyes-
stop_kmintyes-
fahrzeug_idintyes-
bemerkungstringno-
Response:

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

availability

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Availability and price for time/location/category/vehicle.

Parameters:

NameTypeRequiredDescription
startstringyesISO/date; parsed to TS
stopstringyes-
location_idintyes-
category_idintyes-
fahrzeug_idintno-
kunde_idintno-
kilometernumberno-
rabatt_satznumberno-
only_online_tarifboolno-
Response:

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}

Notes:

newBooking

PropertyValue
MethodPOST
AuthenticationToken/whitelist guards

Create a new booking; optionally creates a customer, calculates prices/positions, and returns receipt URL/QR.

Parameters:

NameTypeRequiredDescription
startstringyes-
stopstringyes-
location_idintyes-
category_idintyes-
fahrzeug_idintnoAutomatic assignment possible (xml_kennzeichen_automatisch)
kunde_idintno-
kilometernumberno-
rabatt_satznumberno-
only_online_tarifboolno-
vatidintyes-
vatratenumberyes-
zahlart_idintyes-
voucher_codestringno-
remarksstringnointernal
remarks_customerstringnosaved for the customer
customer_idintnoif available
customerobjectyesif customer_id is empty {name, firstname, email, anrede_id, mobil, adresse, plz, ort, land_id, geburtsdatum}
positionenarrayyesList of objects: {type(1=rate/otherwise article), amount, price_net, caption, artikel_id?}
Response:

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

Notes: Checks availability via checkBuchungFreeV2. Sets status/purpose from GlobaleEinstellungen.

cancel

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Cancels a booking by transaction number.

Parameters:

NameTypeRequiredDescription
vorgang_nrintyes-
Response:

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

updateRessources

PropertyValue
MethodPOST
AuthenticationToken/whitelist guards

Set multiple vehicle-location assignments for a date.

Parameters:

NameTypeRequiredDescription
fahrzeugearrayyesArray of {fahrzeug_id, datum, station_id}
Response:

No explicit JSON (no echo) – usually HTTP 200 without content.

Notes: If the location has changed, insertStation() is called.

updateRessource

PropertyValue
MethodPOST
AuthenticationToken/whitelist guards

Create/update an individual vehicle (master data/status/location/assignment).

Parameters:

NameTypeRequiredDescription
fahrzeug_idintyes0 ⇒ create new
fzgobjectyesFields: bezeichnung, fahrzeug_nr, weitere_fahrzeug_nummer, schluesselnr1, briefnr, aktivierdatum, fahrgestellnummer, freitext?, kennzeichen?, deaktivierdatum?, status_id?, fahrzeuggruppe_sub_id (when creating), datum, station_id
Response:

JSON: {success:bool, fahrzeug_id:int}

sendEmail

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

Sends a prepared email (template), optionally with a generated PDF attachment.

Parameters:

NameTypeRequiredDescription
email_idintyes-
ds_idintyesRecord ID
langstringno-
email_tostringyesRecipient address
print_formular_idintnoIf set, a document is generated first and attached
Response:

JSON: {success:true}

paymentTypes

PropertyValue
MethodGET
AuthenticationToken/whitelist guards

List of active payment types for persons.

Response:

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

Last updated on May 18, 2026