API Reference
Complete REST API for Lunexa search-as-a-service. Every endpoint can be tested live with your API key.
Authentication
All API requests must include your API key.
Pass your key via the X-LUNEXA-API-KEY header or as a Authorization: Bearer <key> header. API keys are scoped to a single project and carry action permissions (e.g. documents:search).
curl https://api.ailunexa.com/api/v1/orgs/{org}/projects/{project}/collections \
-H "X-LUNEXA-API-KEY: lnx_your_key_here"Base URL
All endpoints are relative to:
https://api.ailunexa.com/api/v1Every resource endpoint uses the pattern: /orgs/{orgSlug}/projects/{projectSlug}/...
Error Handling
Errors return JSON with an error field:
{
"error": "api key does not have the required scope: documents:create"
}| Status | Meaning |
|---|---|
| 400 | Bad request — invalid body or parameters |
| 401 | Unauthorized — missing or invalid API key |
| 403 | Forbidden — key lacks required scope or project access |
| 404 | Resource not found |
| 429 | Rate limit exceeded |
Collections
Collections are search indexes. Create a collection with a schema, then add documents to it.
Create Collection
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collectionsScope: collections:createCreates a new collection with the given schema. Fields define the structure of documents you'll index.
| Field | Type | Description |
|---|---|---|
name* | string | Collection name (must be unique within the project) |
fields* | array | Array of field objects with name, type, and optional facet, index, optional |
default_sorting_field | string | Field to sort by when no sort is specified |
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collectionsList Collections
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collectionsScope: collections:readReturns all collections in the project.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collectionsGet Collection
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}Scope: collections:readReturns a single collection's schema and metadata.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}Update Collection
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}Scope: collections:updateUpdate a collection's schema — add or modify fields.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}Delete Collection
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}Scope: collections:deletePermanently deletes a collection and all its documents.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}Documents
Documents are the records stored in a collection. Create, read, update, delete, import, and export.
Create Document
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documentsScope: documents:createIndex a single document. Fields must match the collection schema.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documentsGet Document
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/{docId}Scope: documents:searchRetrieve a single document by its ID.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/{docId}Upsert Document
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/{docId}Scope: documents:updateCreate or replace a document. If the document exists, it is fully replaced.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/{docId}Update Document
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/{docId}Scope: documents:updatePartially update a document. Only provided fields are changed.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/{docId}Delete Document
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/{docId}Scope: documents:deletePermanently delete a document by ID.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/{docId}Import Documents
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/importScope: documents:importBulk import documents in JSONL format (one JSON object per line). Supports upsert, create, update, and delete actions.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/importExport Documents
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/exportScope: documents:exportExport all documents as JSONL (newline-delimited JSON).
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/documents/exportSearch
Full-text search with filtering, sorting, and pagination.
Search Documents
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/searchScope: documents:search| Field | Type | Description |
|---|---|---|
q* | string | Search query. Use * for all documents. |
query_by* | string | Comma-separated list of fields to search in |
filter_by | string | Filter expression, e.g. price:>50 && category:Electronics |
sort_by | string | Sort expression, e.g. price:desc |
page | integer | Page number (default: 1) |
per_page | integer | Results per page (default: 20) |
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/searchMulti-Search
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/multi-searchScope: multi_searchExecute multiple search queries in a single request across different collections.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/multi-searchGenerate Scoped Search Key
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/search-keyScope: documents:searchGenerate a temporary, scoped search key safe for frontend use. Expires after 1 hour.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/search-keySynonyms
Define synonyms so users find results regardless of the exact term they search for.
List Synonyms
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/synonymsScope: synonyms:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/synonymsUpsert Synonym
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/synonyms/{synonymId}Scope: synonyms:manageCreate or update a synonym rule. Use synonyms for multi-way synonyms or root + synonyms for one-way.
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/synonyms/{synonymId}Get Synonym
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/synonyms/{synonymId}Scope: synonyms:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/synonyms/{synonymId}Delete Synonym
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/synonyms/{synonymId}Scope: synonyms:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/synonyms/{synonymId}Curations (Overrides)
Pin or hide specific documents for certain search queries.
List Overrides
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/overridesScope: curations:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/overridesUpsert Override
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/overrides/{overrideId}Scope: curations:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/overrides/{overrideId}Get Override
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/overrides/{overrideId}Scope: curations:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/overrides/{overrideId}Delete Override
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/overrides/{overrideId}Scope: curations:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/collections/{collectionName}/overrides/{overrideId}Aliases
Point an alias name to a collection for zero-downtime reindexing.
List Aliases
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/aliasesScope: aliases:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/aliasesUpsert Alias
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/aliases/{aliasName}Scope: aliases:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/aliases/{aliasName}Get Alias
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/aliases/{aliasName}Scope: aliases:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/aliases/{aliasName}Delete Alias
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/aliases/{aliasName}Scope: aliases:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/aliases/{aliasName}Stopwords
Manage stopword sets to exclude common words from search indexing.
List Stopword Sets
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/stopwordsScope: stopwords:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/stopwordsUpsert Stopword Set
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/stopwords/{setId}Scope: stopwords:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/stopwords/{setId}Delete Stopword Set
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/stopwords/{setId}Scope: stopwords:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/stopwords/{setId}Presets
Save and reuse search parameter presets.
List Presets
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/presetsScope: presets:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/presetsUpsert Preset
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/presets/{presetName}Scope: presets:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/presets/{presetName}Delete Preset
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/presets/{presetName}Scope: presets:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/presets/{presetName}Analytics Rules
Configure analytics rules to track popular queries, no-result queries, and click events.
List Analytics Rules
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/analytics/rulesScope: analytics:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/analytics/rulesUpsert Analytics Rule
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/analytics/rules/{ruleName}Scope: analytics:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/analytics/rules/{ruleName}Delete Analytics Rule
/api/v1/orgs/{orgSlug}/projects/{projectSlug}/analytics/rules/{ruleName}Scope: analytics:manage/api/v1/orgs/{orgSlug}/projects/{projectSlug}/analytics/rules/{ruleName}