Chat-widget
Alle endpoints die de ingesloten chatwidget op klantwebsites gebruikt.
Deze groep bundelt alle openbare endpoints die de ingesloten chatwidget op klantwebsites gebruikt: de bereikbaarheidscontrole (`GET /api/public/widget/health`), het ophalen van de openbare widgetconfiguratie (`GET /api/public/widget/config/:widget_code`) en het verzenden van berichten en het berichtenverloop (`POST /api/public/widget/message`, `GET /api/public/widget/history`). De domeinvrijgave wordt bij het aanmaken van de widget door Zentor beheerd; hiervoor bestaat geen instellingenpagina in het tenantdashboard. Bij een niet-vrijgegeven origin kan de foutcode `WIDGET_ORIGIN_DENIED` optreden. Het aanmaken van de widget zelf is voorbehouden aan de Master Admin, terwijl de tenant de kant-en-klare embedcode ontvangt.
Er bestaat geen algemeen API-sleutelsysteem voor ontwikkelaars. `health` en `config` zijn zonder authenticatie bereikbaar, omdat ze bedoeld zijn voor de initialisatie van de widget in de browser. `message` en `history` vereisen daarentegen de `X-Widget-Token`-header en worden bovendien gecontroleerd tegen een origin-allowlist aan de serverzijde. Het embed-token wordt bij het aanmaken van de widget eenmalig als platte tekst weergegeven en mag niet voorkomen in openbare repositories, support-screenshots of browserlogs.
Elke detailpagina van deze groep beschrijft methode, pad, authenticatie, idempotentie en de gedocumenteerde foutcodes van het betreffende endpoint afzonderlijk. Een geslaagde aanroep van één endpoint bewijst niet automatisch dat een ander endpoint van dezelfde groep eveneens succesvol zou verlopen — met name bevestigt een groene `health`-check noch een geldige widget, noch een vrijgegeven origin, noch de bereikbaarheid van een AI-provider.
De bevestigde platformbrede API-limiet bedraagt 2.000 aanvragen binnen 15 minuten. Een daarvan afwijkende limiet voor een afzonderlijk widget-endpoint wordt alleen genoemd als die voor dat endpoint uitdrukkelijk is onderbouwd. `message` is niet idempotent; een client mag een onduidelijk afgebroken verzendpoging niet automatisch herhalen zonder eerst te controleren of het eerste bericht al is verwerkt.
De technische controle van deze groep steunt op het register onder `app/frontend/src/content/api-reference/groups/widget.ts` en de bijbehorende backend-routes. Elke detailpagina geeft aan of een succespad live, een negatief pad of slechts een code-analogie is gecontroleerd — dit onderscheid geldt voor de hele groep en mag niet worden vervangen door algemene succesverklaringen.