Nous construisons encore des choses ici ! Vous pourriez remarquer quelques bords rugueux pendant que nous travaillons sur des améliorations. Aidez-nous à améliorer en signalant des bugs ici.

Référence API

Référence API complète pour l'intégration avec la plateforme Assistant. Inclut l'authentification, les points de terminaison, les schémas de requête/réponse, et des exemples de code pratiques.

Authentification

L'API prend en charge deux méthodes d'authentification :

  • Authentification par clé API : Utilisez les en-têtes X-API-Key et X-API-Secret pour l'accès direct à l'API
  • Authentification par token JWT : Utilisez les tokens Bearer obtenus depuis le point de terminaison du token widget pour les requêtes basées sur navigateur

Point de terminaison du token Widget

Générez des tokens JWT de courte durée pour l'authentification des widgets. Ce point de terminaison permet aux widgets d'obtenir des tokens sécurisés en utilisant uniquement le client_id, évitant ainsi le besoin d'exposer le client_secret dans les environnements de navigateur.

JSONrequest.json
{"client_id": "YOUR_CLIENT_ID"}

Réponse :

JSONresponse.json
{  "token": "eyJ...",  "expires_in": 3600,  "token_type": "Bearer"}

Limitation du taux

Les requêtes API sont limitées à 1000 par heure par organisation. Les informations de limitation du taux sont incluses dans les en-têtes de réponse.

Gestion des erreurs

Toutes les erreurs API retournent des réponses JSON structurées avec des codes de statut, des détails d'erreur, et des champs de données optionnels.

JSONerror.json
{  "status": "error",  "status_code": 401,  "detail": "Authentication required - ...",  "data": null}

Points de terminaison API

Assistants

Gérer les personas d'assistant IA avec des configurations personnalisées.

Lister les assistants

GNU Bashlist-assistants.sh
curl -X GET https://app.companin.tech/api/v1/assistants/ \  -H "X-API-Key: YOUR_CLIENT_ID" \  -H "X-API-Secret: YOUR_CLIENT_SECRET"

Créer un assistant

GNU Bashcreate-assistant.sh
curl -X POST https://app.companin.tech/api/v1/assistants/ \  -H "X-API-Key: YOUR_CLIENT_ID" \  -H "X-API-Secret: YOUR_CLIENT_SECRET" \  -H "Content-Type: application/json" \  -d '{    "name": "Customer Support Bot",    "description": "Helpful assistant for customer inquiries",    "tone": "professional",    "language": "en",    "default_tasks": ["answer_questions", "provide_support"],    "is_active": true  }'

Sessions

Créer des sessions de visiteur anonymes pour des interactions temporaires.

Créer une session

GNU Bashcreate-session.sh
curl -X POST https://app.companin.tech/api/v1/sessions/ \  -H "X-API-Key: YOUR_CLIENT_ID" \  -H "X-API-Secret: YOUR_CLIENT_SECRET" \  -H "Content-Type: application/json" \  -d '{    "assistant_id": "550e8400-e29b-41d4-a716-446655440000",    "visitor_id": "visitor-123",    "locale": "en",    "metadata": {      "source": "website",      "page": "/contact"    }  }'

Envoyer un message dans la session

GNU Bashsend-message.sh
curl -X POST https://app.companin.tech/api/v1/sessions/${SESSION_ID}/messages \  -H "X-API-Key: YOUR_CLIENT_ID" \  -H "X-API-Secret: YOUR_CLIENT_SECRET" \  -H "Content-Type: application/json" \  -d '{    "content": "Hello, I need help with my order",    "metadata": {      "user_type": "customer"    }  }'

Conversations

Créer des conversations persistantes pour les utilisateurs authentifiés.

Créer une conversation

GNU Bashcreate-conversation.sh
curl -X POST https://app.companin.tech/api/v1/conversations/ \  -H "X-API-Key: YOUR_CLIENT_ID" \  -H "X-API-Secret: YOUR_CLIENT_SECRET" \  -H "Content-Type: application/json" \  -d '{    "assistant_id": "550e8400-e29b-41d4-a716-446655440000",    "customer_id": "user-456",    "title": "Order Support",    "locale": "en"  }'

