Chatbot-API-integratie: REST, Zapier en webhooks uitgelegd

Met een chatbot-API kun je een AI-chatbot programmatisch aanroepen — van aangepaste UI's tot backend-automatiseringen. Ontdek wat een chatbot-API is, wanneer je REST, Zapier of webhooks gebruikt, en hoe je begint.

Cover Image for Chatbot-API-integratie: REST, Zapier en webhooks uitgelegd

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:

  1. Authenticeren — neem een API-sleutel op in de Authorization-header.
  2. Een bericht posten — stuur de tekst van de gebruiker, een chatbot-ID en optioneel een gespreks-ID voor context over meerdere beurten.
  3. Het antwoord verwerken — parse het antwoord, stream eventueel tokens voor een realtime gevoel, en sla de conversationId op 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 caseWidgetAPI
Chatbubbel op de websiteJaNiet nodig
Chat-UI met eigen huisstijlBeperkte stylingVolledige controle
Integratie in een mobiele appWebView-omwegNative HTTP-aanroepen
Slack- of Discord-botNeeJa
Backend-automatisering (geen UI)NeeJa
Triggers voor meerstapsworkflowsNeeJa, met webhooks
Integratie in analyticspijplijnNeeJa
Interne tools en dashboardsMogelijkBeter

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.

VerbindingsmethodeWat het doetVereist abonnementTypisch gebruik
REST APIBerichten versturen en AI-antwoorden ontvangen via HTTPHobby ($29.99/mnd)+Aangepaste UI's, mobiele apps, backend-automatisering
Zapier-integratieKoppel aan 7.000+ apps zonder codeHobby ($29.99/mnd)+CRM-synchronisatie, e-mailautomatisering, no-code workflows
WebhooksOntvang gebeurtenismeldingen wanneer er gesprekken plaatsvindenHobby ($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

AbonnementPrijs per maandREST APIZapierWebhooksBerichtenlimiet
Free$0NeeNeeNee50 berichten/maand
Hobby$29.99JaJaJa2.000 berichten
Standard$119.99JaJaJa12.000 berichten
Pro$399.99JaJaJa40.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

  1. Open je Agentkit-werkruimte.
  2. Ga naar Instellingen en daarna API-sleutels.
  3. Klik op API-sleutel maken.
  4. Geef de sleutel een herkenbare naam (bijv. "Slack Bot Productie").
  5. 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"
  }
}
VeldVerplichtOmschrijving
chatbotIdJaDe ID van de chatbot die wordt aangeroepen
messageJaDe berichttekst van de gebruiker
conversationIdNeeGeef een bestaande ID op om een gesprek voort te zetten. Laat dit weg om een nieuw gesprek te starten.
visitorIdNeeEen unieke identifier voor de bezoeker, nuttig om gesprekken te volgen
metadataNeeVrije 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

StatuscodeBetekenisVeelvoorkomende oorzaak
400Bad RequestOntbrekende verplichte velden of ongeldige JSON
401UnauthorizedOngeldige of ontbrekende API-sleutel
403ForbiddenAPI-toegang niet beschikbaar op je abonnement
404Not FoundOngeldige chatbot-ID
429Too Many RequestsRatelimiet overschreden
500Internal Server ErrorTijdelijk 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

  1. Ga naar Instellingen van je werkruimte en daarna Webhooks.
  2. Voer je endpoint-URL in (moet HTTPS zijn).
  3. Selecteer op welke events je je wilt abonneren.
  4. Sla op. Agentkit stuurt een verificatieverzoek om te bevestigen dat je endpoint bereikbaar is.

Beschikbare events

EventTriggerTypisch gebruik
conversation.startedEr begint een nieuw gesprekLoggen naar analytics
conversation.completedEen gesprek eindigt (time-out of expliciet gesloten)Samenvatten en archiveren
message.receivedEen bezoeker stuurt een berichtRealtime monitoring
message.sentDe chatbot stuurt een antwoordKwaliteitsmeting
lead.capturedEen bezoeker dient een leadformulier inSturen naar CRM
action.triggeredEen aangepaste actie wordt geactiveerdDoorsturen 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.

  1. Maak een Slack-app aan met inkomende webhooks ingeschakeld.
  2. Stel een Agentkit-webhook in voor conversation.completed-events.
  3. Controleer in je webhookhandler of het gesprek is opgelost of geëscaleerd.
  4. 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.

  1. Bouw je chatinterface met je gewenste framework.
  2. Roep bij het versturen van een bericht het chat-endpoint aan met stream: true.
  3. Render tokens zodra ze binnenkomen voor realtime feedback.
  4. Sla de conversationId op 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.

  1. Er komt een nieuw ticket binnen in je ticketingsysteem.
  2. Je backend stuurt de ticketinhoud naar het chat-endpoint.
  3. De chatbot genereert een voorgesteld antwoord op basis van je getrainde kennisbank.
  4. 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.

  1. Abonneer je op de webhookevents message.received en message.sent.
  2. Je webhookhandler schrijft events naar je datawarehouse (BigQuery, Snowflake, enz.).
  3. 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.

AbonnementVerzoeken per minuut
Hobby60
Standard120
Pro300

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:

  1. Meld je aan voor een Agentkit-account en maak je eerste chatbot.
  2. Train de chatbot op je content (zie hoe je een chatbot traint).
  3. Upgrade naar het Hobby-abonnement ($29.99/maand) om API-toegang in te schakelen.
  4. Genereer een API-sleutel in je werkruimte-instellingen.
  5. Verstuur je eerste testverzoek met cURL of Postman.
  6. 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.

Gratis aan de slagGeen creditcard nodig