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.
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.
| Attribuut | Verplicht | Uitleg |
|---|---|---|
| data-boekoo | ja | De slug van de zaak. |
| data-accent | nee | Accentkleur in hex (standaard #0ca678). |
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>
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.
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 }
]
}
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" } ] }
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 } ] }
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=..." }
| Code | Betekenis |
|---|---|
| 400 | Ontbrekende of ongeldige parameters. |
| 409 | Het tijdslot is net bezet, kies een ander. |
| 422 | Honeypot ingevuld, als spam geweigerd. |
| 429 | Rate-limit: max 6 boekingen per uur per IP. |