API et intégrations

Clés API, endpoint de recherche, streaming SSE et endpoint MCP pour RagWeb.

RagWeb expose une API REST pour intégrer le moteur de recherche IA dans vos propres outils :

  • Bots et assistants — Slack, Discord, Teams, chatbots internes
  • Applications métier — CRM, helpdesk, portails clients, intranets
  • Workflows automatisés — n8n, Make, Zapier, scripts Python
  • Assistants IA — Claude Desktop, ChatGPT, OpenAI Codex, Cursor, Kiro (via MCP)
  • Sites et apps — recherche embarquée sans le widget visuel (headless)

Clés API

Créer une clé

Onglet Clés API du dashboard RagWeb
  1. Connectez-vous au tableau de bord RagWeb
  2. Allez dans l’onglet Clés API
  3. Entrez un nom descriptif (ex : « Mon site », « Bot Discord »)
  4. Cliquez Créer
  5. Copiez immédiatement la clé — elle ne sera plus affichée ensuite

Attention

Copiez votre clé immédiatement. Par sécurité, la clé complète n’est affichée qu’une seule fois à la création. Si vous la perdez, révoquez-la et créez-en une nouvelle.

Format de la clé

rw_xxxxxxxxxxxxxxxxxxxxxxxxxxxx

Les clés commencent par rw_ et sont composées de caractères alphanumériques.

Limites par plan

Plan Clés API max
Free 1
Starter 1
Pro 2
Business 5

Révoquer une clé

Dans l’onglet Clés API, cliquez Révoquer sur la clé concernée. L’action est irréversible — les requêtes utilisant cette clé seront immédiatement rejetées.

Requête

POST https://api.ragweb.fr/search

Headers :

Content-Type: application/json
X-API-Key: rw_VOTRE_CLE

Body :

{
  "query": "Comment fonctionne votre service ?",
  "messages": []
}
Champ Type Requis Description
query string Oui La question de l’utilisateur
messages array Non Historique de conversation pour le multi-turn

Réponse

{
  "answer": "Notre service fonctionne en trois étapes...",
  "sources": [
    {
      "title": "Comment ça marche",
      "url": "https://monsite.fr/comment-ca-marche",
      "snippet": "Extrait pertinent de la page..."
    }
  ]
}

Multi-turn (conversation)

Pour les questions de suivi, envoyez l’historique dans messages :

{
  "query": "Et pour le plan Pro ?",
  "messages": [
    { "role": "user", "content": "Quels sont vos tarifs ?" },
    { "role": "assistant", "content": "Nous proposons 4 plans..." }
  ]
}

Le maximum est de 6 messages d’historique.

Codes d’erreur

Code HTTP Signification
200 Succès
400 Requête invalide (query manquante, trop longue)
401 Clé API invalide ou manquante
429 Quota quotidien atteint
500 Erreur serveur temporaire

CORS

L’endpoint /ragweb/search accepte les requêtes cross-origin (Access-Control-Allow-Origin: *). Le widget peut être utilisé depuis n’importe quel domaine.

Streaming SSE

Pour une expérience temps réel (réponse progressive), utilisez l’endpoint de streaming :

POST {stream-url}

L’URL de streaming est une Lambda Function URL. Elle est configurée automatiquement dans le widget via data-stream-url.

Headers :

Content-Type: application/json
X-API-Key: rw_VOTRE_CLE

Body : identique à l’endpoint search.

Réponse : flux Server-Sent Events (SSE) :

data: {"type":"token","content":"Notre "}
data: {"type":"token","content":"service "}
data: {"type":"token","content":"fonctionne..."}
data: {"type":"sources","sources":[...]}
data: {"type":"done"}

Intégration JavaScript

async function searchStream(query, apiKey, streamUrl) {
  const response = await fetch(streamUrl, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': apiKey
    },
    body: JSON.stringify({ query, messages: [] })
  });
  const reader = response.body.getReader();
  const decoder = new TextDecoder();
  while (true) {
    const { done, value } = await reader.read();
    if (done) break;
    const chunk = decoder.decode(value);
    const lines = chunk.split('\n').filter(l => l.startsWith('data: '));
    for (const line of lines) {
      const data = JSON.parse(line.slice(6));
      if (data.type === 'token') {
        // Afficher progressivement
        console.log(data.content);
      } else if (data.type === 'sources') {
        // Sources de la réponse
        console.log('Sources:', data.sources);
      }
    }
  }
}

