Quickchat AI capture chaque conversation sur tous les canaux. Ces endpoints vous permettent de les lister et de les récupérer.
Quickchat AI capture et analyse automatiquement chaque conversation que votre AI Agent mène sur tous les canaux — widget, Slack, WhatsApp, Telegram, et plus. L’API Conversations vous donne un accès programmatique à ce riche jeu de données pour construire des dashboards personnalisés, alimenter des pipelines d’analyse en aval, déclencher des workflows CRM ou vous intégrer à vos outils de business intelligence existants.
Chaque conversation comprend une analyse propulsée par l’IA : détection du sentiment, classification des sujets, suivi de la résolution et signalement automatique des conversations qui pourraient nécessiter une attention humaine. Combinées à l’historique complet des messages, aux clics sur les liens suivis et aux métadonnées personnalisées, vous disposez de tout ce qu’il faut pour comprendre comment les visiteurs interagissent avec votre AI Agent.
Les données de conversation sont réparties sur plusieurs endpoints :
- List Conversations — Informations de base, détails du visiteur, statut. À utiliser pour les dashboards, les vues d’ensemble et les requêtes filtrées
- Get Conversation Details — Informations complètes, y compris
unified_analysis(insights générés par l’IA) etclient_metadata - Get Conversation Events — Historique complet des messages, clics sur les liens suivis et entrées de journal
- Get/Set Metadata — Données clé-valeur personnalisées que vous attachez aux conversations (voir Conversation Metadata)
List Conversations
Section intitulée « List Conversations »GET https://app.quickchat.ai/v1/api_core/conversations
Query Parameters
| Parameter | Description |
|---|---|
limit integer | Éléments par page |
offset integer | Éléments à ignorer |
query string | Recherche par numéro de commande, UUID ou texte de message |
assignee_type string | "ai_assistant", "human_operator", ou "unassigned" |
source string | "widget", "slack", "telegram", "whatsapp", etc. |
resolution_status string | "open" ou "resolved" |
created_timestamp_start_date datetime | Filtre par date de création (début) |
created_timestamp_end_date datetime | Filtre par date de création (fin) |
last_message_at_start_date datetime | Filtre par date du dernier message (début) |
last_message_at_end_date datetime | Filtre par date du dernier message (fin) |
most_frequent_language string | Filtre par langue détectée |
curl 'https://app.quickchat.ai/v1/api_core/conversations?limit=10&resolution_status=open' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api_core/conversations", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"limit": 10, "resolution_status": "open"},)data = response.json()Response 200 OK
{ "items": [ { "id": "conv-uuid-1234", "ord": 42, "created_at": "2026-01-15T10:30:00Z", "last_message_at": "2026-01-15T10:35:00Z", "title": "Return policy question", "source": "widget", "terminated": false, "resolution_status": "open", "has_unread_messages": true, "supports_inbox_control": true, "last_message_content": "What is your return policy?", "most_frequent_language": "en", "assignee": { "type": "ai_assistant" }, "visitor_name": "John", "visitor_email": "john@example.com", "visitor_phone_number": null, "visitor_label": null } ], "offset": 0, "limit": 10, "count": 42}| Field | Description |
|---|---|
id string | UUID de la conversation |
ord integer | Numéro séquentiel de la conversation |
created_at string | Horodatage de création de la conversation |
last_message_at string | Horodatage du message le plus récent |
title string | Titre de la conversation généré par l’IA |
source string | Canal d’où provient la conversation (p. ex. "widget", "slack", "whatsapp") |
terminated boolean | Si la conversation est terminée |
resolution_status string | "open" ou "resolved" |
has_unread_messages boolean | S’il y a des messages non lus |
supports_inbox_control boolean | Si la source de la conversation prend en charge le contrôle depuis l’inbox (assignation, handoff) |
last_message_content string | Contenu du dernier message de la conversation |
most_frequent_language string | Langue la plus fréquemment détectée dans la conversation |
assignee object | Assigné actuel (type : "ai_assistant", "human_operator", ou "unassigned") |
visitor_name string or null | Nom du visiteur (depuis le formulaire de pré-chat ou le profil du canal) |
visitor_email string or null | Adresse e-mail du visiteur |
visitor_phone_number string or null | Numéro de téléphone du visiteur |
visitor_label string or null | Libellé personnalisé assigné au visiteur |
Get Conversation Details
Section intitulée « Get Conversation Details »GET https://app.quickchat.ai/v1/api_core/conversations/{conversation_id}/
curl https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/ \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Response 200 OK
{ "id": "conv-uuid-1234", "ord": 42, "created_at": "2026-01-15T10:30:00Z", "last_message_at": "2026-01-15T10:35:00Z", "title": "Return policy question", "source": "widget", "terminated": false, "resolution_status": "open", "has_unread_messages": true, "supports_inbox_control": true, "last_message_content": "What is your return policy?", "most_frequent_language": "en", "assignee": { "type": "ai_assistant" }, "url": null, "client_metadata": {"userId": 12}, "last_visitor_message_at": "2026-01-15T10:34:00Z", "unified_analysis": { "sentiment": "neutral", "resolution_status": "open", "topic": "Return policy", "is_flagged": false, "flag_reason": null }, "visitor_name": "John", "visitor_email": "john@example.com", "visitor_phone_number": null, "visitor_label": null}La réponse détaillée inclut tous les champs de la réponse de liste, plus :
| Field | Description |
|---|---|
url string or null | URL de la page où la conversation a démarré (widget uniquement) |
client_metadata object or null | Paires clé-valeur personnalisées attachées à la conversation |
last_visitor_message_at string | Horodatage du dernier message du visiteur |
unified_analysis object or null | Analyse de la conversation générée par l’IA (voir ci-dessous) |
Champs de unified_analysis :
| Field | Description |
|---|---|
sentiment string | Sentiment de la conversation détecté par l’IA (p. ex. "positive", "neutral", "negative") |
resolution_status string | Statut de résolution évalué par l’IA (peut différer du resolution_status de premier niveau) |
topic string | Sujet de la conversation détecté par l’IA |
is_flagged boolean | Si l’IA a signalé cette conversation pour révision humaine |
flag_reason string or null | Raison du signalement de la conversation |
Get Conversation Events
Section intitulée « Get Conversation Events »Récupérez tous les événements (messages, liens suivis, journaux) d’une conversation.
Scope: read_allGET https://app.quickchat.ai/v1/api_core/conversations/{conversation_id}/events/
Query Parameters
| Parameter | Description |
|---|---|
limit integer | Éléments par page |
offset integer | Éléments à ignorer |
curl 'https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/events/?limit=20' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/events/", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"limit": 20},)data = response.json()Response 200 OK
{ "items": [ { "type": "message", "data": { "id": "msg-uuid-001", "ord": 1, "created_at": "2026-01-15T10:30:00Z", "content": "Hello! How can I help you today?", "author": "ai_assistant", "handoff_state": null, "message_insights": null, "feedback": null, "client_metadata": null, "sources_generated": [], "is_welcome": true, "attachments": [] } }, { "type": "message", "data": { "id": "msg-uuid-002", "ord": 2, "created_at": "2026-01-15T10:31:00Z", "content": "What is your return policy?", "author": "visitor", "handoff_state": null, "message_insights": null, "feedback": null, "client_metadata": null, "sources_generated": [], "is_welcome": false, "attachments": [] } } ], "offset": 0, "limit": 20, "count": 2}Types d’événements : message, tracked_link, log
Types d’auteur : ai_assistant, visitor, human_operator
| Field | Description |
|---|---|
type string | Type d’événement : "message", "tracked_link", ou "log" |
data.id string | Identifiant unique du message |
data.ord integer | Numéro séquentiel du message |
data.created_at string | Horodatage de l’événement |
data.content string | Contenu du message |
data.author string | "ai_assistant", "visitor", ou "human_operator" |
data.handoff_state string or null | État du handoff le cas échéant |
data.message_insights object or null | Insights du message générés par l’IA |
data.feedback object or null | Retour de l’utilisateur sur le message |
data.client_metadata object or null | Métadonnées personnalisées attachées au message |
data.sources_generated array | Articles de la Knowledge Base utilisés par l’IA pour générer sa réponse |
data.is_welcome boolean | S’il s’agit d’un message de bienvenue |
data.attachments array | Fichiers joints |