Soumettre un message client
POST/api/message
Enregistre un message entrant et déclenche la génération de la réponse.
Répond immédiatement 202 avec l’état processing : la réponse de
l’IA arrive de façon asynchrone (polling ou webhook).
Les en-têtes X-Assilya-* permettent de fixer vos propres
identifiants (conversation, message, utilisateur) : Assilya vous les
renvoie tels quels et ils servent de clés dans les URLs. À défaut, des
UUID v7 sont générés et retournés dans la réponse.
title et files ne sont acceptés que si les options correspondantes
(« Permettre un titre par message », « Autoriser les pièces jointes »)
sont activées sur l’agent — sinon la requête est rejetée en 422.
Authorizations
Section intitulée « Authorizations »Parameters
Section intitulée « Parameters »Header Parameters
Section intitulée « Header Parameters »Votre identifiant de conversation (191 caractères max). Les messages partageant cette valeur rejoignent la même conversation ; sans lui, chaque message ouvre une nouvelle conversation.
Votre identifiant de message (191 caractères max, unique par agent). Renvoyé dans id ; un doublon est rejeté.
Identifiant du contact côté agent. Renvoyez la valeur contact.id d’une réponse précédente pour rattacher le message au même contact sans repasser par la résolution e-mail/téléphone.
E-mail du contact, utilisé pour le retrouver ou le créer.
Nom du contact, appliqué à la création. Une valeur non ASCII (« Mara Götz ») doit être encodée en mot encodé RFC 2047, =?UTF-8?B?<base64 de la valeur UTF-8>?= — un en-tête HTTP transporte des octets, pas du texte. L’UTF-8 brut est également accepté.
Request Bodyrequired
Section intitulée « Request Bodyrequired »object
Le message du client.
Sujet du message. Uniquement si « Permettre un titre par message » est activé sur l’agent (sinon 422).
Pièces jointes (multipart uniquement). Uniquement si « Autoriser les pièces jointes » est activé sur l’agent (sinon 422). 10 fichiers max, 10 Mo chacun. Types acceptés : PDF, PNG, JPEG, WebP, GIF, CSV, TXT, XLSX, DOCX.
Variante JSON — sans pièces jointes (réservées au multipart).
object
Le message du client.
Sujet du message (si l’option est activée sur l’agent).
Responses
Section intitulée « Responses »Message accepté — traitement en cours (state = processing).
Enveloppe commune aux endpoints Messages et au webhook. Les champs
présents dépendent de state :
state | Champs supplémentaires |
|---|---|
processing | contact |
pending | answer (toujours null), confidence, required_action, suggestions, contact |
answered | answer, confidence, suggestions (vide), contact, sent_at, attachments* |
failed | error, contact |
closed | — (enveloppe nue : clôturée sans réponse) |
* attachments uniquement si les pièces jointes sont activées sur l’agent.
object
Identifiant du message entrant (le vôtre, ou un UUID v7 généré).
object
Identifiant de la conversation.
Titre généré par l’IA (peut arriver après coup).
La réponse, dans le format de sortie configuré sur l’agent (texte brut, Markdown ou HTML). null à l’état pending.
Pourcentage de confiance de l’IA.
État pending uniquement. Action opérationnelle que l’IA ne peut pas exécuter elle-même (réexpédition, remboursement, annulation…) : votre équipe la réalise avant de publier la réponse via POST …/answer — la publication marque comme traitées toutes les actions en attente de la conversation. Tant qu’une action reste en attente, l’IA ne publie plus aucune réponse automatique sur la conversation : un message ultérieur non signalé porte alors la dernière action encore en attente. null quand la mise en attente ne tient qu’à la confiance et qu’aucune action n’est en attente ; la confiance peut alors dépasser le seuil de l’agent.
object
Description de l’action à réaliser, dans la langue de travail de l’entreprise.
Suggestions à faire valider (état pending uniquement, sinon vide).
object
object
Taille en octets.
URL présignée de téléchargement, valable 15 minutes.
Cause de l’échec (état failed uniquement).
Example
{ "id": "0196c3f2-1111-7000-8000-000000000001", "thread": { "id": "demo-thread-001", "title": null }, "state": "processing", "contact": { "id": "0196c3f2-2222-7000-8000-000000000002", "name": "Jeanne Martin", "email": "jeanne@example.com", "phone": null }}Clé API absente ou en-tête Authorization mal formé.
object
Message d’erreur lisible, dans la langue de l’agent.
Clé invalide ou révoquée, agent inactif ou d’un autre type, ou clé utilisée sur l’URL d’un autre espace.
object
Message d’erreur lisible, dans la langue de l’agent.
Corps de requête invalide (erreurs de validation Laravel).
object
object
Limites de débit dépassées. Plafonds appliqués simultanément : 30/min par conversation, 200/min par agent, 120/min par IP et 1 000/min par espace (valeur par défaut).
object
Message d’erreur lisible, dans la langue de l’agent.
