RagWeb expose une API REST pour l’intégration programmatique du moteur de recherche IA dans vos applications, bots ou workflows.
Clés API#
Créer une clé#

- Connectez-vous au tableau de bord RagWeb
- Allez dans l’onglet Clés API
- Entrez un nom descriptif (ex : “Mon site”, “Bot Discord”)
- Cliquez Créer
- Copiez immédiatement la clé — elle ne sera plus affichée ensuite
Format de la clé#
rw_xxxxxxxxxxxxxxxxxxxxxxxxxxxxLes 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.
Endpoint Search#
Requête#
POST https://api.yannick.services/ragweb/searchHeaders :
Content-Type: application/json
X-API-Key: rw_VOTRE_CLEBody :
{
"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_CLEBody : 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 Claude Desktop, ChatGPT et tout client MCP.
Configuration#
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"
}
}
}
}Utilisation avec Claude Desktop#
- Ouvrez les paramètres de Claude Desktop
- Section MCP Servers → ajoutez un nouveau serveur
- Collez la configuration ci-dessus
- Redémarrez Claude Desktop
- L’outil
searchest disponible — Claude peut interroger votre base de connaissances
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 (30 à 3 000 selon le plan).
Quotas et rate limiting#
| Plan | Requêtes / jour |
|---|---|
| Free | 30 |
| 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.yannick.services/ragweb/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.yannick.services/ragweb/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.yannick.services/ragweb/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}`));



