Tous les exemples utilisent des requêtes HTTP classiques. Les en-têtes et corps sont encodés en JSON UTF-8.
1. Authentification
Chaque requête doit contenir l’en-tête :API_TOKEN_DE_LA_SOCIETE correspond au champ api_token de la table company.
Si l’en-tête est manquant ou invalide, le serveur renvoie 401 Unauthorized.
2. Créer / mettre à jour un client
POST /api/v1/customers
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
companyIdentifier | string | oui | Identifiant unique du client (propre à votre système). |
metadata | object (JSON) | oui | Méta-données librement définies (nom, email, etc.). Toutes les clefs et valeurs doivent être des chaînes de caractères. |
Réponses possibles
| Code | Signification |
|---|---|
| 200 | Création ou mise à jour réussie ({ success: "…" }). |
| 400 | Paramètres manquants. |
| 401 | Token d’API invalide. |
| 500 | Erreur interne. |
Exemple de requête
3. Envoyer une question à un agent
POST /api/v1/responses
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
companyIdentifier | string | oui | Identifiant du client (même valeur que pour /customers). |
agentUUID | string | oui | UUID de l’agent (assistant) qui doit répondre. |
question | string | oui | Question de l’utilisateur final. |
stream | boolean | non (def: true) | true → réponse en flux (SSE) ; false → réponse complète en une fois. |
uuid n’est requis : le serveur génère un identifiant de message unique.
Réponses (mode stream)
- 200 OK : renvoie un flux texte
text/html; charset=utf-8dont chaque chunk est une partie de la réponse. Le flux se termine par le marqueur:EOS:. - Autres codes d’erreur : voir tableau ci-dessous.
Réponses (mode non stream)
| Code | Corps JSON |
|---|---|
| 200 | { "message": "…", "buttons": [ "Option 1", "Option 2" ] } |
| 400 | { "error": "Missing parameters" } |
| 401 | { "error": "Unauthorized: Unknown token" } |
| 404 | { "error": "Unauthorized: Assistant not found for your company" } |
| 500 | { "error": "Answer not found" } ou erreur interne. |
Exemple : réponse complète (stream = false)
Exemple : réponse en flux (stream = true)
:EOS:.
3bis. Récupérer l’historique d’une conversation
GET /api/v1/responses
Permet de récupérer l’historique complet (questions/réponses) d’une conversation entre un client et un agent, au format JSON.
Paramètres de requête (query string)
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
companyIdentifier | string | oui | Identifiant du client (même valeur que pour /customers). |
agentUUID | string | oui | UUID de l’agent (assistant) dont on veut l’historique. |
Réponse
| Code | Corps JSON |
|---|---|
| 200 | { "messages": [ { "message": "…", "buttons": ["Option 1"], "message_type": "Question", "created_at": "…" }, ... ] } |
| 400 | { "error": "Missing parameters" } |
| 401 | { "error": "Unauthorized: Unknown token" } |
| 404 | { "error": "Unauthorized: Assistant not found for your company" } ou Customer not found |
| 500 | { "error": "Internal Server Error" } |
message: texte de la question ou réponsebuttons: tableau d’options (si présent)message_type: “Question” ou “Answer”created_at: date ISO
Exemple de requête
4. Codes d’erreur communs
| Code | Motif |
|---|---|
| 400 | Paramètre manquant ou invalide |
| 401 | En-tête Authorization absent / mauvais |
| 404 | Agent introuvable pour la société |
| 500 | Erreur interne inattendue |
5. Bonnes pratiques
- Timeout côté client : pour le mode stream, coupez la connexion si aucun chunk n’est reçu depuis >20 s.
- Réessais : en cas de 500 réessayez avec back-off exponentiel.
- Sécurité : stockez l’
API_TOKENcôté serveur uniquement.