Jamdesk Documentation logo

Docs Search API

Search your Jamdesk documentation programmatically with the Docs Search API. Power support chatbots, Slack bots, custom search, and AI agents with accurate, up-to-date answers from your docs.

The Docs Search API gives you programmatic access to your documentation content via semantic search. One endpoint (POST /_api/search) takes a natural language query and returns the most relevant passages from your docs, ranked by relevance.

Use Cases

Support Chatbots

Connect Intercom Fin, Zendesk AI, or a custom chatbot to your docs so it answers questions with accurate, cited content.

Slack Bots

Build a /docs Slack command that searches your documentation and posts the top results to any channel.

Custom Search

Add a search interface to your product, dashboard, or internal tools that surfaces relevant docs in context.

AI Agents

Give AI agents like Claude or GPT a tool that retrieves up-to-date documentation, not stale training data.

Quick Start

1
Generate an API key

Go to Project Settings → API Keys in the Jamdesk dashboard. Click Generate Key, give it a name, and copy the key. It starts with jd_live_ followed by 32 hex characters (40 chars total) and is only shown once.

2
Make your first search request

Send a POST request to /_api/search on your docs subdomain:

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}'
3
Use the results

The response returns an array of matching passages with relevance scores and page metadata:

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

Authentication

All requests require a Bearer token in the Authorization header.

Authorization: Bearer jd_live_c83003a54ae0a83123454c3f7ec82f0a

Generating API Keys

1
Open Project Settings

In the Jamdesk dashboard, navigate to your project and click Settings.

2
Go to API Keys

Select the API Keys tab.

3
Create a key

Click Generate Key, enter a descriptive name (e.g. "Intercom chatbot"), and click Create.

4
Copy the key

Copy the key immediately. It starts with jd_live_ followed by 32 hex characters and is shown only once. Store it in your secrets manager or environment variables.

Key Management

API keys are scoped to a single project. A key for acme.jamdesk.app cannot query a different project's documentation.

RuleDetail
Formatjd_live_<32 hex chars> (40 chars total, never expires)
ScopeOne key per project (cannot access other projects)
RotationRevoke and regenerate anytime from Project Settings
StorageStore in environment variables or a secrets manager; never commit to source control

Revoking Keys

To revoke a key, go to Project Settings → API Keys, find the key by name, and click Revoke. Revoked keys stop working immediately. Generate a new key to replace it.

Rate Limits

Requests are rate-limited per API key.

PlanLimit
Pro60 requests / minute
EnterpriseCustom; contact support

When you exceed the limit, the API returns 429 Too Many Requests with a Retry-After: 60 header and {"error": "Rate limit exceeded"} in the body.

If you need higher rate limits for a production integration, contact us to discuss Enterprise options.

Query Limits

Each request accepts a limit parameter controlling how many results to return. The maximum is 20, the default is 5, and the minimum is 1. There is no pagination; all matching results come back in a single response. If you need more context, try a more specific query rather than increasing the limit.

A query with no matches returns HTTP 200 with an empty results array:

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

Error Handling

All error responses include a machine-readable error field you can branch on programmatically.

Statuserror valueMeaningAction
400Missing or empty "query" fieldRequest body is missing or has no queryAdd a non-empty query string
401invalid_key_formatAuthorization header is missing or the key doesn't match jd_live_<32 hex>Check the header format; it must be Bearer jd_live_...
401invalid_keyKey is not recognised or has been revokedGenerate a new key in the dashboard
403wrong_projectKey is valid but was generated for a different projectUse a key that matches the project slug in the URL
429Rate limit exceededExceeded 60 requests per minuteWait the number of seconds in the Retry-After header
502Search temporarily unavailableVector search backend is downRetry after a short backoff
503lookup_failed or redis_unavailableKey verification backend is unreachableRetry after a short backoff

401 and 403 are permanent failures. Retrying with the same key won't help. 429, 502, and 503 are transient, so retry with exponential backoff.

CORS

CORS is enabled on all endpoints. Browser-based clients (single-page apps, browser extensions, static sites) can call /_api/search directly without a backend proxy. All origins are allowed.

SDKs

There are no official language SDKs at this time. Use the REST API directly via fetch, requests, curl, or any HTTP client. The Postman collection below provides ready-to-fork examples.

Versioning

The API is currently at v1.0.0. Breaking changes (field renames, removed endpoints, changed auth) will be announced via the Jamdesk blog and a deprecation notice in the X-Deprecation response header at least 90 days before removal.

Postman Collection

We publish an official Postman workspace with the full OpenAPI spec and a ready-to-fork collection so you can test requests in the Postman UI without writing any code.

Jamdesk Docs API workspace

Fork the collection and run requests in Postman. Includes a Getting Started folder and working examples.

All Jamdesk APIs

Browse every public Jamdesk API workspace and stay current as new APIs ship.

After forking the collection, you must update two collection variables before any request will work:

  • baseUrl: set to your own Jamdesk docs site. For most customers this is https://your-project.jamdesk.app (replace your-project with your project slug). Custom-domain customers use their own host. Customers serving docs under a sub-path include the full path (e.g. https://example.com/docs).
  • apiKey: replace the placeholder with a real key generated in Dashboard → Project Settings → API Keys.

Next Steps

Search Endpoint

Full reference with request/response schemas and interactive playground

Integration Guides

Step-by-step guides for Intercom, Zendesk, Slack bots, and custom chatbots