Envoyer un message dans la conversation

GNU Bashsend-conversation-message.sh
curl -X POST https://app.companin.tech/api/v1/conversations/${CONVERSATION_ID}/messages \  -H "X-API-Key: YOUR_CLIENT_ID" \  -H "X-API-Secret: YOUR_CLIENT_SECRET" \  -H "Content-Type: application/json" \  -d '{    "content": "Can you help me track my order?",    "metadata": {      "order_id": "12345"    }  }'

Contextes utilisateur

Stocker et gérer le contexte utilisateur pour des interactions personnalisées.

Créer un contexte utilisateur

GNU Bashcreate-context.sh
curl -X POST https://app.companin.tech/api/v1/contexts/ \  -H "X-API-Key: YOUR_CLIENT_ID" \  -H "X-API-Secret: YOUR_CLIENT_SECRET" \  -H "Content-Type: application/json" \  -d '{    "user_reference": "user-456",    "traits": {      "name": "John Doe",      "email": "john@example.com",      "subscription_tier": "premium",      "preferences": {        "language": "en",        "notifications": true      }    }  }'

Base de connaissances

Télécharger et gérer les sources de connaissances pour vos assistants.

Télécharger un fichier de connaissances

GNU Bashupload-file.sh
curl -X POST https://app.companin.tech/api/v1/knowledge/files/ \  -H "X-API-Key: YOUR_CLIENT_ID" \  -H "X-API-Secret: YOUR_CLIENT_SECRET" \  -F "title=Product Manual" \  -F "file_type=pdf" \  -F "file=@product_manual.pdf"

Ajouter une paire Q&R

GNU Bashadd-qa.sh
curl -X POST https://app.companin.tech/api/v1/knowledge/qa/ \  -H "X-API-Key: YOUR_CLIENT_ID" \  -H "X-API-Secret: YOUR_CLIENT_SECRET" \  -H "Content-Type: application/json" \  -d '{    "question": "What are your business hours?",    "answer": "We are open Monday to Friday, 9 AM to 6 PM EST.",    "tags": ["hours", "support"]  }'

Cas d'usage

Chatbot de Support Client

JavaScriptsupport-chatbot.js
// 1. Obtenir le token widget pour le chat basé sur navigateurasync function getWidgetToken() {  const response = await fetch('https://app.companin.tech/api/v1/auth/widget-token', {    method: 'POST',    headers: { 'Content-Type': 'application/json' },    body: JSON.stringify({ client_id: 'YOUR_CLIENT_ID' })  });  return (await response.json()).token;}// 2. Créer une session pour visiteur anonymeasync function startSupportSession(token, assistantId) {  const response = await fetch('https://app.companin.tech/api/v1/sessions/', {    method: 'POST',    headers: {      'Authorization': `Bearer ${token}`,      'Content-Type': 'application/json'    },    body: JSON.stringify({      assistant_id: assistantId,      visitor_id: 'visitor-' + Date.now(),      metadata: { source: 'support_widget' }    })  });  return await response.json();}// 3. Envoyer le message client et obtenir la réponse IAasync function sendMessage(token, sessionId, message) {  const response = await fetch(`https://app.companin.tech/api/v1/sessions/${sessionId}/messages`, {    method: 'POST',    headers: {      'Authorization': `Bearer ${token}`,      'Content-Type': 'application/json'    },    body: JSON.stringify({      content: message,      metadata: { user_type: 'customer' }    })  });  return await response.json();}// Exemple d'utilisationconst token = await getWidgetToken();const session = await startSupportSession(token, 'assistant-uuid');const result = await sendMessage(token, session.data.id, 'J'ai besoin d'aide avec ma commande');

Assistant Produit E-commerce

