API de recherche de documentation
Recherchez votre documentation Jamdesk par programmation avec l'API de recherche de documentation. Alimentez des chatbots de support, des bots Slack, des recherches personnalisées et des agents IA avec des réponses précises et à jour issues de votre documentation.
L'API de recherche de documentation vous donne un accès programmatique au contenu de votre documentation via la recherche sémantique. Un seul endpoint (POST /_api/search) accepte une requête en langage naturel et retourne les passages les plus pertinents de votre documentation, classés par pertinence.
Cas d'utilisation
Démarrage rapide
Accédez à Paramètres du projet → Clés API dans le dashboard Jamdesk. Cliquez sur Générer une clé, donnez-lui un nom et copiez la clé. Elle commence par jd_live_ suivi de 32 caractères hexadécimaux (40 caractères au total) et n'est affichée qu'une seule fois.
Envoyez une requête POST à /_api/search sur le sous-domaine de votre documentation :
curl -X POST https://your-project.jamdesk.app/_api/search \
-H "Authorization: Bearer jd_live_c83003a54ae0a83123454c3f7ec82f0a" \
-H "Content-Type: application/json" \
-d '{"query": "How do I set up a custom domain?", "limit": 5}'La réponse retourne un tableau de passages correspondants avec des scores de pertinence et des métadonnées de page :
{
"query": "How do I set up a custom domain?",
"results": [
{
"title": "Custom Domains",
"section": "Step 4: Deploy",
"slug": "deploy/custom-domains",
"content": "To add a custom domain, go to Project Settings and enter your domain. You'll need to add a CNAME record pointing to your Jamdesk subdomain.",
"url": "https://your-project.jamdesk.app/deploy/custom-domains",
"score": 0.94
}
],
"total": 1,
"durationMs": 85
}Authentification
Toutes les requêtes nécessitent un token Bearer dans l'en-tête Authorization.
Authorization: Bearer jd_live_c83003a54ae0a83123454c3f7ec82f0a
Génération des clés API
Dans le dashboard Jamdesk, accédez à votre projet et cliquez sur Paramètres.
Sélectionnez l'onglet Clés API.
Cliquez sur Générer une clé, saisissez un nom descriptif (ex. : "Chatbot Intercom") et cliquez sur Créer.
Copiez la clé immédiatement. Elle commence par jd_live_ suivi de 32 caractères hexadécimaux et n'est affichée qu'une seule fois. Stockez-la dans votre gestionnaire de secrets ou vos variables d'environnement.
Gestion des clés
Les clés API sont limitées à un seul projet. Une clé pour acme.jamdesk.app ne peut pas interroger la documentation d'un autre projet.
| Règle | Détail |
|---|---|
| Format | jd_live_<32 caractères hex> (40 caractères au total, n'expire jamais) |
| Périmètre | Une clé par projet (ne peut pas accéder à d'autres projets) |
| Rotation | Révoquez et régénérez à tout moment depuis les paramètres du projet |
| Stockage | Stockez dans des variables d'environnement ou un gestionnaire de secrets ; ne jamais valider dans le contrôle de source |
Révocation des clés
Pour révoquer une clé, accédez à Paramètres du projet → Clés API, trouvez la clé par son nom et cliquez sur Révoquer. Les clés révoquées cessent de fonctionner immédiatement. Générez une nouvelle clé pour la remplacer.
Limites de débit
Les requêtes sont limitées par clé API.
| Plan | Limite |
|---|---|
| Pro | 60 requêtes / minute |
| Enterprise | Personnalisée ; contactez le support |
Lorsque vous dépassez la limite, l'API retourne 429 Too Many Requests avec un en-tête Retry-After: 60 et {"error": "Rate limit exceeded"} dans le corps.
Si vous avez besoin de limites de débit plus élevées pour une intégration en production, contactez-nous pour discuter des options Enterprise.
Limites de requête
Chaque requête accepte un paramètre limit contrôlant le nombre de résultats à retourner. Le maximum est 20, la valeur par défaut est 5 et le minimum est 1. Il n'y a pas de pagination ; tous les résultats correspondants sont retournés dans une seule réponse. Si vous avez besoin de plus de contexte, essayez une requête plus spécifique plutôt qu'augmenter la limite.
Une requête sans correspondance retourne HTTP 200 avec un tableau de résultats vide :
{"query": "quantum entanglement", "results": [], "total": 0, "durationMs": 48}
Gestion des erreurs
Toutes les réponses d'erreur incluent un champ error lisible par machine sur lequel vous pouvez vous appuyer de façon programmatique.
| Statut | Valeur error | Signification | Action |
|---|---|---|---|
| 400 | Missing or empty "query" field | Le corps de la requête est absent ou ne contient pas de query | Ajoutez une chaîne query non vide |
| 401 | invalid_key_format | L'en-tête Authorization est absent ou la clé ne correspond pas à jd_live_<32 hex> | Vérifiez le format de l'en-tête ; il doit être Bearer jd_live_... |
| 401 | invalid_key | La clé n'est pas reconnue ou a été révoquée | Générez une nouvelle clé dans le dashboard |
| 403 | wrong_project | La clé est valide mais a été générée pour un autre projet | Utilisez une clé correspondant au slug du projet dans l'URL |
| 429 | Rate limit exceeded | Dépassement de 60 requêtes par minute | Attendez le nombre de secondes indiqué dans l'en-tête Retry-After |
| 502 | Search temporarily unavailable | Le backend de recherche vectorielle est indisponible | Réessayez après un court délai |
| 503 | lookup_failed ou redis_unavailable | Le backend de vérification des clés est inaccessible | Réessayez après un court délai |
Les erreurs 401 et 403 sont des échecs permanents. Réessayer avec la même clé ne servira à rien. Les erreurs 429, 502 et 503 sont transitoires ; réessayez avec un backoff exponentiel.
CORS
Le CORS est activé sur tous les endpoints. Les clients basés sur un navigateur (applications monopage, extensions de navigateur, sites statiques) peuvent appeler /_api/search directement sans proxy backend. Toutes les origines sont autorisées.
SDK
Il n'existe pas de SDK officiels pour les langages à ce stade. Utilisez l'API REST directement via fetch, requests, curl ou tout client HTTP. La collection Postman ci-dessous fournit des exemples prêts à être dupliqués.
Versionnage
L'API est actuellement à la version v1.0.0. Les changements incompatibles (renommages de champs, endpoints supprimés, authentification modifiée) seront annoncés via le blog Jamdesk et un avis de dépréciation dans l'en-tête de réponse X-Deprecation au moins 90 jours avant la suppression.
Collection Postman
Nous publions un espace de travail Postman officiel avec la spécification OpenAPI complète et une collection prête à dupliquer pour tester les requêtes dans l'interface Postman sans écrire de code.
Après avoir dupliqué la collection, vous devez mettre à jour deux variables de collection avant qu'une requête fonctionne :
baseUrl: définissez votre propre site de documentation Jamdesk. Pour la plupart des clients, c'esthttps://your-project.jamdesk.app(remplacezyour-projectpar votre slug de projet). Les clients avec un domaine personnalisé utilisent leur propre hôte. Les clients servant la documentation sous un sous-chemin incluent le chemin complet (ex. :https://example.com/docs).apiKey: remplacez le placeholder par une vraie clé générée dans Dashboard → Paramètres du projet → Clés API.
