API de base de connaissances
Votre base de connaissances est la source d’informations de l’IA. Elle se compose de deux parties, et cette page couvre les deux :
- Sources de connaissances (
/kb-sources) — les pages web et les documents téléchargés que vous fournissez à la plateforme. Chacun est lu, divisé en sections et transformé en FAQ auxquelles votre IA peut répondre. - Groupes de connaissances (
/kb-groups) — des ensembles nommés de FAQ que vous pouvez appliquer à un Agent ou à une campagne en un seul appel, afin qu’un corpus de connaissances que vous avez déjà organisé puisse être réutilisé sur le prochain Agent que vous créez.
Les FAQ générées par une source arrivent dans la même bibliothèque que celles que vous rédigez manuellement. Une fois l’importation terminée, vous pouvez les lire, les modifier et les lier avec l’API FAQ.
Tous les points de terminaison ci-dessous sont relatifs à l’URL de base https://api.youraiconnector.com/v1. Chaque requête doit être authentifiée — voir Accès API et Authentification. L’accès à l’API est une fonctionnalité payante ; sans cela, les requêtes sont rejetées avec une 403.
L’importation consomme des crédits. La lecture d’une page ou d’un document et la rédaction de FAQ à partir de ceux-ci consomment des crédits, proportionnellement à la quantité de contenu. Utilisez Estimer une importation avant de lancer une exploration importante.
Comment fonctionne une importation
L’importation est une tâche de fond, elle ne se termine pas instantanément. Chaque point de terminaison d’importation répond immédiatement avec un source_id, et vous interrogez cette source jusqu’à ce qu’elle soit terminée :
- Démarrer l’importation —
POST /kb-sources/url(une page),POST /kb-sources/file(un document téléchargé), ouPOST /kb-sources/bulk-import(jusqu’à 100 pages). Vous recevez un ID de source et unstatus: "queued". - Interroger —
GET /kb-sources/{sourceId}jusqu’à ce questatusne soit plusqueuedouprocessing. - Lire les FAQ — lorsque le statut est
ready, les entrées produites se trouvent dans votre bibliothèque de FAQ :GET /faqs.
Chaque source rapporte l’un de ces statuts :
| Statut | Signification |
|---|---|
queued |
En attente de lecture. Aucun crédit n’a encore été débité. |
processing |
En cours de lecture et de transformation en FAQ. |
ready |
Terminé. Ses FAQ sont dans votre bibliothèque. |
failed |
N’a pas pu être importé. error_message indique la raison. |
cancelled |
Arrêté avant d’être lu (voir Arrêter une importation). |
paused |
Arrêté car votre clé d’IA a échoué pendant l’importation (voir Reprendre une importation en pause). |
deleting |
Une suppression en masse est en cours de traitement. |
unknown |
L’enregistrement ne comporte aucun statut. Considérez-le comme non prêt. |
Lier lors de l’importation. Passez
autoLinkToAgentIdsur n’importe quel point de terminaison d’importation et la source — ainsi que chaque FAQ qu’elle produit — est ajoutée aux connaissances de cet Agent en un seul appel, sans étape de liaison supplémentaire.autoLinkToCampaignIdfait de même pour une campagne classique. La liaison est effectuée au mieux : un ID qui n’existe pas, ou qui appartient à un autre compte, est ignoré silencieusement et l’importation se poursuit. Confirmez donc la liaison en consultant à nouveau l’Agent.
Importer une page web
POST /kb-sources/url
Ajoute une page web à votre base de connaissances.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
url |
Oui | Adresse http ou https complète de la page. |
autoLinkToAgentId |
Non | ID d’un agent IA auquel rattacher la source importée. |
autoLinkToCampaignId |
Non | Héritage. ID d’une campagne à laquelle rattacher la source importée. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/url?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/pricing",
"autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb"
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/kb-sources/url", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://example.com/pricing",
autoLinkToAgentId: "ag7HkQ2ZpLxR3mNb",
}),
});
const { source_id } = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/kb-sources/url",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"url": "https://example.com/pricing",
"autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb",
},
)
source_id = res.json().get("source_id")
Réponse — 202 Accepted
{
"success": true,
"source_id": "kb_src_abc123",
"status": "queued",
"batch_id": "batch_9f2a"
}
Interrogez source_id avec Vérifier une source jusqu’à ce que le statut soit ready ou failed.
Si la même page est déjà dans votre base de connaissances, rien de nouveau n’est mis en file d’attente et vous obtenez un 200 à la place — et si vous avez demandé un lien automatique, la source existante est liée pour vous de toute façon :
{
"success": true,
"status": "exists",
"skipped_duplicate": 1
}
Un url manquant, ou qui n’est pas une adresse http/https valide, renvoie 400.
Importer un document téléchargé
POST /kb-sources/file
Ajoute un document qui est déjà dans le stockage de fichiers de votre compte en tant que source de connaissances. Types pris en charge : PDF, DOCX, TXT, MD, CSV et XLSX.
Ce point de terminaison ne transporte pas le fichier. Il n’y a pas de téléchargement multipart, pas de corps base64 et pas de téléchargement depuis une URL : vous envoyez l’emplacement de stockage d’un fichier qui existe déjà, et il doit se trouver dans votre propre dossier de téléchargements (
storage_pathdoit commencer parusers/{your user id}/uploads/) ou la requête est refusée avec403. Le tableau de bord y place les fichiers lorsque vous les y glissez. Si vous n’avez aucun moyen d’y placer un fichier, importez une page web avec Importer une page web à la place.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
storage_path |
Oui | Où se trouve le fichier téléchargé. Doit commencer par users/{your user id}/uploads/. |
filename |
Oui | Nom de fichier original incluant son extension — c’est ainsi que le type de fichier est détecté. |
mime_type |
Oui | Type MIME du fichier, par exemple application/pdf. |
autoLinkToAgentId |
Non | ID d’un agent IA auquel rattacher le document. |
autoLinkToCampaignId |
Non | Héritage. ID d’une campagne à laquelle rattacher le document. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/file?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"storage_path": "users/abc123uid/uploads/handbook.pdf",
"filename": "handbook.pdf",
"mime_type": "application/pdf",
"autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb"
}'
Réponse — 202 Accepted
{
"success": true,
"source_id": "kb_src_abc123",
"status": "queued"
}
| Statut | Quand |
|---|---|
400 |
Un champ requis est manquant, ou le fichier n’est pas d’un type que nous pouvons lire. |
403 |
storage_path est en dehors de votre propre dossier de téléchargements. |
Vérifier une source
GET /kb-sources/{sourceId}
L’interrogation qui suit chaque importation et actualisation. Répétez-la jusqu’à ce que le statut soit ready ou failed.
cURL
curl "https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123?apiKey=YOUR_API_KEY"
JavaScript
const res = await fetch(
"https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123",
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const source = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123",
headers={"X-API-Key": "YOUR_API_KEY"},
)
source = res.json()
Réponse
{
"success": true,
"source_id": "kb_src_abc123",
"status": "ready",
"faq_count": 24,
"section_count": 31,
"error_message": null
}
| Champ | Type | Description |
|---|---|---|
status |
string | Emplacement de la source dans le pipeline (voir le tableau des statuts). |
faq_count |
integer | Nombre de FAQ générées à partir de cette source jusqu’à présent. |
section_count |
integer | Nombre de sections de contenu en lesquelles la source a été divisée. |
error_message |
string | null | Raison de l’échec de l’importation, lorsque le statut est failed. null sinon. |
Supprimer une source
DELETE /kb-sources/{sourceId}
Supprime une source de connaissances. Par défaut, les FAQ qu’elle a produites sont conservées — ajoutez delete_faqs=true pour les supprimer également.
Paramètres de requête
| Paramètre | Requis | Description |
|---|---|---|
delete_faqs |
Non | Définissez sur true pour supprimer également toutes les FAQ produites par cette source. La valeur par défaut est false. |
cURL
curl -X DELETE "https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123?delete_faqs=true&apiKey=YOUR_API_KEY"
Réponse
{
"success": true,
"faqs_deleted": 24
}
faqs_deleted est 0 sauf si vous avez demandé delete_faqs=true.
Importer plusieurs pages à la fois
POST /kb-sources/bulk-import
Ajoute jusqu’à 100 pages web en un seul appel — le suivi habituel de Découvrir des pages sur un site web ou Trouver de nouvelles pages sur un site web. Les pages déjà présentes dans votre base de connaissances sont ignorées plutôt que dupliquées (et restent liées à l’Agent si vous l’avez demandé).
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
urls |
Oui | Adresses à importer. Au moins 1, au maximum 100 par appel. |
autoLinkToAgentId |
Non | ID d’un agent IA auquel rattacher chaque page importée. |
autoLinkToCampaignId |
Non | Hérité. ID d’une campagne à laquelle rattacher chaque page importée. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/bulk-import?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://example.com/pricing", "https://example.com/faq"],
"autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb"
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/kb-sources/bulk-import", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
urls: ["https://example.com/pricing", "https://example.com/faq"],
autoLinkToAgentId: "ag7HkQ2ZpLxR3mNb",
}),
});
const { queued_source_ids } = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/kb-sources/bulk-import",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"urls": ["https://example.com/pricing", "https://example.com/faq"],
"autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb",
},
)
queued_source_ids = res.json()["queued_source_ids"]
Réponse — 202 Accepted
{
"success": true,
"batch_id": "batch_9f2a",
"queued": 2,
"skipped_duplicate": 0,
"queued_source_ids": ["kb_src_abc123", "kb_src_def456"]
}
Interrogez chaque ID dans queued_source_ids avec Vérifier une source. L’envoi d’un tableau urls vide, d’une entrée non textuelle ou de plus de 100 entrées renvoie 400.
Supprimer plusieurs sources à la fois
POST /kb-sources/bulk-delete
Supprime jusqu’à 2 000 sources de connaissances en un seul appel. La suppression s’exécute en arrière-plan et vous recevez un e-mail une fois terminée.
La suppression en masse supprime également les FAQ. Contrairement à Supprimer une source, qui les conserve sauf demande contraire, ce point de terminaison supprime chaque source ainsi que les FAQ qu’elle a générées. Il n’existe aucune option pour les conserver.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
sourceIds |
Oui | ID des sources à supprimer. Au moins 1, au maximum 2 000 par appel. |
domainLabel |
Non | Un nom convivial pour ce nettoyage. Utilisé uniquement dans l’e-mail de confirmation. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/bulk-delete?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sourceIds": ["kb_src_abc123", "kb_src_def456"],
"domainLabel": "example.com"
}'
Réponse — 202 Accepted
{
"success": true,
"batch_id": "del_batch_31a",
"queued": 2
}
Découvrir des pages sur un site web
POST /kb-sources/discover-pages
Explore un site web à partir d’une adresse de départ et liste les pages trouvées sur le même domaine, chacune avec un avis sur son intérêt à être importée. Rien n’est importé et rien n’est sélectionné pour vous — il s’agit de l’étape « qu’y a-t-il sur ce site » que vous exécutez avant de décider ce qu’il faut envoyer vers Importer plusieurs pages à la fois.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
url |
Oui | Adresse à partir de laquelle commencer l’exploration, généralement la page d’accueil du site. |
maxPages |
Non | Limite supérieure du nombre de pages à renvoyer. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/discover-pages?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com", "maxPages": 100 }'
Réponse
{
"success": true,
"source_type": "sitemap",
"pages": [
{
"url": "https://example.com/pricing",
"title": "Pricing",
"depth": 1,
"score": 95,
"recommendation": "add",
"reason_key": "core_page"
}
]
}
| Champ | Type | Description |
|---|---|---|
source_type |
string | Comment les pages ont été trouvées — sitemap (le sitemap du site) ou link_discovery (en suivant les liens). |
url |
string | Adresse complète de la page. |
title |
string | null | Titre de la page, lorsqu’il a pu être lu. |
depth |
integer | À combien de liens de la page de départ cette page a été trouvée. |
score |
integer | À quel point la page semble utile en tant que connaissance, de 0 à 100. |
recommendation |
string | add (clairement utile à importer, score de 90 ou plus), maybe (limite), ou skip (contenu rarement utile pour un assistant — journaux de modifications, pages juridiques, traductions en double). |
reason_key |
string | Une raison stable et lisible par machine derrière la recommandation, par exemple core_page, changelog_history, legal_page ou locale_duplicate. |
L’exploration est faite au mieux. Si le site ne peut pas être lu, la réponse est tout de même
200, avecsuccess: false, une listepagesvide et un messageerror. Vérifiezsuccessavant de lirepages.
Un url manquant renvoie 400.
Estimer le coût d’une importation
POST /kb-sources/estimate-cost
Calcule combien de crédits une importation proposée consommerait, avant que vous ne vous engagiez. Les pages sont récupérées et les documents sont lus pour mesurer leur taille, mais rien n’est importé et l’estimation elle-même ne dépense pas de crédits.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
urls |
Non | Adresses des pages que vous envisagez d’importer. |
files |
Non | Fichiers déjà téléchargés que vous envisagez d’utiliser. Chaque entrée nécessite storage_path, filename et mime_type. |
tier |
Non | Le niveau de qualité de l’IA sur lequel l’importation sera exécutée, afin que l’estimation corresponde à ce qui vous sera réellement facturé. Laissez vide pour le tarif standard. |
Envoyez urls, files, ou les deux.
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/estimate-cost?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "urls": ["https://example.com/pricing"] }'
Réponse
{
"success": true,
"estimates": [
{ "ref": "https://example.com/pricing", "chunks": 7, "credits": 7 }
],
"total_chunks": 7,
"total_credits": 7
}
Chaque ligne renvoie l’URL ou le chemin de stockage dans ref afin que vous puissiez le faire correspondre à votre entrée. Une page ou un fichier qui n’a pas pu être lu obtient tout de même une ligne, comptée comme un bloc, avec une error dessus.
Arrêter une importation
POST /kb-sources/cancel-import
Arrête les pages qui sont encore en attente dans la file d’importation — le bouton « arrêter l’importation » pour un crawl qui s’est avéré plus important que prévu. L’annulation d’une page en attente ne coûte rien, car elle n’a pas encore été lue.
Les pages déjà en cours de traitement ne sont pas arrêtées : leur travail est en cours et est facturé dans tous les cas, elles vont donc jusqu’au bout. La réponse indique combien il y en avait.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
host |
Non | Arrête uniquement les pages en attente sur ce site web (par exemple docs.example.com). Laissez vide pour arrêter toutes les importations en attente sur le compte. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/cancel-import?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "host": "docs.example.com" }'
Réponse
{
"success": true,
"cancelled": 412,
"in_flight": 3
}
Reprendre une importation suspendue
POST /kb-sources/resume-import
Relance une importation qui a été suspendue parce que votre propre clé d’IA a cessé de fonctionner.
Appeler ceci vaut consentement pour terminer l’importation avec la clé actuellement active — ce qui peut signifier utiliser des crédits de la plateforme si votre propre clé est toujours hors service.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
host |
Non | Reprend uniquement les pages suspendues sur ce site web. Laissez vide pour reprendre tout ce qui est suspendu. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/resume-import?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{
"success": true,
"resumed": 58
}
Trouver de nouvelles pages sur un site web
POST /kb-sources/refresh-domain
Explore un site web à partir duquel vous avez déjà importé des données et ne signale que les pages qui ne sont pas encore dans votre base de connaissances, chacune avec la même recommandation que la découverte de pages. Rien n’est importé et rien n’est modifié.
Les deux suivis sont délibérément des appels distincts, donc abandonner celui-ci ne coûte rien :
- importez les nouvelles pages que vous souhaitez avec Importer plusieurs pages à la fois ;
- relisez les pages que vous possédez déjà avec Actualiser chaque page d’un site web.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
baseUrl |
Oui | N’importe quelle adresse sur le site web, ou simplement l’hôte. |
maxPages |
Non | Limite supérieure du nombre de pages à explorer. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/refresh-domain?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "baseUrl": "https://example.com" }'
Réponse
{
"success": true,
"source_type": "sitemap",
"discovered": 249,
"new_pages": [
{
"url": "https://example.com/new-guide",
"score": 95,
"recommendation": "add",
"reason_key": "core_page"
}
],
"new_urls_queued": 0,
"existing_refresh_queued": 249
}
| Champ | Type | Description |
|---|---|---|
discovered |
integer | Nombre total de pages trouvées sur le site. |
new_pages |
array | Pages qui ne sont pas encore dans votre base de connaissances. Rien n’est mis en file d’attente pour vous — importez celles que vous voulez. |
new_urls_queued |
integer | Toujours 0. Conservé pour la compatibilité ascendante ; ce point de terminaison ne met jamais rien en file d’attente. |
existing_refresh_queued |
integer | Nombre de pages déjà importées depuis ce site qui ont été trouvées prêtes à être relues. Rien n’est mis en file d’attente par cet appel. |
batch_id |
string | Présent uniquement lorsqu’un lot a été créé. |
Tout comme la découverte, cela échoue en douceur : un site qui ne peut pas être lu renvoie toujours 200, avec success: false, un new_pages vide et un error. Un baseUrl manquant ou vide renvoie 400.
Actualiser chaque page d’un site web
POST /kb-sources/trigger-domain-refresh
Relit chaque page que vous avez déjà importée depuis un site web, afin que ses FAQ suivent le contenu actuel du site : les sections modifiées sont mises à jour, les nouvelles sections ajoutées et les sections supprimées retirées.
Cela met le travail en file d’attente et renvoie immédiatement. Faites suivre par Suivre l’actualisation d’un site web, et arrêtez-le avec Arrêter l’actualisation d’un site web.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
baseUrl |
Oui | N’importe quelle adresse sur le site web, ou simplement l’hôte. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/trigger-domain-refresh?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "baseUrl": "https://example.com" }'
Réponse
{
"success": true,
"queued": 249
}
Suivre l’actualisation d’un site web
GET /kb-sources/domain-refresh-status
Indique l’avancement de l’actualisation d’un site web, afin que vous puissiez afficher une progression telle que « 221 sur 249 ».
Paramètres de requête
| Paramètre | Requis | Description |
|---|---|---|
baseUrl |
Oui | N’importe quelle adresse sur le site web, ou simplement l’hôte. |
cURL
curl "https://api.youraiconnector.com/v1/kb-sources/domain-refresh-status?baseUrl=https://example.com&apiKey=YOUR_API_KEY"
Réponse
{
"success": true,
"job": {
"domainBatchId": "job_7c1e",
"host": "example.com",
"total": 249,
"pending": 28,
"succeeded": 219,
"failed": 2,
"skippedDuplicate": 0,
"status": "refreshing",
"startedAtIso": "2026-06-15T09:00:00.000Z"
}
}
job est null lorsqu’aucune actualisation n’est en cours pour ce site web. Le nombre de pages terminées jusqu’à présent est total moins pending. Le travail status est l’un des suivants : refreshing (traitement des pages en cours), deduplicating (la passe de nettoyage à la fin), ou les états finaux completed, failed et cancelled. Gardez domainBatchId — c’est ce que vous transmettez au point de terminaison d’annulation.
Un baseUrl manquant ou vide renvoie 400.
Arrêter l’actualisation d’un site web
POST /kb-sources/refresh-domain/cancel
Arrête l’actualisation d’un site web qui est encore en train de traiter ses pages. Les pages déjà terminées conservent leur contenu mis à jour ; les pages non commencées sont abandonnées, et les pages en cours de relecture reviennent à leur état précédent.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
jobId |
Oui | L’identifiant domainBatchId renvoyé par Suivre l’actualisation d’un site web. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/refresh-domain/cancel?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "jobId": "job_7c1e" }'
Réponse
{
"success": true,
"status": "cancelled",
"cancelled_units": 28,
"sources_reset": 3,
"sources_cancelled": 25
}
| Champ | Type | Description |
|---|---|---|
status |
string | État de l’actualisation après cet appel : cancelled, deduplicating, completed ou failed. |
cancelled_units |
integer | Quantité de travail restant lors de l’annulation. 0 en cas d’annulation répétée. |
sources_reset |
integer | Pages retirées du traitement et remises à ready. |
sources_cancelled |
integer | Nouvelles pages de cette actualisation qui étaient encore en file d’attente et qui sont maintenant annulées. |
Annuler deux fois est sans conséquence — le second appel rapporte le même état final. Une fois que l’actualisation est passée à l’étape de nettoyage, elle ne peut plus être arrêtée, et la réponse renvoie success: false et reason: "already_finalizing". Un jobId manquant renvoie 400, et un travail qui n’est pas dans votre compte renvoie 404.
Actualiser une source unique
POST /kb-sources/{sourceId}/refresh
Relit une page web que vous avez déjà importée et remet ses FAQ en conformité avec le contenu actuel de la page : les sections modifiées sont mises à jour, les nouvelles sont ajoutées, celles supprimées sont retirées.
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123/refresh?apiKey=YOUR_API_KEY"
Réponse — 202 Accepted
{
"success": true,
"source_id": "kb_src_abc123",
"status": "queued"
}
Interrogez la source jusqu’à ce que son statut quitte queued et processing. Un identifiant de source qui n’est pas dans votre compte renvoie 404.
Sélectionner les pages les plus pertinentes
POST /kb-sources/select-relevant-pages
Demande à l’IA de choisir les cinq pages, parmi une liste de candidates, qui décrivent le mieux une entreprise — utilisé lors de la génération d’un playbook de campagne à partir d’un site web. Cela consomme des crédits.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
urls |
Oui | Adresses des pages candidates parmi lesquelles choisir, généralement issues de la découverte de pages. |
homeUrl |
Oui | La page d’accueil du site, utilisée comme contexte pour le choix. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-sources/select-relevant-pages?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"homeUrl": "https://example.com",
"urls": ["https://example.com/about", "https://example.com/pricing"]
}'
Réponse
{
"success": true,
"pages": [
{ "url": "https://example.com/pricing", "title": "Pricing", "type": "pricing" }
]
}
Il s’agit d’un assistant, pas d’une ressource : en cas d’échec, il répond tout de même 200, avec success: false, une liste pages vide et un message error.
Groupes de connaissances
Un groupe de connaissances est un ensemble nommé de FAQ — « Expédition et retours », « Intégration » — que vous pouvez appliquer à un agent ou à une campagne en un seul appel. Le groupe contient des références, et non des copies : les FAQ elles-mêmes restent dans votre bibliothèque unique, donc la modification de l’une d’entre elles via l’API FAQ la met à jour partout où elle est utilisée.
L’application d’un groupe ne fait qu’ajouter ce qui manque, donc appliquer le même groupe deux fois est sans danger et added_count renvoie 0 la deuxième fois.
Créer un groupe de connaissances
POST /kb-groups
Crée un groupe. Il commence vide — ajoutez-y des FAQ avec Ajouter une FAQ à un groupe.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
name |
Oui | Nom du groupe. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-groups?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Shipping and returns" }'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/kb-groups", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ name: "Shipping and returns" }),
});
const { group_id } = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/kb-groups",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"name": "Shipping and returns"},
)
group_id = res.json()["group_id"]
Réponse — 201 Created
{
"success": true,
"group_id": "kbg_abc123"
}
Renommer un groupe de connaissances
PUT /kb-groups/{groupId}
Modifie le nom d’un groupe. Ses FAQ restent intactes.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
name |
Oui | Nouveau nom du groupe. |
cURL
curl -X PUT "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Shipping, returns and refunds" }'
Réponse
{
"success": true,
"group_id": "kbg_abc123",
"name": "Shipping, returns and refunds"
}
Supprimer un groupe de connaissances
DELETE /kb-groups/{groupId}
Supprime le groupe. Seul le regroupement est supprimé — les FAQ qu’il contient restent dans votre bibliothèque, et tout ce à quoi le groupe était déjà appliqué conserve ces FAQ.
cURL
curl -X DELETE "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123?apiKey=YOUR_API_KEY"
Réponse
{
"success": true
}
Ajouter une FAQ à un groupe
POST /kb-groups/{groupId}/faqs
Place une FAQ existante dans un groupe. Cela modifie uniquement le lot — cela ne rattache pas la FAQ à un Agent par lui-même ; appliquez le groupe pour cela.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
faq_id |
Oui | ID de la FAQ à ajouter. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/faqs?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "faq_id": "aBcD1234eFgH5678" }'
Réponse
{
"success": true,
"group_id": "kbg_abc123",
"faq_id": "aBcD1234eFgH5678"
}
Supprimer une FAQ d’un groupe
DELETE /kb-groups/{groupId}/faqs/{faqId}
Retire une FAQ d’un groupe. La FAQ elle-même n’est pas supprimée, et les Agents auxquels le groupe était déjà appliqué la conservent.
cURL
curl -X DELETE "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/faqs/aBcD1234eFgH5678?apiKey=YOUR_API_KEY"
Réponse
{
"success": true,
"group_id": "kbg_abc123",
"faq_id": "aBcD1234eFgH5678"
}
Appliquer un groupe à un Agent
POST /kb-groups/{groupId}/apply-to-agent
Ajoute chaque FAQ du groupe aux connaissances d’un Agent IA en un seul appel — le moyen rapide de donner à un nouvel Agent un corpus de connaissances que vous avez déjà organisé.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
agent_id |
Oui | ID de l’Agent IA auquel appliquer le groupe. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-agent?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "agent_id": "ag7HkQ2ZpLxR3mNb" }'
JavaScript
const res = await fetch(
"https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-agent",
{
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ agent_id: "ag7HkQ2ZpLxR3mNb" }),
}
);
const { added_count } = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-agent",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"agent_id": "ag7HkQ2ZpLxR3mNb"},
)
added_count = res.json()["added_count"]
Réponse
{
"success": true,
"group_id": "kbg_abc123",
"agent_id": "ag7HkQ2ZpLxR3mNb",
"added_count": 12
}
added_count correspond au nombre de FAQ réellement ajoutées — 0 lorsque le groupe est vide ou déjà appliqué.
Appliquer un groupe à une campagne
POST /kb-groups/{groupId}/apply-to-campaign
La version campagne classique de l’appel ci-dessus. Sur un compte basé sur des Agents, utilisez plutôt Appliquer un groupe à un Agent.
Champs de la requête
| Champ | Requis | Description |
|---|---|---|
campaign_id |
Oui | ID de la campagne à laquelle appliquer le groupe. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-campaign?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "campaign_id": "campaign123" }'
Réponse
{
"success": true,
"group_id": "kbg_abc123",
"campaign_id": "campaign123",
"added_count": 12
}
Erreurs de l’API de la base de connaissances
Ces points de terminaison renvoient l’enveloppe d’erreur standard :
{
"success": false,
"error": "Knowledge base source not found."
}
| Statut | Quand cela se produit sur un point de terminaison de base de connaissances |
|---|---|
400 |
Un champ requis est manquant ou invalide — un url vide, un baseUrl ou jobId manquant, plus de 100 URL dans une importation en masse, plus de 2 000 ID dans une suppression en masse, ou un type de fichier que nous ne pouvons pas lire. |
402 |
Crédits insuffisants pour exécuter l’importation. Rechargez votre compte et réessayez. |
403 |
Un storage_path en dehors de votre propre dossier de téléchargement — ou votre forfait n’inclut pas l’accès à l’API. |
404 |
La source, le groupe, la FAQ, l’Agent, la campagne ou la tâche d’actualisation n’a pas été trouvé — soit il n’existe pas, soit il appartient à un autre compte. |
Les échecs légers ne sont pas des erreurs. La découverte (
discover-pages,refresh-domain) et l’assistant de sélection de page répondent200avecsuccess: falseet un messageerrorlorsque le site web ne peut pas être lu, plutôt que de faire échouer la requête. Vérifiez toujourssuccessavant de lire les données.
Les codes partagés que chaque point de terminaison peut renvoyer — 401, 403 (votre forfait n’inclut pas l’accès à l’API), 429 (limite de débit) et 500 — sont répertoriés avec des conseils de nouvelle tentative dans Erreurs et pagination.
Connexe
- API FAQ — lire, modifier et lier les FAQ produites par vos sources.
- Gestion des FAQ — la même base de connaissances dans le tableau de bord.
- Agents IA — les Agents auxquels vous attachez des sources et des groupes.
- Accès API — générez votre clé API.
- Authentification — toutes les façons de transmettre votre clé.