Jamdesk Documentation logo

Docs Search API

Busca en tu documentación Jamdesk de forma programática. Potencia chatbots, bots de Slack, búsqueda personalizada y agentes de IA con respuestas actualizadas.

La Docs Search API te da acceso programático al contenido de tu documentación mediante búsqueda semántica. Un endpoint (POST /_api/search) recibe una consulta en lenguaje natural y devuelve los pasajes más relevantes de tus docs, ordenados por relevancia.

Casos de Uso

Chatbots de Soporte

Conecta Intercom Fin, Zendesk AI o un chatbot personalizado a tus docs para que responda preguntas con contenido preciso y citado.

Bots de Slack

Crea un comando /docs en Slack que busque en tu documentación y publique los mejores resultados en cualquier canal.

Búsqueda Personalizada

Añade una interfaz de búsqueda a tu producto, dashboard o herramientas internas que muestre documentación relevante en contexto.

Agentes de IA

Proporciona a agentes de IA como Claude o GPT una herramienta que recupere documentación actualizada, no datos de entrenamiento obsoletos.

Inicio Rápido

1
Genera una clave de API

Ve a Project Settings → API Keys en el dashboard de Jamdesk. Haz clic en Generate Key, asígnale un nombre y copia la clave. Comienza con jd_live_ seguido de 32 caracteres hexadecimales (40 caracteres en total) y solo se muestra una vez.

2
Realiza tu primera solicitud de búsqueda

Envía una solicitud POST a /_api/search en el subdominio de tus docs:

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"}'
3
Usa los resultados

La respuesta devuelve un array de pasajes coincidentes con puntuaciones de relevancia y metadatos de página:

{
  "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
}

Autenticación

Todas las solicitudes requieren un token Bearer en el encabezado Authorization.

Authorization: Bearer jd_live_c83003a54ae0a83123454c3f7ec82f0a

Generación de Claves de API

1
Abre Project Settings

En el dashboard de Jamdesk, navega a tu proyecto y haz clic en Settings.

2
Ve a API Keys

Selecciona la pestaña API Keys.

3
Crea una clave

Haz clic en Generate Key, introduce un nombre descriptivo (p. ej., "Intercom chatbot") y haz clic en Create.

4
Copia la clave

Copia la clave inmediatamente. Comienza con jd_live_ seguido de 32 caracteres hexadecimales y se muestra solo una vez. Guárdala en tu gestor de secretos o en variables de entorno.

Gestión de Claves

Las claves de API están limitadas a un único proyecto. Una clave para acme.jamdesk.app no puede consultar la documentación de otro proyecto.

ReglaDetalle
Formatojd_live_<32 hex chars> (40 caracteres en total, sin expiración)
AlcanceUna clave por proyecto (no puede acceder a otros proyectos)
RotaciónRevoca y regenera en cualquier momento desde Project Settings
AlmacenamientoGuarda en variables de entorno o un gestor de secretos; nunca la incluyas en el control de versiones

Revocación de Claves

Para revocar una clave, ve a Project Settings → API Keys, localiza la clave por nombre y haz clic en Revoke. Las claves revocadas dejan de funcionar de inmediato. Genera una nueva clave para reemplazarla.

Límites de Velocidad

Las solicitudes tienen límite de velocidad por clave de API.

PlanLímite
Pro60 solicitudes / minuto
EnterprisePersonalizado; contacta con soporte

Cuando superas el límite, la API devuelve 429 Too Many Requests con un encabezado Retry-After: 60 y {"error": "Rate limit exceeded"} en el cuerpo.

Si necesitas límites de velocidad más altos para una integración en producción, contáctanos para hablar sobre las opciones Enterprise.

Límites de Consulta

Cada solicitud acepta un parámetro limit que controla cuántos resultados devolver. El máximo es 20, el valor predeterminado es 5 y el mínimo es 1. No hay paginación; todos los resultados coincidentes se devuelven en una sola respuesta. Si necesitas más contexto, prueba una consulta más específica en lugar de aumentar el límite.

Una consulta sin coincidencias devuelve HTTP 200 con un array de resultados vacío:

{"query": "quantum entanglement", "results": [], "total": 0, "durationMs": 48}

Filtrado por Idioma

