Point de terminaison de chat

Envoyez des messages à votre agent et recevez des réponses d’IA par programmation.

Le point de terminaison Chat vous permet d’envoyer des messages à votre agent et de recevoir des réponses d’IA. Utilisez-le pour créer des interfaces de chat personnalisées ou intégrer les fonctionnalités de l’agent dans vos applications.

Point de terminaison

POST /api/v1/chat

Authentification

Nécessite une authentification par jeton Bearer.

Authorization: Bearer YOUR_API_KEY

Corps de la requête

{
  "chatbotId": "uuid",
  "messages": [
    { "role": "user", "content": "What are your pricing plans?" }
  ],
  "conversationId": "optional-id",
  "stream": false
}

Paramètres

ChampTypeObligatoireDescription
chatbotIdchaîne (UUID)OuiID de votre agent
messagestableauOuiTableau d’objets message (1 à 100 éléments)
conversationIdchaîne (16 caractères max)NonID de référence renvoyé par l’en-tête x-conversation-id d’un appel précédent. Une valeur invalide ou manquante amène le serveur à attribuer un nouvel ID.
streambooléenNonActive la réponse en streaming (par défaut : false)

Objet message

ChampTypeValeursDescription
rolechaîne"user", "assistant"Expéditeur du message
contentchaîne1 à 32 000 caractèresTexte du message

Limites

  • 100 messages maximum par requête
  • 32 000 caractères maximum par message

Réponse

Sans streaming (par défaut)

Succès (200) :

{
  "text": "Our pricing starts at $29.99/month for the Hobby plan..."
}

Les en-têtes incluent :

X-Conversation-ID: abc123

Streaming

Définissez "stream": true pour obtenir des réponses en streaming.

Succès (200) :

Content-Type: text/plain; charset=utf-8

La réponse diffuse du texte brut au fur et à mesure de sa génération. Utilisez ce mode pour les mises à jour d’interface en temps réel.

Exemples de requêtes

Requête simple

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?"}
    ]
  }'

Conversation multi-tours

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"}
    ]
  }'

Réponse en streaming

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
  }'

Réponses d’erreur

StatutMessageCause
400Invalid JSON bodyJSON malformé
400Invalid request bodyChamps manquants ou invalides
401Missing or invalid Authorization headerEn-tête non fourni ou au mauvais format
401Invalid API keyClé non reconnue
403API access requires a Hobby plan or above with active billingLe forfait ou la facturation ne permet pas l’accès à l’API
403Chatbot does not belong to this accountL’agent appartient à un compte différent
404Chatbot not foundID d’agent invalide
429Rate limit exceededTrop de requêtes

Format de la réponse d’erreur

{
  "message": "Invalid request body",
  "details": {
    "chatbotId": ["Required"]
  }
}

Exemples de code

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 avec 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
  }
}

Gestion des conversations

Démarrer une conversation

Omettez conversationId pour démarrer une nouvelle conversation. L’en-tête de réponse X-Conversation-ID renvoie le nouvel ID.

Poursuivre une conversation

Incluez conversationId ainsi que tous les messages précédents pour conserver le contexte.

Historique des messages

Vous devez inclure les messages précédents dans chaque requête. L’API est sans état : nous ne stockons pas l’historique des conversations côté serveur entre les requêtes.

Étapes suivantes