Een chatbot-API is een HTTP-interface waarmee je berichten naar een AI-chatbot stuurt en programmatisch antwoorden ontvangt — zonder gebruik te maken van een visuele widget. In plaats van dat een gebruiker in een chatbubbel typt, stuurt je code een verzoek, ontvangt een antwoord en doet daar iets mee: het rendert een aangepaste UI, logt het antwoord, activeert een actie of stuurt het resultaat naar een ander systeem.
Deze gids behandelt wat een chatbot-API is, wanneer je er een gebruikt in plaats van een ingesloten widget, de drie belangrijkste verbindingsmethoden (REST, Zapier en webhooks), en praktische patronen voor het bouwen van echte integraties.
Wat is een chatbot-API?
Een chatbot-API stelt je getrainde AI-chatbot beschikbaar als een dienst die elke code via HTTP kan aanroepen. Je stuurt een bericht van de gebruiker mee in de request body, en de API geeft het antwoord van de chatbot terug — afkomstig uit welke bronnen (websitecontent, documenten, Q&A-paren) je ook hebt gebruikt om hem te trainen.
Het belangrijkste verschil met een kant-en-klare widget: de API geeft ruwe data terug. Jouw applicatie bepaalt hoe die wordt weergegeven. Dat betekent dat je dezelfde chatbot kunt insluiten in een mobiele app, een Slack-bot, een intern dashboard en een backend-automatiseringspijplijn — allemaal met dezelfde getrainde kennisbank.
De meeste chatbot-API's volgen een vergelijkbaar patroon:
- Authenticeren — neem een API-sleutel op in de
Authorization-header. - Een bericht posten — stuur de tekst van de gebruiker, een chatbot-ID en optioneel een gespreks-ID voor context over meerdere beurten.
- Het antwoord verwerken — parse het antwoord, stream eventueel tokens voor een realtime gevoel, en sla de
conversationIdop voor de volgende beurt.
Vergelijk je chatbotopties voordat je je vastlegt op een platform, dan biedt dit overzicht van de beste AI-chatbots voor websites een goed startpunt.
Wanneer gebruik je de API versus de widget
De ingesloten widget dekt het merendeel van de website-use cases. De API is de juiste keuze wanneer je iets nodig hebt dat de widget niet kan bieden.
| Use case | Widget | API |
|---|---|---|
| Chatbubbel op de website | Ja | Niet nodig |
| Chat-UI met eigen huisstijl | Beperkte styling | Volledige controle |
| Integratie in een mobiele app | WebView-omweg | Native HTTP-aanroepen |
| Slack- of Discord-bot | Nee | Ja |
| Backend-automatisering (geen UI) | Nee | Ja |
| Triggers voor meerstapsworkflows | Nee | Ja, met webhooks |
| Integratie in analyticspijplijn | Nee | Ja |
| Interne tools en dashboards | Mogelijk | Beter |
Valt je use case in de rechterkolom, dan is de API de juiste tool. Voor alle insluitopties — widget, React-component, iframe en WordPress-plugin — zie de gids voor chatbotintegratie.
Verbindingsmethoden en beschikbaarheid per abonnement
Er zijn drie manieren om je chatbot te koppelen aan externe systemen. Ze dienen verschillende doelen en zijn beschikbaar op verschillende abonnementen.
| Verbindingsmethode | Wat het doet | Vereist abonnement | Typisch gebruik |
|---|---|---|---|
| REST API | Berichten versturen en AI-antwoorden ontvangen via HTTP | Hobby ($29.99/mnd)+ | Aangepaste UI's, mobiele apps, backend-automatisering |
| Zapier-integratie | Koppel aan 7.000+ apps zonder code | Hobby ($29.99/mnd)+ | CRM-synchronisatie, e-mailautomatisering, no-code workflows |
| Webhooks | Ontvang gebeurtenismeldingen wanneer er gesprekken plaatsvinden | Hobby ($29.99/mnd)+ | CRM-updates, Slack-meldingen, analyticspijplijnen |
De REST API geeft je de meeste controle. Zapier is sneller op te zetten als je geen eigen code wilt schrijven. Webhooks vullen beide aan — ze pushen data naar jou toe, in plaats van dat je moet wachten om ze op te halen.
Voor een volledig overzicht van wat elk abonnement bevat, zie de gids over chatbotkosten en -prijzen.
Vereisten per abonnement
| Abonnement | Prijs per maand | REST API | Zapier | Webhooks | Berichtenlimiet |
|---|---|---|---|---|---|
| Free | $0 | Nee | Nee | Nee | 50 berichten/maand |
| Hobby | $29.99 | Ja | Ja | Ja | 2.000 berichten |
| Standard | $119.99 | Ja | Ja | Ja | 12.000 berichten |
| Pro | $399.99 | Ja | Ja | Ja | 40.000 berichten |
Jaarlijkse facturering verlaagt elke abonnementsprijs met ongeveer 20%. API-berichten tellen mee voor je maandelijkse quotum, net als widgetberichten.
Authenticatie
Elk API-verzoek vereist een Bearer-token. Je genereert API-sleutels vanuit de werkruimte-instellingen in je Agentkit-dashboard.
Een API-sleutel genereren
- Open je Agentkit-werkruimte.
- Ga naar Instellingen en daarna API-sleutels.
- Klik op API-sleutel maken.
- Geef de sleutel een herkenbare naam (bijv. "Slack Bot Productie").
- Kopieer de sleutel meteen. Hij wordt niet nogmaals getoond.
De sleutel gebruiken in verzoeken
Neem je API-sleutel op in de Authorization-header:
Authorization: Bearer ak_live_your_api_key_here
Alle verzoeken moeten via HTTPS worden verstuurd. Verzoeken zonder geldig token geven een 401 Unauthorized-respons terug.
Best practices voor sleutelbeheer
- Bewaar API-sleutels in environment variables, nooit in client-side code.
- Roteer sleutels regelmatig, zeker na teamwijzigingen.
- Maak aparte sleutels voor aparte integraties, zodat je er één kunt intrekken zonder de andere te raken.
- Verwijder sleutels die je niet meer gebruikt.
Voor volledige authenticatiedetails, zie de authenticatiedocumentatie.
Het chat-endpoint
De kern van de API is één endpoint dat een bericht van de gebruiker naar je chatbot stuurt en het AI-antwoord teruggeeft.
Verzoek
POST /api/v1/chat Content-Type: application/json Authorization: Bearer ak_live_your_api_key_here
Request body:
{
"chatbotId": "your-chatbot-id",
"message": "What are your shipping options?",
"conversationId": "optional-conversation-id",
"visitorId": "optional-visitor-id",
"metadata": {
"page": "/products/shoes",
"userTier": "premium"
}
}
| Veld | Verplicht | Omschrijving |
|---|---|---|
chatbotId | Ja | De ID van de chatbot die wordt aangeroepen |
message | Ja | De berichttekst van de gebruiker |
conversationId | Nee | Geef een bestaande ID op om een gesprek voort te zetten. Laat dit weg om een nieuw gesprek te starten. |
visitorId | Nee | Een unieke identifier voor de bezoeker, nuttig om gesprekken te volgen |
metadata | Nee | Vrije key-value-paren die aan het gesprek worden gekoppeld voor analytics of routering |
Antwoord
{
"id": "msg_abc123",
"conversationId": "conv_xyz789",
"message": "We offer three shipping options: Standard (5-7 business days, free over $50), Express (2-3 business days, $9.99), and Overnight ($24.99). All orders include tracking.",
"sources": [
{
"title": "Shipping Policy",
"url": "https://example.com/shipping"
}
],
"createdAt": "2026-02-22T14:30:00Z"
}
De conversationId in het antwoord is belangrijk. Bewaar hem en geef hem mee in volgende verzoeken om de gesprekscontext te behouden. Zonder deze ID start elk bericht een nieuw gesprek en verliest de chatbot de draad.
Foutresponsen
| Statuscode | Betekenis | Veelvoorkomende oorzaak |
|---|---|---|
| 400 | Bad Request | Ontbrekende verplichte velden of ongeldige JSON |
| 401 | Unauthorized | Ongeldige of ontbrekende API-sleutel |
| 403 | Forbidden | API-toegang niet beschikbaar op je abonnement |
| 404 | Not Found | Ongeldige chatbot-ID |
| 429 | Too Many Requests | Ratelimiet overschreden |
| 500 | Internal Server Error | Tijdelijk serverprobleem, probeer opnieuw met backoff |
Voor de volledige endpointreferentie, zie de API-documentatie.
Streaming antwoorden
Voor realtime toepassingen waarbij je het antwoord wilt tonen terwijl het wordt gegenereerd (het typemachine-effect dat gebruikers van AI-chat verwachten), gebruik je Server-Sent Events (SSE).
Voeg de parameter stream: true toe aan je verzoek:
{
"chatbotId": "your-chatbot-id",
"message": "Explain your return policy",
"conversationId": "conv_xyz789",
"stream": true
}
Het antwoord komt binnen als een stroom SSE-events:
data: {"type": "token", "content": "Our"}
data: {"type": "token", "content": " return"}
data: {"type": "token", "content": " policy"}
data: {"type": "token", "content": " allows"}
...
data: {"type": "sources", "sources": [{"title": "Return Policy", "url": "https://example.com/returns"}]}
data: {"type": "done", "conversationId": "conv_xyz789", "messageId": "msg_def456"}
De stream afhandelen in JavaScript
const response = await fetch('https://api.agentkit.com/api/v1/chat', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ak_live_your_api_key_here'
},
body: JSON.stringify({
chatbotId: 'your-chatbot-id',
message: 'Explain your return policy',
stream: true
})
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const chunk = decoder.decode(value);
const lines = chunk.split('\n').filter(line => line.startsWith('data: '));
for (const line of lines) {
const data = JSON.parse(line.slice(6));
if (data.type === 'token') {
appendToUI(data.content);
}
}
}
Streamen wordt aanbevolen voor elke gebruikersgerichte integratie. Het laat de chatbot responsiever aanvoelen, zelfs bij het genereren van lange antwoorden.
Webhooks
Waar het chat-endpoint je in staat stelt berichten naar de chatbot te sturen, laten webhooks de chatbot juist data naar jou sturen. Wanneer specifieke gebeurtenissen plaatsvinden, stuurt Agentkit een HTTP POST-verzoek naar een URL die jij configureert. Webhooks zijn beschikbaar vanaf het Hobby-abonnement.
Webhooks instellen
- Ga naar Instellingen van je werkruimte en daarna Webhooks.
- Voer je endpoint-URL in (moet HTTPS zijn).
- Selecteer op welke events je je wilt abonneren.
- Sla op. Agentkit stuurt een verificatieverzoek om te bevestigen dat je endpoint bereikbaar is.
Beschikbare events
| Event | Trigger | Typisch gebruik |
|---|---|---|
conversation.started | Er begint een nieuw gesprek | Loggen naar analytics |
conversation.completed | Een gesprek eindigt (time-out of expliciet gesloten) | Samenvatten en archiveren |
message.received | Een bezoeker stuurt een bericht | Realtime monitoring |
message.sent | De chatbot stuurt een antwoord | Kwaliteitsmeting |
lead.captured | Een bezoeker dient een leadformulier in | Sturen naar CRM |
action.triggered | Een aangepaste actie wordt geactiveerd | Doorsturen naar de juiste handler |
Webhook-payload
Elke webhook-POST bevat een JSON-body met een consistente structuur:
{
"event": "lead.captured",
"timestamp": "2026-02-22T15:45:00Z",
"chatbotId": "your-chatbot-id",
"conversationId": "conv_xyz789",
"data": {
"name": "Alex Chen",
"email": "[email protected]",
"message": "Interested in the enterprise plan"
},
"signature": "sha256=abc123..."
}
Verifieer altijd het veld signature aan de hand van je webhookgeheim om te bevestigen dat het verzoek van Agentkit komt, en niet van derden.
Retry-gedrag
Geeft je endpoint een non-2xx statuscode terug, dan probeert Agentkit het opnieuw met exponentiële backoff: na 1 minuut, 5 minuten, 30 minuten, en stopt daarna. Mislukte afleveringen zijn zichtbaar in de webhooklogs van je dashboard.
Veelvoorkomende integratiepatronen
Patroon 1: Slack-bot
Stuur klantvragen van je website-chatbot door naar een Slack-kanaal, en laat je team reageren wanneer de AI geen antwoord weet.
- Maak een Slack-app aan met inkomende webhooks ingeschakeld.
- Stel een Agentkit-webhook in voor
conversation.completed-events. - Controleer in je webhookhandler of het gesprek is opgelost of geëscaleerd.
- Bij escalatie: post een opgemaakt bericht naar je Slack-webhook-URL met het gesprekstranscript.
Zo krijgt je supportteam inzicht zonder dat ze het Agentkit-dashboard hoeven te monitoren.
Patroon 2: Aangepaste chat-UI
Vervang de standaardwidget door een chatervaring die is ingebouwd in je applicatie.
- Bouw je chatinterface met je gewenste framework.
- Roep bij het versturen van een bericht het chat-endpoint aan met
stream: true. - Render tokens zodra ze binnenkomen voor realtime feedback.
- Sla de
conversationIdop in de lokale state om context tussen berichten te behouden.
Dit is de juiste aanpak voor mobiele apps, desktoptoepassingen of elk product waarbij de zwevende widget niet in het ontwerp past. Wil je in de widget blijven, maar meer controle over de plaatsing, dan behandelt de gids voor het insluiten van een chatbot op je website alle vier de insluitopties.
Patroon 3: Backend-automatisering
Gebruik de chatbot als een AI-laag in een grotere workflow, zonder chat-UI.
Voorbeeld: het verwerken van supporttickets.
- Er komt een nieuw ticket binnen in je ticketingsysteem.
- Je backend stuurt de ticketinhoud naar het chat-endpoint.
- De chatbot genereert een voorgesteld antwoord op basis van je getrainde kennisbank.
- Je systeem antwoordt automatisch (bij een hoge betrouwbaarheidsscore) of zet de suggestie in de wachtrij voor menselijke controle.
Dit patroon werkt omdat de chatbot getraind is op dezelfde kennisbank die je supportteam gebruikt. De API geeft je programmatische toegang tot die intelligentie. Wil je meer weten over waarop je een chatbot kunt trainen — website-crawls, PDF's, CSV's, Q&A-paren — zie hoe je een chatbot traint.
Patroon 4: Analyticspijplijn
Leg elk gesprek vast voor analyse.
- Abonneer je op de webhookevents
message.receivedenmessage.sent. - Je webhookhandler schrijft events naar je datawarehouse (BigQuery, Snowflake, enz.).
- Bouw dashboards die veelgestelde vragen, oplospercentages, piekuren en gesprekstrends tonen.
Met het metadata-veld in het chat-endpoint kun je context (pagina-URL, gebruikerssegment, A/B-testvariant) meesturen die je analytics verrijkt.
Ratelimieten
De API hanteert ratelimieten om de betrouwbaarheid voor alle gebruikers te waarborgen.
| Abonnement | Verzoeken per minuut |
|---|---|
| Hobby | 60 |
| Standard | 120 |
| Pro | 300 |
Kom je tegen de limiet aan, dan geeft de API een 429-statuscode terug met een Retry-After-header die aangeeft hoeveel seconden je moet wachten. Bouw retry-logica in je integratie:
async function sendMessage(payload, retries = 3) {
const response = await fetch(API_URL, {
method: 'POST',
headers: headers,
body: JSON.stringify(payload)
});
if (response.status === 429 && retries > 0) {
const retryAfter = parseInt(response.headers.get('Retry-After') || '5');
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
return sendMessage(payload, retries - 1);
}
return response.json();
}
Beveiligingsoverwegingen
Houd bij het bouwen van API-integraties rekening met het volgende:
- Zet nooit API-sleutels in client-side code. Bouw je een aangepaste chat-UI voor een webapp, proxy verzoeken dan via je eigen backend.
- Valideer webhookhandtekeningen. Verifieer altijd de HMAC-signature voordat je webhook-payloads verwerkt.
- Gebruik domeinbeperkingen. Beperk in je chatbotinstellingen welke domeinen met je chatbot mogen communiceren.
- Monitor het gebruik. Controleer je API-gebruik regelmatig in het dashboard om onverwachte pieken te signaleren die kunnen wijzen op een gelekte sleutel.
- Hanteer het least-privilege-principe. Hoeft een integratie alleen berichten te versturen, geef hem dan geen sleutel met beheerdersrechten.
Wil je begrijpen hoe AI-chatbot-API's zich verhouden tot bredere tool-ecosystemen, dan is MCP (Model Context Protocol) het lezen waard — een opkomende standaard die AI-modellen gestructureerde toegang geeft tot externe tools en data.
Aan de slag
De snelste weg van nul naar een werkende integratie:
- Meld je aan voor een Agentkit-account en maak je eerste chatbot.
- Train de chatbot op je content (zie hoe je een chatbot traint).
- Upgrade naar het Hobby-abonnement ($29.99/maand) om API-toegang in te schakelen.
- Genereer een API-sleutel in je werkruimte-instellingen.
- Verstuur je eerste testverzoek met cURL of Postman.
- Bouw verder: aangepaste UI, Slack-bot, automatisering, of wat je use case ook vereist.
Veelgestelde vragen
Wat is een chatbot-API-sleutel?
Een chatbot-API-sleutel is een geheim token dat je applicatie authenticeert wanneer die verzoeken doet aan de chatbot-API. Je genereert hem in je werkruimte-instellingen, neemt hem op in de Authorization: Bearer-header van elk verzoek en behandelt hem als een wachtwoord — bewaar hem in environment variables, nooit in client-side code, en roteer hem als je vermoedt dat hij is uitgelekt. Elke sleutel kan worden gescoped naar een specifieke integratie, zodat je er één kunt intrekken zonder de andere te raken.
Bestaat er een gratis chatbot-API?
Het Free-abonnement van Agentkit ($0/maand) omvat geen REST API-toegang — daarvoor is het Hobby-abonnement voor $29.99/maand nodig. Het Free-abonnement omvat wel de insluitbare JS-widget, Leads verzamelen en domeinbeperkingen, wat de meeste website-use cases dekt zonder enige code. Heb je vanaf dag één programmatische toegang nodig, dan is het Hobby-abonnement het startpunt, en je kunt het volledige platform gratis testen voordat je upgradet.
Moet ik programmeren om een chatbot-API te gebruiken?
Niet altijd. Heb je REST API-toegang nodig voor aangepaste integraties, dan zul je code moeten schrijven — of een tool als Postman gebruiken om verzoeken handmatig te testen. Wil je de chatbot alleen zonder code koppelen aan andere apps, dan verbindt de Zapier-integratie (beschikbaar vanaf het Hobby-abonnement en hoger) je met 7.000+ apps via een no-code-interface. Voor het insluiten op je website is geen code nodig, behalve het plakken van een <script>-tag.
Welke AI-modellen ondersteunt de chatbot-API?
Het onderliggende AI-model wordt per chatbot geconfigureerd in het dashboard. Agentkit ondersteunt modellen van drie providers: OpenAI (GPT-5.6 Sol, GPT-5.6 Terra, GPT-5.6 Luna), Anthropic (Claude Opus 5, Claude Sonnet 5, Claude Haiku 4.5) en Google (Gemini 3.7 Flash, Gemini 3.1 Pro). De standaard is GPT-5.6 Luna. Je API-aanroepen gebruiken het model dat voor die chatbot is geselecteerd — je geeft het model niet op op API-aanroepniveau.
Kan ik de chatbot-API gebruiken om chat op mijn website in te sluiten?
Ja, maar voor website-use cases is de JS-widget-insluiting meestal eenvoudiger. De widget laadt asynchroon via één <script>-tag en handelt UI, gespreksstate en streaming automatisch af. Gebruik de API wanneer je een volledig aangepaste UI, integratie in een mobiele app of backend-automatisering nodig hebt. Voor een vergelijking van alle insluitopties naast elkaar, zie de gids voor het insluiten van een chatbot op je website.
Een chatbot-API maakt van een getrainde kennisbank een aanroepbare dienst — dezelfde AI-antwoorden die in de widget verschijnen, zijn beschikbaar voor elk systeem dat een HTTP-verzoek kan doen. Bouw je een aangepaste interface, automatiseer je een supportworkflow, of koppel je je chatbot aan een breder tool-ecosysteem — de API geeft je de controle die een kant-en-klare widget niet kan bieden.
Bouw gratis je chatbot → Geen creditcard nodig.