Endpoint MCP (Pro / Business)

RagWeb expose un endpoint Model Context Protocol compatible avec les assistants IA qui supportent MCP :

  • Claude Desktop — assistant de bureau Anthropic
  • ChatGPT (Apps/Connectors) — via Developer Mode → Connectors
  • OpenAI Codex — agent de code CLI et IDE
  • Cursor, Windsurf, Kiro — IDE avec support MCP
  • Agents custom — tout client MCP (OpenAI Agents SDK, LangChain, etc.)

Cas d’usage

Vous partagez la configuration MCP avec vos propres clients, équipes ou utilisateurs. Ils l’ajoutent dans leur assistant IA et peuvent interroger votre base de connaissances sans passer par votre site web.

Exemples :

  • Un éditeur SaaS partage le MCP de sa documentation technique à ses développeurs
  • Un cabinet de conseil donne accès à ses livrables via Claude Desktop
  • Un organisme de formation met sa base de connaissances à disposition des apprenants
  • Une équipe interne connecte son intranet indexé à ses outils IA quotidiens

Configuration pour Claude Desktop

Depuis l’onglet Clés API du dashboard, copiez la configuration MCP :

{
  "mcpServers": {
    "ragweb": {
      "url": "https://45xicyewg4zqjvpqi6dd7w2tza0kegxp.lambda-url.eu-west-1.on.aws/",
      "headers": {
        "X-API-Key": "rw_VOTRE_CLE_API"
      }
    }
  }
}

Collez dans : Settings → MCP Servers → Add Server.

Configuration pour ChatGPT

  1. Activez le Developer Mode dans les paramètres ChatGPT
  2. Allez dans Plugins / Apps → Ajouter un connecteur
  3. URL du serveur MCP : https://45xicyewg4zqjvpqi6dd7w2tza0kegxp.lambda-url.eu-west-1.on.aws/
  4. Authentification : Header X-API-Key avec votre clé RagWeb

Configuration pour OpenAI Codex

Ajoutez dans votre fichier de configuration MCP (partagé entre CLI et IDE) :

{
  "mcpServers": {
    "ragweb": {
      "url": "https://45xicyewg4zqjvpqi6dd7w2tza0kegxp.lambda-url.eu-west-1.on.aws/",
      "headers": {
        "X-API-Key": "rw_VOTRE_CLE_API"
      }
    }
  }
}

Outil exposé

Le serveur MCP expose un seul outil :

Outil Description
search Recherche dans la base de connaissances du site. Paramètre : query (string)

Quota

Les requêtes MCP consomment le même quota quotidien que le widget (10 à 3 000 selon le plan).

Quotas et rate limiting

Plan Requêtes / jour
Free 10
Starter 200
Pro 1 000
Business 3 000

Le compteur est réinitialisé à minuit UTC. Une fois le quota atteint, les requêtes retournent un code 429.

Exemples d’intégration

cURL

curl -X POST https://api.ragweb.fr/search \
  -H "Content-Type: application/json" \
  -H "X-API-Key: rw_VOTRE_CLE" \
  -d '{"query": "Comment contacter le support ?"}'

Python

import requests
response = requests.post(
    "https://api.ragweb.fr/search",
    headers={
        "Content-Type": "application/json",
        "X-API-Key": "rw_VOTRE_CLE"
    },
    json={"query": "Quels sont vos horaires ?"}
)
data = response.json()
print(data["answer"])
for source in data["sources"]:
    print(f"  - {source['title']}: {source['url']}")

Node.js

const response = await fetch('https://api.ragweb.fr/search', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'rw_VOTRE_CLE'
  },
  body: JSON.stringify({ query: 'Comment fonctionne la livraison ?' })
});
const { answer, sources } = await response.json();
console.log(answer);
sources.forEach(s => console.log(`  ${s.title}: ${s.url}`));