Si tu sitio de docs admite varios idiomas, la API filtra los resultados a un único idioma por solicitud. Pasa language en el cuerpo de la solicitud con un código BCP-47 (p. ej., 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"}'
ReglaDetalle
Predeterminadoen (inglés). Omite el campo, o pasa null, para usar el valor predeterminado.
FormatoBCP-47 (^[a-zA-Z]{2,3}([-_][a-zA-Z]{2,4})?$). Ejemplos: en, es, fr, pt-BR, zh-Hans.
ValidaciónLos valores con formato incorrecto devuelven 400 con {"error": "Invalid language code"}.
Etiquetas de 3 segmentosNo admitidas actualmente. Códigos como zh-Hant-HK y sr-Latn-RS devuelven 400. Contacta con soporte si los necesitas.
Proyectos multilingüesEl filtro es estricto: solo se devuelven fragmentos etiquetados con el idioma solicitado. Una solicitud para de en un proyecto que solo tiene inglés y francés devuelve un conjunto de resultados vacío, no un 400.
Proyectos de un solo idiomaEl filtro se ignora; siempre obtienes el conjunto de resultados completo. Enviar language no genera un error.
Incluido en la respuestaCada respuesta exitosa incluye un campo language con el valor que el servidor resolvió (valor de la solicitud o predeterminado en).

Un proyecto es multilingüe cuando su docs.json tiene un array navigation.languages con dos o más entradas. Para comprobar si tu sitio es multilingüe, abre la pestaña Settings → Languages en el dashboard, o abre docs.json directamente.

El valor predeterminado en se aplica incluso en proyectos que no tienen versión en inglés. Si tu proyecto multilingüe tiene, por ejemplo, solo francés y español, llamar al endpoint sin un campo language filtrará por en y devolverá un conjunto de resultados vacío. Pasa siempre un language explícito en sitios que no sean exclusivamente en inglés.

Manejo de Errores

Todas las respuestas de error incluyen un campo error legible por máquina sobre el que puedes ramificar programáticamente.

EstadoValor de errorSignificadoAcción
400Missing or empty "query" fieldEl cuerpo de la solicitud falta o no tiene queryAñade una cadena query no vacía
400Invalid language codeEl campo language no es una cadena o no coincide con el patrón BCP-47 (null es válido; cadenas vacías/de espacios en blanco y etiquetas de 3 segmentos no lo son)Usa un código de 1 o 2 segmentos válido como en, es, fr o pt-BR
401invalid_key_formatEl encabezado Authorization falta o la clave no coincide con jd_live_<32 hex>Verifica el formato del encabezado; debe ser Bearer jd_live_...
401invalid_keyLa clave no se reconoce o ha sido revocadaGenera una nueva clave en el dashboard
403wrong_projectLa clave es válida pero fue generada para un proyecto diferenteUsa una clave que coincida con el slug del proyecto en la URL
429Rate limit exceededSe superaron las 60 solicitudes por minutoEspera el número de segundos indicado en el encabezado Retry-After
502Search temporarily unavailableEl backend de búsqueda vectorial no está disponibleReintenta después de un breve retroceso exponencial
503lookup_failed o redis_unavailableEl backend de verificación de claves no está disponibleReintenta después de un breve retroceso exponencial

Los errores 401 y 403 son fallos permanentes. Reintentar con la misma clave no ayudará. Los errores 429, 502 y 503 son transitorios, por lo que reintenta con retroceso exponencial.

CORS

CORS está habilitado en todos los endpoints. Los clientes basados en navegador (aplicaciones de página única, extensiones de navegador, sitios estáticos) pueden llamar a /_api/search directamente sin un proxy backend. Se permiten todos los orígenes.

SDKs

Actualmente no hay SDKs oficiales para ningún lenguaje. Usa la REST API directamente mediante fetch, requests, curl o cualquier cliente HTTP. La colección de Postman que se muestra a continuación ofrece ejemplos listos para clonar.

Versionado

La API se encuentra actualmente en v1.0.0. Los cambios incompatibles (renombrado de campos, endpoints eliminados, cambios de autenticación) se anunciarán a través del blog de Jamdesk y un aviso de obsolescencia en el encabezado de respuesta X-Deprecation al menos 90 días antes de su eliminación.

Especificación OpenAPI

La especificación completa OpenAPI 3.1 está disponible en YAML. Impórtala en tu herramienta de generación de código, cliente de API o pipeline de pruebas de contrato.

Descargar OpenAPI YAML

docs-search-api.yaml — OpenAPI 3.1, siempre sincronizado con la última versión publicada.

Ver en GitHub

Lee el código fuente de la especificación, abre issues o sigue los cambios.

Colección de Postman

Publicamos un workspace oficial de Postman con la especificación OpenAPI completa y una colección lista para clonar, para que puedas probar solicitudes en la interfaz de Postman sin escribir código.

Workspace Jamdesk Docs API

Clona la colección y ejecuta solicitudes en Postman. Incluye una carpeta de inicio y ejemplos funcionales.

Todas las APIs de Jamdesk

Explora todos los workspaces públicos de API de Jamdesk y mantente al día cuando se publiquen nuevas APIs.

Después de clonar la colección, debes actualizar dos variables de la colección antes de que cualquier solicitud funcione:

  • baseUrl: establécela en tu propio sitio de docs de Jamdesk. Para la mayoría de los clientes es https://your-project.jamdesk.app (reemplaza your-project con el slug de tu proyecto). Los clientes con dominio personalizado usan su propio host. Los clientes que sirven docs bajo una subruta incluyen la ruta completa (p. ej., https://example.com/docs).
  • apiKey: reemplaza el marcador de posición con una clave real generada en Dashboard → Project Settings → API Keys.

Próximos Pasos

Endpoint de Búsqueda

Referencia completa con esquemas de solicitud/respuesta y playground interactivo

Guías de Integración

Guías paso a paso para Intercom, Zendesk, bots de Slack y chatbots personalizados