Chat-endpoint
Stuur berichten naar je agent en ontvang programmatisch AI-antwoorden.
Met het Chat-endpoint stuur je berichten naar je agent en ontvang je AI-antwoorden. Gebruik het om eigen chatinterfaces te bouwen of om de functionaliteit van je agent in je toepassingen te integreren.
Endpoint
POST /api/v1/chat
Authenticatie
Vereist authenticatie met een Bearer-token.
Authorization: Bearer YOUR_API_KEY
Aanvraaginhoud
{
"chatbotId": "uuid",
"messages": [
{ "role": "user", "content": "What are your pricing plans?" }
],
"conversationId": "optional-id",
"stream": false
}
Parameters
| Veld | Type | Vereist | Omschrijving |
|---|---|---|---|
chatbotId | tekenreeks (UUID) | Ja | ID van je agent |
messages | array | Ja | Array van berichtobjecten (1-100 items) |
conversationId | tekenreeks (max 16 tekens) | Nee | Referentie-ID, teruggegeven via de x-conversation-id-header van een eerdere aanroep. Bij ongeldige of ontbrekende waarden wijst de server een nieuwe ID toe. |
stream | booleaans | Nee | Streaming inschakelen (standaard: false) |
Berichtobject
| Veld | Type | Waarden | Omschrijving |
|---|---|---|---|
role | tekenreeks | "user", "assistant" | Wie het bericht heeft verstuurd |
content | tekenreeks | 1-32000 tekens | Berichttekst |
Limieten
- Maximaal 100 berichten per aanvraag
- Maximaal 32.000 tekens per bericht
Respons
Niet-streaming (standaard)
Succes (200):
{
"text": "Our pricing starts at $29.99/month for the Hobby plan..."
}
Headers bevatten onder meer:
X-Conversation-ID: abc123
Streaming
Zet "stream": true voor een streaming respons.
Succes (200):
Content-Type: text/plain; charset=utf-8
De respons streamt platte tekst terwijl deze wordt gegenereerd. Gebruik dit voor realtime UI-updates.
Voorbeeldaanvragen
Basisaanvraag
curl -X POST 'https://your-domain.com/api/v1/chat' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"chatbotId": "123e4567-e89b-12d3-a456-426614174000",
"messages": [
{"role": "user", "content": "What are your pricing plans?"}
]
}'
Gesprek met meerdere beurten
curl -X POST 'https://your-domain.com/api/v1/chat' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"chatbotId": "123e4567-e89b-12d3-a456-426614174000",
"conversationId": "conv_abc123",
"messages": [
{"role": "user", "content": "What are your pricing plans?"},
{"role": "assistant", "content": "We offer three plans..."},
{"role": "user", "content": "Tell me more about the Pro plan"}
]
}'
Streaming respons
curl -X POST 'https://your-domain.com/api/v1/chat' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"chatbotId": "123e4567-e89b-12d3-a456-426614174000",
"messages": [{"role": "user", "content": "Hello"}],
"stream": true
}'
Foutmeldingen
| Status | Foutmelding | Oorzaak |
|---|---|---|
| 400 | Invalid JSON body | JSON onjuist opgemaakt |
| 400 | Invalid request body | Ontbrekende/ongeldige velden |
| 401 | Missing or invalid Authorization header | Header niet meegestuurd of verkeerd formaat |
| 401 | Invalid API key | Sleutel niet herkend |
| 403 | API access requires a Hobby plan or above with active billing | Abonnement/facturering geeft geen toegang tot de API |
| 403 | Chatbot does not belong to this account | Agent hoort bij een ander account |
| 404 | Chatbot not found | Ongeldige agent-ID |
| 429 | Rate limit exceeded | Te veel verzoeken |
Foutresponsformaat
{
"message": "Invalid request body",
"details": {
"chatbotId": ["Required"]
}
}
Codevoorbeelden
Node.js
async function sendMessage(chatbotId, message) {
const response = await fetch('https://your-domain.com/api/v1/chat', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.AGENTKIT_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
chatbotId,
messages: [{ role: 'user', content: message }],
}),
});
if (!response.ok) {
throw new Error(`API error: ${response.status}`);
}
const data = await response.json();
return data.text;
}
Python
import requests
def send_message(chatbot_id: str, message: str) -> str:
response = requests.post(
'https://your-domain.com/api/v1/chat',
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json',
},
json={
'chatbotId': chatbot_id,
'messages': [{'role': 'user', 'content': message}],
},
)
response.raise_for_status()
return response.json()['text']
Node.js met streaming
async function streamMessage(chatbotId, message) {
const response = await fetch('https://your-domain.com/api/v1/chat', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.AGENTKIT_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
chatbotId,
messages: [{ role: 'user', content: message }],
stream: true,
}),
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const text = decoder.decode(value);
process.stdout.write(text); // Print as it streams
}
}
Gespreksbeheer
Een gesprek starten
Laat conversationId weg om een nieuw gesprek te starten. De responseheader X-Conversation-ID geeft de nieuwe ID terug.
Een gesprek voortzetten
Neem de conversationId en alle voorgaande berichten op om de context te behouden.
Berichtgeschiedenis
Je moet de voorgaande berichten in elke aanvraag meesturen. De API is stateless: we bewaren geen gespreksgeschiedenis op de server tussen aanvragen door.
Volgende stappen
- Webhook-abonnementen instellen voor gebeurtenismeldingen
- Alle API-endpoints bekijken
- API-sleutels beheren