Your AI Connector Docs

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 :

  1. Démarrer l’importationPOST /kb-sources/url (une page), POST /kb-sources/file (un document téléchargé), ou POST /kb-sources/bulk-import (jusqu’à 100 pages). Vous recevez un ID de source et un status: "queued".
  2. InterrogerGET /kb-sources/{sourceId} jusqu’à ce que status ne soit plus queued ou processing.
  3. 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 autoLinkToAgentId sur 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. autoLinkToCampaignId fait 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éponse202 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_path doit commencer par users/{your user id}/uploads/) ou la requête est refusée avec 403. 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éponse202 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éponse202 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éponse202 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, avec success: false, une liste pages vide et un message error. Vérifiez success avant de lire pages.

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 :

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éponse202 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éponse201 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épondent 200 avec success: false et un message error lorsque le site web ne peut pas être lu, plutôt que de faire échouer la requête. Vérifiez toujours success avant 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é.