JavaScriptecommerce-assistant.js
// 1. Créer le contexte utilisateur pour la personnalisationasync function createUserContext(userId, userData) {  const response = await fetch('https://app.companin.tech/api/v1/contexts/', {    method: 'POST',    headers: {      'X-API-Key': 'YOUR_CLIENT_ID',      'X-API-Secret': 'YOUR_CLIENT_SECRET',      'Content-Type': 'application/json'    },    body: JSON.stringify({      user_reference: userId,      traits: {        name: userData.name,        purchase_history: userData.purchases,        preferences: userData.preferences      }    })  });  return await response.json();}// 2. Créer une conversation persistante avec contexteasync function startPersonalizedChat(assistantId, userId) {  const response = await fetch('https://app.companin.tech/api/v1/conversations/', {    method: 'POST',    headers: {      'X-API-Key': 'YOUR_CLIENT_ID',      'X-API-Secret': 'YOUR_CLIENT_SECRET',      'Content-Type': 'application/json'    },    body: JSON.stringify({      assistant_id: assistantId,      customer_id: userId,      user_context_id: userId,      title: 'Product Recommendations',      metadata: { source: 'product_page' }    })  });  return await response.json();}// 3. Chatter avec la connaissance produitasync function askAboutProduct(conversationId, question) {  const response = await fetch(`https://app.companin.tech/api/v1/conversations/${conversationId}/messages`, {    method: 'POST',    headers: {      'X-API-Key': 'YOUR_CLIENT_ID',      'X-API-Secret': 'YOUR_CLIENT_SECRET',      'Content-Type': 'application/json'    },    body: JSON.stringify({      content: question,      metadata: { context: 'product_inquiry' }    })  });  return await response.json();}// Exemple d'utilisationawait createUserContext('user-123', {  name: 'Alice',  purchases: ['laptop-1', 'mouse-2'],  preferences: { category: 'electronics' }});const conversation = await startPersonalizedChat('assistant-uuid', 'user-123');const result = await askAboutProduct(conversation.data.id, 'Quel ordinateur portable recommandez-vous ?');

Système de Gestion des Connaissances

JavaScriptknowledge-management.js
// 1. Télécharger la documentation produitasync function uploadDocumentation(file, title) {  const formData = new FormData();  formData.append('title', title);  formData.append('file_type', 'pdf');  formData.append('file', file);  const response = await fetch('https://app.companin.tech/api/v1/knowledge/files/', {    method: 'POST',    headers: {      'X-API-Key': 'YOUR_CLIENT_ID',      'X-API-Secret': 'YOUR_CLIENT_SECRET'    },    body: formData  });  return await response.json();}// 2. Ajouter des entrées FAQasync function addFAQ(question, answer, tags) {  const response = await fetch('https://app.companin.tech/api/v1/knowledge/qa/', {    method: 'POST',    headers: {      'X-API-Key': 'YOUR_CLIENT_ID',      'X-API-Secret': 'YOUR_CLIENT_SECRET',      'Content-Type': 'application/json'    },    body: JSON.stringify({      question,      answer,      tags,      source: 'manual'    })  });  return await response.json();}// 3. Ajouter du contenu webasync function addWebContent(url, title) {  const response = await fetch('https://app.companin.tech/api/v1/knowledge/urls/', {    method: 'POST',    headers: {      'X-API-Key': 'YOUR_CLIENT_ID',      'X-API-Secret': 'YOUR_CLIENT_SECRET',      'Content-Type': 'application/json'    },    body: JSON.stringify({      url,      title    })  });  return await response.json();}// Exemple d'utilisationconst fileUpload = await uploadDocumentation(pdfFile, 'User Manual v2.0');const faq = await addFAQ(  'Comment réinitialiser mon mot de passe ?',  'Allez dans les paramètres et cliquez sur "Réinitialiser le mot de passe"...',  ['password', 'security']);const webContent = await addWebContent(  'https://example.tech/blog/new-features',  'Annonce des nouvelles fonctionnalités');

Exemples

Obtenir le token Widget

GNU Bashrequest.sh
curl -X POST https://app.companin.tech/api/v1/auth/widget-token \  -H "Content-Type: application/json" \  -d '{"client_id":"YOUR_CLIENT_ID"}'

Créer une session

JavaScriptcreateSession.js
fetch('https://app.companin.tech/api/v1/sessions', {  method: 'POST',  headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },  body: JSON.stringify({ assistant_id: 'ASSISTANT_UUID' })})

Support CORS

  • Tous les points de terminaison prennent en charge CORS pour les intégrations web
  • Les requêtes preflight sont gérées automatiquement
  • Les credentials sont pris en charge pour les requêtes authentifiées