API Endpoints Reference
This page lists every public SearchJet API endpoint in one place. All paths are relative to the base URL below. For parameters, request bodies and response fields, see the REST API Reference.
Base URL
https://app.searchjetengine.com/api/v1
The /api prefix is required. Paths without it, such as https://app.searchjetengine.com/v1/search, return 404.
Authentication
Authorization: Bearer YOUR_PUBLIC_KEY # search and MCP
Authorization: Bearer YOUR_PRIVATE_KEY # everything else
Accept: application/json
- Public search key: search-only, safe in browsers. It's shown on the dashboard's Sites list as "Public Key".
- Private key: 32 characters, created under Sites → API Keys and shown once. Keep it on your server.
Never put a key in the query string. See API Key Setup.
All endpoints
| Method | Path | Key | Purpose |
|---|---|---|---|
GET |
/search |
Public | Search your index. CORS is enabled, so browsers can call it. |
POST |
/mcp/{publicKey} |
Public key in the URL path | MCP server (JSON-RPC 2.0) with a search tool. Pro and above. |
POST |
/index/bulk |
Private | Add or replace documents |
PATCH |
/index/bulk |
Private | Merge fields into existing documents |
DELETE |
/index/delete |
Private | Delete by id, or by ids (max 500) |
POST |
/index/delete-batch |
Private | Delete by an ids array or a filter expression |
GET |
/index/tasks/{taskUid} |
Private | Check the status of an indexing or delete task |
GET |
/index/count |
Private | Number of documents in your index |
GET |
/index/{id} |
Private | Fetch one stored document |
GET |
/search-analytics |
Private | Top queries, zero-result queries, total searches, daily volume |
POST |
/search-analytics |
Private | Record search logs (one at a time, or up to 100 per batch) |
POST |
/analytics/click |
Private | Record a click on a search result |
POST |
/ai/generate |
Private | Queue an AI text generation from a prompt |
GET |
/ai/status/{id} |
Private | Get an AI generation result |
GET |
/client-info |
Public or private | Plan, public key and usage limits for the key's site |
Every endpoint except /search and /mcp takes the private key. That includes analytics and click tracking, so call those from your own server, never from browser code.
Quick examples
Search (browser or server):
curl -G "https://app.searchjetengine.com/api/v1/search" \
-H "Authorization: Bearer $SEARCHJET_PUBLIC_KEY" \
-H "Accept: application/json" \
--data-urlencode "q=getting started"
Index (server only):
curl -X POST "https://app.searchjetengine.com/api/v1/index/bulk" \
-H "Authorization: Bearer $SEARCHJET_PRIVATE_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"documents": [{"id": "doc-123", "title": "Page Title", "url": "https://example.com/page"}]}'
Delete (server only):
curl -X DELETE "https://app.searchjetengine.com/api/v1/index/delete" \
-H "Authorization: Bearer $SEARCHJET_PRIVATE_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"id": "doc-123"}'
Indexing and delete requests are asynchronous. Each one returns a task id, which you can poll with GET /index/tasks/{taskUid}. See the Index Management API.
Rate limits at a glance
- Per client IP: 30 requests per minute on most routes.
client-infoandai/generateallow 20 per minute, andindex/tasksandai/statusallow 60. One counter is shared across all routes for the same IP. - Per private key: plan limits apply on top. Free allows 10 requests per minute, Pro 60, Growth 300 and Enterprise 1,000.
- Monthly search quota: when it runs out, search returns
429 QUOTA_EXCEEDED.
Details: Rate Limits & Quotas.
See also
- REST API Reference: parameters and response fields
- Search API Deep Dive
- Error Handling