Developer Guides
API Integratie
De Denkchat API stelt je in staat om chatbots programmatisch aan te sturen, gesprekken te beheren en data op te halen.
Base URL
https://denkchat.nl/apiAuthenticatie
Dashboard API-endpoints vereisen een Bearer token (Supabase access token) in de header:
Authorization: Bearer YOUR_ACCESS_TOKENDe embed chat API (/api/embed/chat) vereist geen authenticatie — deze is publiek toegankelijk voor widget-integraties.
Chat API
Bericht versturen
Stuur berichten naar een agent en ontvang een streaming text response.
curl -X POST https://denkchat.nl/api/embed/chat \
-H "Content-Type: application/json" \
-d '{
"agentId": "JOUW_AGENT_ID",
"messages": [
{ "role": "user", "content": "Wat zijn jullie openingstijden?" }
],
"sessionId": "optioneel-session-id",
"visitorEmail": "optioneel@email.nl"
}'Request body:
| Veld | Type | Beschrijving | Verplicht |
|---|---|---|---|
agentId | string | Je agent ID | Ja |
messages | array | Array van { role, content } objecten | Ja |
sessionId | string | Bestaand sessie-ID om gesprek voort te zetten | Nee |
visitorEmail | string | E-mailadres van de bezoeker | Nee |
Response:
De response is een plain text stream. De volledige tekst van het antwoord wordt chunk-voor-chunk gestreamd:
Onze openingstijden zijn maandag t/m vrijdag van 9:00 tot 17:00.Response headers:
| Header | Beschrijving |
|---|---|
X-Session-Id | Het sessie-ID (nieuw aangemaakt of bestaand) |
JavaScript voorbeeld
const response = await fetch('https://denkchat.nl/api/embed/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
agentId: 'JOUW_AGENT_ID',
messages: [
{ role: 'user', content: 'Hoe kan ik een bestelling retourneren?' }
],
}),
});
// Sessie-ID ophalen voor vervolgberichten
const sessionId = response.headers.get('X-Session-Id');
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
console.log(decoder.decode(value, { stream: true }));
}Python voorbeeld
import requests
response = requests.post(
'https://denkchat.nl/api/embed/chat',
json={
'agentId': 'JOUW_AGENT_ID',
'messages': [
{'role': 'user', 'content': 'Wat kosten jullie producten?'}
],
},
stream=True,
)
session_id = response.headers.get('X-Session-Id')
for chunk in response.iter_content(decode_unicode=True):
if chunk:
print(chunk, end='')Gesprek samenvatting
Genereer een AI-samenvatting van een chatsessie.
curl "https://denkchat.nl/api/chat/summary?sessionId=SESSION_ID" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response:
{
"summary": "De bezoeker vroeg naar openingstijden en retourbeleid. De agent heeft beide vragen correct beantwoord. Sentiment: positief."
}Agent configuratie ophalen
curl "https://denkchat.nl/api/embed/config?agentId=JOUW_AGENT_ID"Response:
{
"name": "Klantenservice Bot",
"welcomeMessage": "Hoi! Hoe kan ik je helpen?",
"primaryColor": "#E54D2E",
"position": "bottom-right"
}Rate limits
| Plan | Berichten/dag |
|---|---|
| Free | 50 |
| Hobby | 500 |
| Standard | 4.000 |
| Pro | 15.000 |
| Enterprise | 100.000 |
Bij overschrijding ontvang je een 429 Too Many Requests response.