API di ricerca Docs
Cerca nella documentazione Jamdesk in modo programmatico. Alimenta chatbot, bot Slack, ricerche personalizzate e agenti AI con risposte sempre aggiornate.
L'API di ricerca Docs ti offre accesso programmatico ai contenuti della documentazione tramite ricerca semantica. Un solo endpoint (POST /_api/search) accetta una query in linguaggio naturale e restituisce i passaggi più pertinenti della tua documentazione, ordinati per rilevanza.
Casi d'uso
Avvio rapido
Vai su Project Settings → API Keys nella dashboard Jamdesk. Fai clic su Generate Key, assegna un nome e copia la chiave. Inizia con jd_live_ seguito da 32 caratteri esadecimali (40 caratteri in totale). Viene mostrata una sola volta.
Invia una richiesta POST a /_api/search sul sottodominio della tua documentazione:
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, "language": "en"}'La risposta restituisce un array di passaggi corrispondenti con punteggi di rilevanza e metadati della pagina:
{
"query": "How do I set up a custom domain?",
"language": "en",
"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
}Autenticazione
Tutte le richieste richiedono un token Bearer nell'intestazione Authorization.
Authorization: Bearer jd_live_c83003a54ae0a83123454c3f7ec82f0a
L'API di ricerca funziona sui siti con autenticazione tramite password o JWT. Controlla la tua chiave API, non il login di un visitatore. Non è necessario aggiungere /_api/search a auth.jwt.public. I risultati possono includere pagine protette dal login. Chiama l'API dal tuo server e non inserire mai la chiave nel codice del browser. I risultati seguono le stesse regole della ricerca del sito: le pagine con restrizioni di gruppo non vengono mai restituite. Le pagine nascoste e quelle con search: false sono escluse, a meno che tu non le abbia rese ricercabili.
La stessa chiave apre anche il server MCP, gli URL delle pagine .md e llms.txt e llms-full.txt su questi siti.
Generare chiavi API
Nella dashboard Jamdesk, vai al tuo progetto e fai clic su Settings.
Seleziona la scheda API Keys.
Fai clic su Generate Key, inserisci un nome descrittivo (ad es. "Chatbot Intercom") e fai clic su Create.
Copia subito la chiave. Inizia con jd_live_ seguito da 32 caratteri esadecimali. Viene mostrata una sola volta. Conservala nel tuo gestore di segreti o nelle variabili d'ambiente.
Gestione delle chiavi
Le chiavi API sono limitate a un progetto. Una chiave per acme.jamdesk.app non può interrogare la documentazione di un altro progetto.
| Regola | Dettaglio |
|---|---|
| Formato | jd_live_<32 caratteri esadecimali> (40 caratteri in totale, non scade mai) |
| Ambito | Una chiave per progetto (non può accedere ad altri progetti) |
| Rotazione | Revoca e rigenera in qualsiasi momento da Project Settings |
| Archiviazione | Conserva nelle variabili d'ambiente o in un gestore di segreti; non committarla mai nel controllo di versione |
Revocare le chiavi
Vai su Project Settings → API Keys, trova la chiave per nome e fai clic su Revoke. Le chiavi revocate smettono di funzionare immediatamente. Genera una nuova chiave per sostituirla.
Limiti di frequenza
Le richieste sono limitate per chiave API.
| Piano | Limite |
|---|---|
| Pro | 60 richieste / minuto |
| Enterprise | Personalizzato; contatta il supporto |
Sui siti protetti da login, le richieste MCP, .md e llms.txt effettuate con la stessa chiave condividono un limite separato di 120 richieste al minuto. Non contano sul limite dell'API di ricerca, e le richieste all'API di ricerca non contano sul loro.
Quando superi il limite, l'API restituisce 429 Too Many Requests con l'intestazione Retry-After: 60 e {"error": "Rate limit exceeded"} nel corpo.
Contattaci per le opzioni Enterprise con limiti di frequenza più alti per un'integrazione in produzione.
Limiti delle query
Ogni richiesta accetta un parametro limit che controlla quanti risultati restituire. Il massimo è 20, il valore predefinito è 5 e il minimo è 1. Non c'è paginazione: tutti i risultati corrispondenti tornano in un'unica risposta. Per più contesto, prova una query più specifica invece di un limite più alto.
Una query senza corrispondenze restituisce HTTP 200 con un array di risultati vuoto:
{"query": "quantum entanglement", "results": [], "total": 0, "durationMs": 48}
Filtrare per lingua
Su un sito multilingue, l'API filtra i risultati per una sola lingua per richiesta. Passa language nel corpo della richiesta con un codice BCP-47 (ad es. en, es, fr, pt-BR, zh-Hans).
curl -X POST https://your-project.jamdesk.app/_api/search \
-H "Authorization: Bearer jd_live_c83003a54ae0a83123454c3f7ec82f0a" \
-H "Content-Type: application/json" \
-d '{"query": "¿Cómo configuro un dominio personalizado?", "language": "es"}'
| Regola | Dettaglio |
|---|---|
| Predefinito | en (inglese). Ometti il campo, o passa null, per usare il valore predefinito. |
| Formato | BCP-47 (^[a-zA-Z]{2,3}([-_][a-zA-Z]{2,4})?$). Esempi: en, es, fr, pt-BR, zh-Hans. |
| Validazione | I valori non validi restituiscono 400 con {"error": "Invalid language code"}. |
| Tag a 3 segmenti | Non sono attualmente supportati. Codici come zh-Hant-HK e sr-Latn-RS restituiscono 400. Contatta il supporto se ti servono. |
| Progetti multilingue | Il filtro è rigoroso: vengono restituiti solo i blocchi etichettati con la lingua richiesta. Una richiesta per de su un progetto con solo inglese e francese restituisce un set di risultati vuoto, non un 400. |
| Progetti monolingue | Il filtro viene ignorato. Ottieni sempre l'intero set di risultati. Inviare language non causa errori. |
| Riportato nella risposta | Ogni risposta riuscita include un campo language con il valore risolto dal server (valore della richiesta, o il predefinito en). |
Un progetto è multilingue quando il suo docs.json contiene un array navigation.languages con due o più voci. Controlla la scheda Settings → Languages nella dashboard, o docs.json, per verificare se il sito è multilingue.
Il valore predefinito en si applica anche ai progetti che non hanno una versione inglese. Un progetto in francese e spagnolo chiamato senza un campo language filtra per en e restituisce un set di risultati vuoto. Passa sempre un language esplicito per i siti senza inglese.
Gestione degli errori
Tutte le risposte di errore includono un campo error leggibile dalla macchina su cui puoi basare la logica del programma.
| Stato | Valore di error | Significato | Azione |
|---|---|---|---|
| 400 | Missing or empty "query" field | Il corpo della richiesta manca o non ha il campo query | Aggiungi una stringa query non vuota |
| 400 | Invalid language code | Il campo language non è una stringa o non corrisponde al pattern BCP-47 (null va bene; stringhe vuote o con soli spazi e tag a 3 segmenti no) | Usa un codice valido a 1 o 2 segmenti come en, es, fr o pt-BR |
| 401 | invalid_key_format | L'intestazione Authorization manca o la chiave non corrisponde a jd_live_<32 esadecimali> | Controlla il formato dell'intestazione; deve essere Bearer jd_live_... |
| 401 | invalid_key | La chiave non è riconosciuta o è stata revocata | Genera una nuova chiave nella dashboard |
| 403 | wrong_project | La chiave è valida ma è stata generata per un altro progetto | Usa una chiave che corrisponda allo slug del progetto nell'URL |
| 429 | Rate limit exceeded | Superate le 60 richieste al minuto | Attendi il numero di secondi indicato nell'intestazione Retry-After |
| 502 | Search temporarily unavailable | Il backend di ricerca vettoriale non è disponibile | Riprova dopo una breve attesa |
| 503 | lookup_failed o redis_unavailable | Il backend di verifica delle chiavi non è raggiungibile | Riprova dopo una breve attesa |
401 e 403 sono errori permanenti. Riprovare con la stessa chiave non servirà a nulla. 429, 502 e 503 sono transitori. Riprovale con backoff esponenziale.
CORS
CORS è abilitato su tutti gli endpoint. I client basati su browser (single-page app, estensioni del browser, siti statici) possono chiamare /_api/search direttamente senza un proxy backend. Sono consentite tutte le origini.
SDK
Al momento non esistono SDK ufficiali per i linguaggi. Usa direttamente l'API REST tramite fetch, requests, curl o qualsiasi client HTTP. La collezione Postman qui sotto fornisce esempi pronti da usare.
Controllo delle versioni
L'API è attualmente alla versione v1.0.0. Le modifiche incompatibili (rinomina di campi, endpoint rimossi, autenticazione modificata) saranno annunciate sul blog Jamdesk e tramite un avviso di deprecazione nell'intestazione di risposta X-Deprecation, almeno 90 giorni prima della rimozione.
Specifica OpenAPI
La specifica OpenAPI 3.1 completa è disponibile in YAML. Importala nel tuo strumento di generazione del codice, nel client API o nella pipeline di test dei contratti.
Raccolta Postman
Pubblichiamo un workspace Postman ufficiale con la specifica OpenAPI completa e una collezione pronta da forkare. Testa le richieste nell'interfaccia Postman senza scrivere codice.
Aggiorna due variabili della collezione dopo averla forkata. Nessuna richiesta funziona finché non lo fai:
baseUrl: imposta il tuo sito di documentazione Jamdesk. Di solito èhttps://your-project.jamdesk.app(sostituisciyour-projectcon lo slug del tuo progetto). Con un dominio personalizzato, usa il tuo host. Per la documentazione sotto un sotto-percorso, includi il percorso completo (ad es.https://example.com/docs).apiKey: sostituisci il segnaposto con una chiave reale generata in Dashboard → Project Settings → API Keys.
