Boekoo voor ontwikkelaars

Zet de boekingsmodule op eender welke website, of bouw je eigen integratie op onze JSON-API. Voor de publieke lees-endpoints heb je geen sleutel nodig.

Snel starten (2 minuten)

Plak deze twee regels op je pagina waar de boekingsmodule moet komen. Vervang jouw-slug door de slug van de zaak (staat in het beheer, onder Instellingen).

<div data-boekoo="jouw-slug" data-accent="#2f6f4e"></div>
<script src="https://boekoo.be/widget.js" async></script>

De widget rendert native in je eigen stijl, in een afgeschermde Shadow DOM, dus hij botst nooit met de CSS van je site.

De widget

Opties

AttribuutVerplichtUitleg
data-boekoojaDe slug van de zaak.
data-accentneeAccentkleur in hex (standaard #0ca678).

Iframe-fallback

Liever een simpel kader, of geen script laden? Gebruik de iframe. Zet hem in de widget-div, dan valt alles automatisch terug op de iframe als het script niet laadt.

<div data-boekoo="jouw-slug">
  <iframe src="https://boekoo.be/?p=boek&b=jouw-slug" style="width:100%;height:560px;border:0"></iframe>
</div>
<script src="https://boekoo.be/widget.js" async></script>

API-referentie

Basis: https://boekoo.be/?p=api&do=<actie>. Elk antwoord is JSON met een ok-veld. CORS staat open (Access-Control-Allow-Origin: *), dus je kan rechtstreeks vanuit de browser aanroepen.

GET diensten

De diensten van een zaak. Parameter: b (slug).

GET https://boekoo.be/?p=api&do=diensten&b=bistro-de-klaver

{
  "ok": true,
  "bedrijf": { "naam": "Bistro De Klaver", "beroep": "horeca", "slug": "bistro-de-klaver" },
  "diensten": [
    { "id": 20, "naam": "Reservatie diner", "duur_min": 120, "prijs_cent": 0, "capaciteit": 1 }
  ]
}

GET medewerkers

Medewerkers die een dienst uitvoeren. Parameters: b, dienst.

GET .../?p=api&do=medewerkers&b=bistro-de-klaver&dienst=20

{ "ok": true, "medewerkers": [ { "id": 7, "naam": "Zaal" } ] }

GET slots

Vrije tijdsloten. Parameters: b, dienst, datum (JJJJ-MM-DD), med (optioneel: geen of een id), personen (optioneel, standaard 1).

GET .../?p=api&do=slots&b=bistro-de-klaver&dienst=20&datum=2026-08-21&personen=2

{ "ok": true, "slots": [ { "start": "11:45", "eind": "13:45", "medewerker_id": 7 } ] }

POST boeking

Maakt een boeking (form-urlencoded). Parameters: b, dienst, datum, tijd, med, personen, klant_naam, klant_email, klant_telefoon, opmerking, en website (honeypot: laat leeg).

POST https://boekoo.be/?p=api&do=boeking
Content-Type: application/x-www-form-urlencoded

b=bistro-de-klaver&dienst=20&datum=2026-08-21&tijd=19:00
&personen=2&klant_naam=Jan&klant_email=jan@example.be

{ "ok": true, "token": "...", "bevestiging_url": "https://boekoo.be/?p=bevestiging&token=..." }

Foutcodes

CodeBetekenis
400Ontbrekende of ongeldige parameters.
409Het tijdslot is net bezet, kies een ander.
422Honeypot ingevuld, als spam geweigerd.
429Rate-limit: max 6 boekingen per uur per IP.