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

VeldTypeVereistOmschrijving
chatbotIdtekenreeks (UUID)JaID van je agent
messagesarrayJaArray van berichtobjecten (1-100 items)
conversationIdtekenreeks (max 16 tekens)NeeReferentie-ID, teruggegeven via de x-conversation-id-header van een eerdere aanroep. Bij ongeldige of ontbrekende waarden wijst de server een nieuwe ID toe.
streambooleaansNeeStreaming inschakelen (standaard: false)

Berichtobject

VeldTypeWaardenOmschrijving
roletekenreeks"user", "assistant"Wie het bericht heeft verstuurd
contenttekenreeks1-32000 tekensBerichttekst

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

StatusFoutmeldingOorzaak
400Invalid JSON bodyJSON onjuist opgemaakt
400Invalid request bodyOntbrekende/ongeldige velden
401Missing or invalid Authorization headerHeader niet meegestuurd of verkeerd formaat
401Invalid API keySleutel niet herkend
403API access requires a Hobby plan or above with active billingAbonnement/facturering geeft geen toegang tot de API
403Chatbot does not belong to this accountAgent hoort bij een ander account
404Chatbot not foundOngeldige agent-ID
429Rate limit exceededTe 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