Quickchat AI legt elk gesprek op alle kanalen vast. Met deze endpoints kun je gesprekken opvragen en ophalen.
Quickchat AI legt automatisch elk gesprek van je AI-agent op alle kanalen vast en analyseert het: widget, Slack, WhatsApp, Telegram en meer. De Conversations API biedt programmatische toegang tot deze rijke dataset om eigen dashboards te bouwen, gegevens aan analysepijplijnen te leveren, CRM-workflows te activeren of bestaande business intelligence-tools te koppelen.
Elk gesprek bevat AI-analyse: sentimentdetectie, onderwerpclassificatie, bijhouden van oplossingen en automatisch markeren van gesprekken die menselijke aandacht nodig kunnen hebben. Samen met de volledige berichtgeschiedenis, geregistreerde linkklikken en aangepaste metadata heb je alles om te begrijpen hoe bezoekers met je AI-agent omgaan.
Gespreksgegevens zijn verdeeld over verschillende endpoints:
- Gesprekken opvragen: basisinformatie, bezoekersgegevens en status. Gebruik dit voor dashboards, overzichten en gefilterde zoekopdrachten
- Gespreksdetails ophalen: volledige informatie, inclusief
unified_analysis(door AI gemaakte inzichten) enclient_metadata - Gespreksgebeurtenissen ophalen: volledige berichtgeschiedenis, geregistreerde linkklikken en logregels
- Metadata ophalen/instellen: aangepaste sleutel-waardegegevens die je aan gesprekken koppelt (zie Gespreksmetadata)
Gesprekken opvragen
Section titled “Gesprekken opvragen”GET https://app.quickchat.ai/v1/api_core/conversations
Queryparameters
| Parameter | Beschrijving |
|---|---|
limit integer | Items per pagina |
offset integer | Over te slaan items |
query string | Zoeken op volgnummer, UUID of berichttekst |
assignee_type string | "ai_assistant", "human_operator" of "unassigned" |
source string | "widget", "slack", "telegram", "whatsapp", enzovoort |
resolution_status string | "open" of "resolved" |
created_timestamp_start_date datetime | Filteren op aanmaakdatum (begin) |
created_timestamp_end_date datetime | Filteren op aanmaakdatum (einde) |
last_message_at_start_date datetime | Filteren op datum van het laatste bericht (begin) |
last_message_at_end_date datetime | Filteren op datum van het laatste bericht (einde) |
most_frequent_language string | Filteren op gedetecteerde taal |
order string | "desc" (standaard, nieuwste eerst) of "asc" (oudste eerst). Oplopend is bedoeld om vanaf een bekend gesprek vooruit te bladeren; combineer dit daarom met last_message_at_start_date |
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()Antwoord 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}| Veld | Beschrijving |
|---|---|
id string | UUID van het gesprek |
ord integer | Oplopend gespreksnummer |
created_at string | Tijdstip waarop het gesprek is aangemaakt |
last_message_at string | Tijdstip van het meest recente bericht |
title string | Door AI gemaakte gesprekstitel |
source string | Kanaal waarop het gesprek is begonnen (bijvoorbeeld "widget", "slack", "whatsapp") |
terminated boolean | Of het gesprek is beëindigd |
resolution_status string | "open" of "resolved" |
has_unread_messages boolean | Of er ongelezen berichten zijn |
supports_inbox_control boolean | Of de gespreksbron bediening vanuit de Inbox ondersteunt (toewijzen, overdragen) |
last_message_content string | Inhoud van het laatste bericht in het gesprek |
most_frequent_language string | Vaakst gedetecteerde taal in het gesprek |
assignee object | Huidige behandelaar (type: "ai_assistant", "human_operator" of "unassigned") |
visitor_name string of null | Naam van de bezoeker (uit het formulier vóór de chat of het kanaalprofiel) |
visitor_email string of null | E-mailadres van de bezoeker |
visitor_phone_number string of null | Telefoonnummer van de bezoeker |
visitor_label string of null | Aangepast label dat aan de bezoeker is toegewezen |
Gespreksdetails ophalen
Section titled “Gespreksdetails ophalen”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()Antwoord 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}Het antwoord met details bevat alle velden uit het lijstantwoord, plus:
| Veld | Beschrijving |
|---|---|
url string of null | URL van de pagina waarop het gesprek begon (alleen widget) |
client_metadata object of null | Aangepaste sleutel-waardeparen die aan het gesprek zijn gekoppeld |
last_visitor_message_at string | Tijdstip van het laatste bezoekersbericht |
unified_analysis object of null | Door AI gemaakte analyse van het gesprek (zie hieronder) |
Velden van unified_analysis:
| Veld | Beschrijving |
|---|---|
sentiment string | Door AI gedetecteerd gesprekssentiment (bijvoorbeeld "positive", "neutral", "negative") |
resolution_status string | Door AI beoordeelde oplossingsstatus (kan verschillen van resolution_status op het hoogste niveau) |
topic string | Door AI gedetecteerd gespreksonderwerp |
is_flagged boolean | Of de AI dit gesprek heeft gemarkeerd voor menselijke beoordeling |
flag_reason string of null | Reden waarom het gesprek is gemarkeerd |
Het veld resolution_status op het hoogste niveau ("open" of "resolved") is de officiële status, handmatig ingesteld of via automatiseringsregels.
unified_analysis.resolution_status wordt berekend door de AI-analyse en kan afwijken. De AI kan een gesprek bijvoorbeeld op basis van de inhoud als opgelost indelen terwijl de status op het hoogste niveau nog "open" is. Gebruik het veld op het hoogste niveau voor filters en workflows; gebruik unified_analysis voor analyses en inzichten.
Gespreksgebeurtenissen ophalen
Section titled “Gespreksgebeurtenissen ophalen”Haal alle gebeurtenissen (berichten, gevolgde links, logs) van een gesprek op.
Bereik: read_allGET https://app.quickchat.ai/v1/api_core/conversations/{conversation_id}/events/
Queryparameters
| Parameter | Beschrijving |
|---|---|
limit integer | Items per pagina |
offset integer | Over te slaan items |
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()Antwoord 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}Gebeurtenistypen: message, tracked_link, log
Auteurstypen: ai_assistant, visitor, human_operator
| Veld | Beschrijving |
|---|---|
type string | Gebeurtenistype: "message", "tracked_link" of "log" |
data.id string | Unieke identificatie van het bericht |
data.ord integer | Oplopend berichtnummer |
data.created_at string | Tijdstip van de gebeurtenis |
data.content string | Berichtinhoud |
data.author string | "ai_assistant", "visitor" of "human_operator" |
data.handoff_state string of null | Overdrachtsstatus indien van toepassing |
data.message_insights object of null | Door AI gemaakte inzichten over het bericht |
data.feedback object of null | Feedback van de gebruiker op het bericht |
data.client_metadata object of null | Aangepaste metadata die aan het bericht is gekoppeld |
data.sources_generated array | Kennisbank-artikelen die de AI heeft gebruikt om het antwoord te maken |
data.is_welcome boolean | Of dit een welkomstbericht is |
data.attachments array | Bestandsbijlagen |