API
Dernière mise à jour :
Quickchat AI fournit une API REST pour acceder de maniere programmatique a la Base de connaissances, aux Conversations, aux Actions IA et bien plus de votre Assistant IA.
Authentification
Section intitulée « Authentification »Tous les endpoints de l’API utilisent l’authentification par jeton Bearer. Incluez votre jeton API dans l’en-tete Authorization de chaque requete :
Authorization: Bearer <API_TOKEN>Les jetons sont crees dans le Tableau de bord Quickchat sous Integrations > API. Chaque jeton est un JWT qui contient votre scenario_id, aucun identifiant supplementaire n’est donc necessaire.
- Validite du jeton : 52 semaines a compter de la creation
- Les jetons peuvent etre revoques a tout moment depuis le Tableau de bord
- Chaque jeton est lie a un seul Assistant IA (scenario)
URL de base
Section intitulée « URL de base »| Endpoint Group | Base URL |
|---|---|
| Base de connaissances, Actions IA, Upload de fichiers, Import | https://app.quickchat.ai/v1/api/ |
| Conversations | https://app.quickchat.ai/v1/api_core/ |
| Chat (herite) | https://chat.quickchat.ai/ |
Limites de debit
Section intitulée « Limites de debit »Les limites de debit sont appliquees par jeton et par endpoint.
| Tier | Limit | Applies To |
|---|---|---|
| READ | 120 requetes/min | Operations GET et listes |
| WRITE | 60 requetes/min | POST, PATCH, PUT, DELETE |
| HEAVY | 20 requetes/min | Uploads de fichiers, imports, scraping |
Lorsqu’une limite de debit est depassee, l’API retourne HTTP 429 Too Many Requests.
Pagination
Section intitulée « Pagination »Les endpoints de liste prennent en charge la pagination via des parametres de requete :
| Parameter | Type | Description |
|---|---|---|
limit | integer | Nombre d’elements par page |
offset | integer | Nombre d’elements a ignorer |
Les reponses paginatees suivent cette structure :
{ "items": [], "offset": 0, "count": 100}Gestion des erreurs
Section intitulée « Gestion des erreurs »Toutes les erreurs sont retournees en JSON au format suivant :
{ "errors": { "root": [ { "message": "Description of the error", "code": "ERROR_CODE" } ] }}| Status | Code | Description |
|---|---|---|
| 400 | BAD_REQUEST | Saisie invalide ou champs requis manquants |
| 401 | PERMISSION_DENIED | Jeton invalide, expire ou revoque |
| 402 | PAYMENT_REQUIRED | Un abonnement actif est requis |
| 404 | NOT_FOUND | Ressource introuvable |
| 409 | CONFLICT | Operation en conflit (p. ex. modification concurrente) |
| 422 | VALIDATION_ERROR | Le corps de la requete n’a pas passe la validation du schema |
| 429 | TOO_MANY_REQUESTS | Limite de debit depassee |
| 500 | UNKNOWN | Erreur interne du serveur |
| 503 | SERVICE_UNAVAILABLE | Indisponibilite temporaire |
Chat (authentification heritee)
Section intitulée « Chat (authentification heritee) »L’endpoint Chat utilise une authentification heritee avec api_key et scenario_id dans le corps de la requete. Il n’utilise pas de jetons Bearer.
Envoyer un message
Section intitulée « Envoyer un message »POST https://chat.quickchat.ai/chat
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key | string | Yes | Votre cle API depuis le Tableau de bord |
scenario_id | string | Yes | ID de votre Assistant IA |
text | string | Yes | Message de l’utilisateur |
conv_id | string | No | ID de conversation. Omettez pour demarrer une nouvelle conversation |
message_context | string | No | Contexte supplementaire par message transmis a l’IA |
client_metadata | object | No | Paires cle-valeur personnalisees (max 5 cles) attachees aux messages |
curl -X POST https://chat.quickchat.ai/chat \ -H 'Content-Type: application/json' \ -d '{ "api_key": "<API_KEY>", "scenario_id": "<SCENARIO_ID>", "text": "Hello!", "conv_id": "abcd1234"}'import requests
response = requests.post( url="https://chat.quickchat.ai/chat", json={ "api_key": "<API_KEY>", "scenario_id": "<SCENARIO_ID>", "text": "Hello!", "conv_id": "abcd1234", },)data = response.json()Reponse 200 OK
{ "ord_number": 236, "conv_id": "abcd1234", "reply": "Hey there!"}| Field | Type | Description |
|---|---|---|
ord_number | integer | Numero sequentiel du message dans la conversation |
conv_id | string | Identifiant de conversation (utilisez-le pour poursuivre la conversation) |
reply | string | Reponse de l’Assistant IA |
Base de connaissances
Section intitulée « Base de connaissances »Obtenir les parametres
Section intitulée « Obtenir les parametres »Recuperer la configuration de votre Base de connaissances.
GET https://app.quickchat.ai/v1/api/knowledge_base/
curl https://app.quickchat.ai/v1/api/knowledge_base/ \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Reponse 200 OK
{ "one_word_description": "Support Agent", "short_description": "A helpful customer support assistant.", "ai_commands": ["Be polite", "Stay on topic"], "retrain_state": null}| Field | Type | Description |
|---|---|---|
one_word_description | string | Libelle court de la Base de connaissances |
short_description | string | Description de l’objectif de l’Assistant IA |
ai_commands | array of strings | Instructions personnalisees pour l’IA |
retrain_state | string or null | Etat actuel de l’entrainement |
Modifier les parametres
Section intitulée « Modifier les parametres »PATCH https://app.quickchat.ai/v1/api/knowledge_base/
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
one_word_description | string | No | Libelle court de la Base de connaissances |
short_description | string | No | Description de l’objectif de l’Assistant IA |
ai_commands | array of strings | No | Instructions personnalisees pour l’IA |
curl -X PATCH https://app.quickchat.ai/v1/api/knowledge_base/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "one_word_description": "Sales Bot"}'import requests
response = requests.patch( url="https://app.quickchat.ai/v1/api/knowledge_base/", headers={"Authorization": "Bearer <API_TOKEN>"}, json={"one_word_description": "Sales Bot"},)data = response.json()Reponse 200 OK — Retourne les parametres mis a jour de la Base de connaissances (meme schema que Obtenir les parametres).
Articles
Section intitulée « Articles »Creer un article
Section intitulée « Creer un article »POST https://app.quickchat.ai/v1/api/knowledge_base/articles/
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | Yes | Contenu de l’article |
type | string | No | "Article" (par defaut) ou "Paragraph" |
title | string | No | Titre de l’article |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/articles/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "content": "Our return policy allows returns within 30 days.", "title": "Return Policy"}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "content": "Our return policy allows returns within 30 days.", "title": "Return Policy", },)data = response.json()Reponse 201 Created
{ "id": 1234, "article_id": "abc-123", "type": "Article", "title": "Return Policy", "description": "", "content": "Our return policy allows returns within 30 days.", "state": "draft", "url": null, "parent_id": null, "parent_type": null, "shortened": false, "tags": [], "created_timestamp": "2026-01-15", "last_modified_timestamp": "2026-01-15"}Lister les articles
Section intitulée « Lister les articles »GET https://app.quickchat.ai/v1/api/knowledge_base/articles/
Parametres de requete
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Elements par page |
offset | integer | No | Elements a ignorer |
types | string | No | Filtrer par type : Article, Paragraph |
tags | string | No | Filtrer par tag |
url | string | No | Filtrer par URL |
title | string | No | Filtrer par titre |
query | string | No | Rechercher par contenu |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/?limit=10&offset=0' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"limit": 10, "offset": 0},)data = response.json()Reponse 200 OK
{ "items": [ { "id": 1234, "article_id": "abc-123", "type": "Article", "title": "Return Policy", "description": "", "state": "published", "url": null, "parent_id": null, "parent_type": null, "shortened": false, "tags": ["policies"], "created_timestamp": "2026-01-15", "last_modified_timestamp": "2026-01-15" } ], "offset": 0, "count": 1}Obtenir un article
Section intitulée « Obtenir un article »GET https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}
curl https://app.quickchat.ai/v1/api/knowledge_base/articles/1234 \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Reponse 200 OK — Retourne l’objet article complet (meme schema que la reponse de Creer un article).
Modifier un article
Section intitulée « Modifier un article »PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | No | Contenu mis a jour de l’article |
title | string | No | Titre mis a jour |
tags | array of strings | No | Tags mis a jour |
save_mode | string | No | "draft" (par defaut) ou "publish" |
curl -X PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/1234 \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "title": "Updated Return Policy", "content": "Returns accepted within 60 days.", "save_mode": "publish"}'import requests
response = requests.patch( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "title": "Updated Return Policy", "content": "Returns accepted within 60 days.", "save_mode": "publish", },)data = response.json()Reponse 200 OK — Retourne l’objet article mis a jour.
Supprimer des articles
Section intitulée « Supprimer des articles »Supprimer un ou plusieurs articles par ID.
DELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/
Corps de la requete — Tableau JSON d’identifiants d’articles.
curl -X DELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '[1234, 5678]'import requests
response = requests.delete( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, json=[1234, 5678],)Reponse 200 OK
Rechercher des articles
Section intitulée « Rechercher des articles »Rechercher dans le contenu des articles par correspondance de texte.
GET https://app.quickchat.ai/v1/api/knowledge_base/articles/search
Parametres de requete
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Requete de recherche |
is_case_insensitive | boolean | No | Recherche insensible a la casse (par defaut : true) |
with_title_url_and_tags | boolean | No | Inclure titre/URL/tags dans la recherche (par defaut : true) |
strict_search | boolean | No | Exiger une correspondance exacte (par defaut : false) |
num_of_display_articles | integer | No | Nombre d’articles a afficher (par defaut : 5) |
num_of_data_articles | integer | No | Nombre d’articles a rechercher (par defaut : 15) |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/search?query=return%20policy' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/search", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"query": "return policy"},)data = response.json()Reponse 200 OK
{ "article_snippets": [ { "article_id": 1234, "expository_sentence": "Our return policy allows returns within 30 days.", "query_words_ids": [ {"start_char": 4, "end_char": 10, "text": "return"} ] } ], "article_snapshots": { "items": [], "offset": 0, "count": 1 }}Lister les paragraphes
Section intitulée « Lister les paragraphes »Lister tous les paragraphes (contenu decoupe) de la Base de connaissances.
GET https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs
Parametres de requete
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Elements par page |
offset | integer | No | Elements a ignorer |
query | string | No | Filtrer par contenu |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs?limit=10' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"limit": 10},)data = response.json()Reponse 200 OK
{ "items": [ { "id": 1, "content": "Our return policy allows returns within 30 days." } ], "offset": 0, "count": 1}URLs linguistiques des articles
Section intitulée « URLs linguistiques des articles »Gerer les URLs specifiques a une langue pour les articles. Ces URLs permettent de relier les articles a des versions localisees du contenu.
Obtenir l’URL linguistique
Section intitulée « Obtenir l’URL linguistique »GET https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}/lang_urls/{language}
curl https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Reponse 200 OK
{ "url": "https://example.com/en/return-policy"}Creer une URL linguistique
Section intitulée « Creer une URL linguistique »POST https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}/lang_urls/{language}
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL de la version dans la langue concernee |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{"url": "https://example.com/en/return-policy"}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en", headers={"Authorization": "Bearer <API_TOKEN>"}, json={"url": "https://example.com/en/return-policy"},)data = response.json()Reponse 200 OK
{ "url": "https://example.com/en/return-policy"}Modifier l’URL linguistique
Section intitulée « Modifier l’URL linguistique »PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}/lang_urls/{language}
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL mise a jour |
Reponse 200 OK — Retourne l’objet URL mis a jour.
Supprimer l’URL linguistique
Section intitulée « Supprimer l’URL linguistique »DELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}/lang_urls/{language}
curl -X DELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.delete( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en", headers={"Authorization": "Bearer <API_TOKEN>"},)Reponse 200 OK
Lister les tags
Section intitulée « Lister les tags »Recuperer tous les tags utilises dans les articles de la Base de connaissances.
GET https://app.quickchat.ai/v1/api/knowledge_base/tags/
curl https://app.quickchat.ai/v1/api/knowledge_base/tags/ \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/tags/", headers={"Authorization": "Bearer <API_TOKEN>"},)tags = response.json()Reponse 200 OK
["policies", "faq", "product-info"]Upload de fichiers
Section intitulée « Upload de fichiers »Uploader des fichiers pour qu’ils soient traites et ajoutes a la Base de connaissances sous forme d’articles.
Uploader un PDF
Section intitulée « Uploader un PDF »POST https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/pdf
Uploader un fichier PDF. Le contenu est extrait et ajoute en tant qu’article.
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/pdf \ -H 'Authorization: Bearer <API_TOKEN>' \ -F 'pdf_file=@document.pdf'import requests
with open("document.pdf", "rb") as f: response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/pdf", headers={"Authorization": "Bearer <API_TOKEN>"}, files={"pdf_file": f}, )data = response.json()Reponse 200 OK
{ "status": "success", "message": "File processed successfully.", "article": { "id": 1234, "title": "document.pdf" }}| Field | Type | Description |
|---|---|---|
status | string | Etat du traitement |
message | string | Message de resultat lisible |
article | object | L’article cree |
Uploader un fichier
Section intitulée « Uploader un fichier »POST https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/
Uploader un fichier pris en charge (PDF, DOCX). Le contenu est extrait et ajoute en tant qu’article.
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -F 'file=@document.docx'import requests
with open("document.docx", "rb") as f: response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/", headers={"Authorization": "Bearer <API_TOKEN>"}, files={"file": f}, )data = response.json()Reponse 200 OK — Meme schema que Uploader un PDF.
Importer du contenu externe
Section intitulée « Importer du contenu externe »Importer du contenu provenant de sources externes dans la Base de connaissances. Ces endpoints traitent le contenu de maniere asynchrone.
Scraper un site web
Section intitulée « Scraper un site web »Scraper une page web unique ou un site entier et importer le contenu.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/website
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL a scraper |
mode | string | No | "individual" (par defaut), "site_wide" ou "individual_with_summary" |
phrases | array of strings | No | Expressions cles a extraire |
html_selector | string | No | Selecteur CSS pour cibler un contenu specifique |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/website \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "url": "https://example.com/docs", "mode": "individual"}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/import_external/website", headers={"Authorization": "Bearer <API_TOKEN>"}, json={"url": "https://example.com/docs", "mode": "individual"},)data = response.json()Reponse 200 OK
{ "status": "success", "url": "https://example.com/docs", "article": {}}Importer une transcription YouTube
Section intitulée « Importer une transcription YouTube »Importer la transcription d’une video YouTube.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/youtube
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL de la video YouTube |
toast_process_uuid | string | Yes | UUID v4 pour le suivi du processus d’import |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/youtube \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "toast_process_uuid": "550e8400-e29b-41d4-a716-446655440000"}'import uuidimport requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/import_external/youtube", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "toast_process_uuid": str(uuid.uuid4()), },)Reponse 202 Accepted — La transcription est traitee de maniere asynchrone.
Importer un sitemap
Section intitulée « Importer un sitemap »Importer le contenu de tous les liens d’un sitemap XML.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/site-map
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
site_map | string | Yes | URL d’un sitemap XML |
link_filter_regex | string | No | Regex pour filtrer les liens a importer (par defaut : ".*") |
html_selector | string | No | Selecteur CSS pour cibler un contenu specifique |
summarize | boolean | No | Resumer le contenu importe (par defaut : false) |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/site-map \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "site_map": "https://example.com/sitemap.xml"}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/import_external/site-map", headers={"Authorization": "Bearer <API_TOKEN>"}, json={"site_map": "https://example.com/sitemap.xml"},)data = response.json()Reponse 200 OK
{ "status": "success", "links": ["https://example.com/page1", "https://example.com/page2"]}Scraper une liste de liens
Section intitulée « Scraper une liste de liens »Importer le contenu d’une liste specifique d’URLs.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/scrape-list
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
links | array of strings | Yes | Liste d’URLs a scraper (non vide) |
tags | array of strings | No | Tags a appliquer aux articles importes |
html_selector | string | No | Selecteur CSS pour cibler un contenu specifique |
summarize | boolean | No | Resumer le contenu importe (par defaut : false) |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/scrape-list \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "links": ["https://example.com/page1", "https://example.com/page2"], "tags": ["imported"]}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/import_external/scrape-list", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "links": ["https://example.com/page1", "https://example.com/page2"], "tags": ["imported"], },)data = response.json()Reponse 200 OK
{ "status": "success", "links": ["https://example.com/page1", "https://example.com/page2"]}Gerer les sources de contenu externes (p. ex. Intercom, Shopify) qui synchronisent des articles vers votre Base de connaissances.
Le parametre de chemin {source} accepte des valeurs telles que "intercom", "shopify", etc.
Importer les articles d’une source
Section intitulée « Importer les articles d’une source »POST https://app.quickchat.ai/v1/api/knowledge_base/sources/{source}/import
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/sources/intercom/import \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/sources/intercom/import", headers={"Authorization": "Bearer <API_TOKEN>"}, json={},)data = response.json()Reponse 200 OK — Retourne une liste d’aperçus d’articles importes.
Supprimer les articles d’une source
Section intitulée « Supprimer les articles d’une source »POST https://app.quickchat.ai/v1/api/knowledge_base/sources/{source}/delete
Supprime tous les articles importes depuis la source specifiee.
Reponse 204 No Content
Comparer les articles d’une source
Section intitulée « Comparer les articles d’une source »Comparer les articles locaux avec la source externe pour detecter les modifications.
POST https://app.quickchat.ai/v1/api/knowledge_base/sources/{source}/articles_diff
Reponse 200 OK
[ { "internal_article_diff": "CHANGED", "external_article_diff": "UNCHANGED", "article_snapshot": {} }]| Field | Type | Description |
|---|---|---|
internal_article_diff | string | "CHANGED" ou "UNCHANGED" |
external_article_diff | string | "CHANGED", "UNCHANGED" ou "REMOVED" |
article_snapshot | object | Donnees de l’aperçu de l’article |
Base de connaissances Intercom
Section intitulée « Base de connaissances Intercom »Endpoints dedies a la gestion de l’integration de la Base de connaissances Intercom.
Rafraichir les articles Intercom
Section intitulée « Rafraichir les articles Intercom »Re-recuperer le contenu depuis Intercom pour les articles existants.
POST https://app.quickchat.ai/v1/api/knowledge_base/intercom/refresh_articles
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
article_ids | array of integers | No | IDs d’articles specifiques a rafraichir (par defaut : tous) |
fetch_new_articles | boolean | No | Recuperer les nouveaux articles (par defaut : true) |
Reponse 204 No Content
Importer les articles Intercom
Section intitulée « Importer les articles Intercom »Importer tous les articles depuis Intercom.
POST https://app.quickchat.ai/v1/api/knowledge_base/intercom/import
Reponse 200 OK — Retourne une liste d’aperçus d’articles importes.
Supprimer les articles Intercom
Section intitulée « Supprimer les articles Intercom »Supprimer tous les articles provenant d’Intercom de la Base de connaissances.
POST https://app.quickchat.ai/v1/api/knowledge_base/intercom/delete
Reponse 204 No Content
Comparer les articles Intercom
Section intitulée « Comparer les articles Intercom »Comparer les articles locaux avec Intercom pour detecter les modifications.
GET https://app.quickchat.ai/v1/api/knowledge_base/intercom/articles_diff
curl https://app.quickchat.ai/v1/api/knowledge_base/intercom/articles_diff \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/intercom/articles_diff", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Reponse 200 OK — Retourne une liste d’objets de comparaison d’articles (meme schema que Comparer les articles d’une source).
Conversations
Section intitulée « Conversations »Lister les conversations
Section intitulée « Lister les conversations »GET https://app.quickchat.ai/v1/api_core/conversations
Parametres de requete
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Elements par page |
offset | integer | No | Elements a ignorer |
query | string | No | Rechercher par numero d’ordre, UUID ou texte de message |
assignee_type | string | No | "ai_assistant", "human_operator" ou "unassigned" |
source | string | No | "widget", "slack", "telegram", "whatsapp", etc. |
resolution_status | string | No | "open" ou "resolved" |
created_timestamp_start_date | datetime | No | Filtrer par date de creation (debut) |
created_timestamp_end_date | datetime | No | Filtrer par date de creation (fin) |
last_message_at_start_date | datetime | No | Filtrer par date du dernier message (debut) |
last_message_at_end_date | datetime | No | Filtrer par date du dernier message (fin) |
most_frequent_language | string | No | Filtrer par langue detectee |
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()Reponse 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, "assignee": { "type": "ai_assistant" }, "visitor_name": "John", "visitor_email": "john@example.com", "visitor_phone_number": null, "visitor_label": null } ], "offset": 0, "count": 42}Obtenir les details d’une conversation
Section intitulée « Obtenir les details d’une conversation »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()Reponse 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, "assignee": { "type": "ai_assistant" }, "url": null, "client_metadata": {"userId": 12}, "data_gathering": null, "last_visitor_message_at": "2026-01-15T10:34:00Z", "visitor_name": "John", "visitor_email": "john@example.com", "visitor_phone_number": null, "visitor_label": null}Metadonnees de conversation
Section intitulée « Metadonnees de conversation »Stocker et recuperer des metadonnees personnalisees pour les conversations. Les metadonnees sont validees par rapport a un schema JSON si un schema est configure dans le Tableau de bord.
Obtenir les metadonnees
Section intitulée « Obtenir les metadonnees »GET https://app.quickchat.ai/v1/api_core/conversations/{conv_id}/metadata
curl https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/metadata \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/metadata", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Reponse 200 OK
{ "metadata": { "ticket_id": "T-1234", "priority": "high" }}Definir les metadonnees
Section intitulée « Definir les metadonnees »Creer ou mettre a jour les metadonnees d’une conversation.
POST https://app.quickchat.ai/v1/api_core/conversations/{conv_id}/metadata
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
metadata | object | Yes | Metadonnees cle-valeur a stocker |
curl -X POST https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/metadata \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "metadata": { "ticket_id": "T-1234", "priority": "high" }}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/metadata", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "metadata": {"ticket_id": "T-1234", "priority": "high"} },)data = response.json()Reponse 200 OK
{ "metadata": { "ticket_id": "T-1234", "priority": "high" }}Actions IA
Section intitulée « Actions IA »Creer une Action IA Base de connaissances
Section intitulée « Creer une Action IA Base de connaissances »Creer une nouvelle Action IA de type Base de connaissances. Les Actions IA Base de connaissances permettent a l’IA de rechercher dans des sous-ensembles d’articles filtres par tag lorsqu’elles sont declenchees.
POST https://app.quickchat.ai/v1/api/ai_actions/knowledge_base
curl -X POST https://app.quickchat.ai/v1/api/ai_actions/knowledge_base \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/ai_actions/knowledge_base", headers={"Authorization": "Bearer <API_TOKEN>"}, json={},)data = response.json()Reponse 201 Created
{ "id": 1, "name": "", "description": "", "icon": null, "icon_color": null, "is_active": false, "is_valid": false, "tag": null, "parameter_description": "", "type": "knowledge_base"}| Field | Type | Description |
|---|---|---|
id | integer | Identifiant de l’Action IA |
name | string | Nom d’affichage (max 100 caracteres) |
description | string | Description du moment ou l’action doit se declencher (max 1000 caracteres) |
icon | string or null | Identifiant d’icone |
icon_color | string or null | Couleur de l’icone |
is_active | boolean | Indique si l’action est activee |
is_valid | boolean | Indique si l’action est correctement configuree |
tag | string or null | Tag de la Base de connaissances pour filtrer les articles (max 255 caracteres) |
parameter_description | string | Description du parametre que l’IA extrait (max 500 caracteres) |
type | string | Toujours "knowledge_base" |
Obtenir une Action IA Base de connaissances
Section intitulée « Obtenir une Action IA Base de connaissances »GET https://app.quickchat.ai/v1/api/ai_actions/{action_id}/knowledge_base
curl https://app.quickchat.ai/v1/api/ai_actions/1/knowledge_base \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/ai_actions/1/knowledge_base", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Reponse 200 OK — Retourne l’objet Action IA (meme schema que la reponse de Creer une Action IA Base de connaissances).
Modifier une Action IA Base de connaissances
Section intitulée « Modifier une Action IA Base de connaissances »PUT https://app.quickchat.ai/v1/api/ai_actions/{action_id}/knowledge_base
Corps de la requete
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Nom d’affichage (max 100 caracteres) |
description | string | Yes | Moment ou l’action doit se declencher (max 1000 caracteres) |
parameter_description | string | Yes | Description du parametre (max 500 caracteres) |
tag | string | Yes | Tag de la Base de connaissances pour filtrer (max 255 caracteres) |
curl -X PUT https://app.quickchat.ai/v1/api/ai_actions/1/knowledge_base \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "name": "Search Returns", "description": "Search the return policy articles when customer asks about returns.", "parameter_description": "The return-related query from the customer", "tag": "returns"}'import requests
response = requests.put( url="https://app.quickchat.ai/v1/api/ai_actions/1/knowledge_base", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "name": "Search Returns", "description": "Search the return policy articles when customer asks about returns.", "parameter_description": "The return-related query from the customer", "tag": "returns", },)data = response.json()Reponse 200 OK — Retourne l’objet Action IA mis a jour.