Tenants
Provisions a new tenant and returns its id.#
/lmkit/v1/search/tenantsThe server generates the tenant id and returns it. Use it to create collections, index documents, and search on behalf of this tenant.
Request body
application/json ·
| Property | Type | Description |
|---|---|---|
cluster_id | string | The search cluster to create the tenant in. If not provided, the default cluster is used. |
display_name | string | Optional human-readable name for the tenant. |
embedding_model | string | Optional embedding model for the tenant: one of the cluster's model catalog, by default 'embeddinggemma-300m', 'qwen3-embedding:0.6b', 'qwen3-embedding:4b', 'qwen3-embedding:8b', or 'harrier-oss:0.6b'. The model is a tenant-wide property: every collection that enables semantic search is embedded with it. Omit to provision a full-text-only tenant; set or change it later via the embedding-model endpoint. |
enable_ocr | boolean | Whether the tenant runs OCR while extracting scanned pages and images. Defaults to true. Tenant-wide and applied to newly indexed documents; change it later via the tenant update endpoint. |
ocr_noise_rejection | boolean | |
enable_full_text_search | boolean | Whether the tenant's collections support full-text (word-based) search. Defaults to true. Tenant-wide, so every collection shares it. A tenant must keep at least one search mode enabled. |
enable_semantic_search | boolean | Whether the tenant's collections support semantic (meaning-based) search. Defaults to false. Tenant-wide; enabling it embeds documents with the tenant's embedding model. A tenant must keep at least one search mode enabled. |
normalization | Optional text-normalization options (case / accent / unicode / punctuation folding), applied to every collection. Omit for the defaults (case-insensitive, accent-sensitive); change it later via the tenant update endpoint. | |
rerank_model | string | Optional reranking model for the tenant, for example 'bge-m3-reranker'. The model is a tenant-wide property used by the optional second-stage reranking pass (a search request with 'rerank' set), which re-scores candidates by direct query-document relevance to lift precision in every mode. Omit to leave the tenant without a reranker; set or change it later via the tenant update endpoint. |
query_model | string | Optional query-understanding model for the tenant: the small local LLM used by search requests with a 'query_mode' beyond Original (contextual rewriting, multi-query expansion, HyDE). A small instruct model (1B class) keeps the added latency low. Omit to leave the tenant without a query model (such requests then degrade to the original query); set or change it later via the tenant update endpoint. |
Responses
| Status | Type | Description |
|---|---|---|
| 201 | Created | |
| 404 | Not Found | |
| 503 | application/json | Service Unavailable |
curl -X POST "$LMKIT_ONE_URL/lmkit/v1/search/tenants" \
-H "Authorization: Bearer $LMKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"cluster_id": "string",
"display_name": "",
"embedding_model": "string",
"enable_ocr": true
}'Lists the tenants in a cluster.#
/lmkit/v1/search/clusters/{clusterId}/tenantsParameters
| Name | In | Type | Description |
|---|---|---|---|
clusterIdrequired | path | string |
Responses
| Status | Type | Description |
|---|---|---|
| 200 | [] | OK |
| 404 | Not Found | |
| 503 | application/json | Service Unavailable |
curl -X GET "$LMKIT_ONE_URL/lmkit/v1/search/clusters/$CLUSTERID/tenants" \
-H "Authorization: Bearer $LMKIT_API_KEY"Gets a tenant.#
/lmkit/v1/search/clusters/{clusterId}/tenants/{tenantId}Parameters
| Name | In | Type | Description |
|---|---|---|---|
clusterIdrequired | path | string | |
tenantIdrequired | path | string (uuid) |
Responses
| Status | Type | Description |
|---|---|---|
| 200 | OK | |
| 404 | Not Found | |
| 503 | application/json | Service Unavailable |
curl -X GET "$LMKIT_ONE_URL/lmkit/v1/search/clusters/$CLUSTERID/tenants/$TENANTID" \
-H "Authorization: Bearer $LMKIT_API_KEY"Updates a tenant's configuration (embedding model, OCR, search modes, normalization).#
/lmkit/v1/search/clusters/{clusterId}/tenants/{tenantId}Updates the tenant's settings in one call. Every setting is tenant-wide and shared by all the tenant's collections. This replaces the configuration as a whole, so send the full desired state. Changes that affect indexed documents are applied in the background and search keeps working: changing the embedding model (or turning semantic on) re-embeds documents, and changing normalization re-indexes full text. An empty embedding model clears semantic capability and drops vector data. A tenant must keep at least one search mode enabled.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
clusterIdrequired | path | string | |
tenantIdrequired | path | string (uuid) |
Request body
application/json ·
| Property | Type | Description |
|---|---|---|
embedding_model | string | The tenant's embedding model: one of the cluster's model catalog, by default 'embeddinggemma-300m', 'qwen3-embedding:0.6b', 'qwen3-embedding:4b', 'qwen3-embedding:8b', or 'harrier-oss:0.6b'. Null or omitted leaves the current model unchanged; the model is never cleared through this call. |
enable_ocr | boolean | Whether the tenant runs OCR while extracting scanned pages and images during indexing. Null or omitted leaves it unchanged. |
ocr_noise_rejection | boolean | |
enable_full_text_search | boolean | Whether the tenant's collections support full-text search. Null or omitted leaves it unchanged. A tenant must keep at least one search mode enabled. |
enable_semantic_search | boolean | Whether the tenant's collections support semantic search (requires an embedding model). Null or omitted leaves it unchanged. A tenant must keep at least one search mode enabled. |
normalization | Text-normalization options (case / accent / unicode / punctuation folding). Null or omitted leaves them unchanged. | |
rerank_model | string | The tenant's reranking model (for example 'bge-m3-reranker'), used by the optional second-stage reranking pass. Null or omitted leaves it unchanged; send an empty string to clear it (the tenant then has no reranker). |
query_model | string | The tenant's query-understanding model: the small local LLM used by search requests with a 'query_mode' beyond Original (contextual rewriting, multi-query expansion, HyDE). Null or omitted leaves it unchanged; send an empty string to clear it (such requests then degrade to the original query). |
Responses
| Status | Type | Description |
|---|---|---|
| 200 | OK | |
| 400 | Bad Request | |
| 404 | Not Found | |
| 503 | application/json | Service Unavailable |
curl -X PUT "$LMKIT_ONE_URL/lmkit/v1/search/clusters/$CLUSTERID/tenants/$TENANTID" \
-H "Authorization: Bearer $LMKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"embedding_model": "string",
"enable_ocr": false,
"ocr_noise_rejection": false,
"enable_full_text_search": false
}'Offboards a tenant, deleting all of its indexed data.#
/lmkit/v1/search/clusters/{clusterId}/tenants/{tenantId}Parameters
| Name | In | Type | Description |
|---|---|---|---|
clusterIdrequired | path | string | |
tenantIdrequired | path | string (uuid) |
Responses
| Status | Type | Description |
|---|---|---|
| 204 | No Content | |
| 404 | Not Found | |
| 503 | Service Unavailable |
curl -X DELETE "$LMKIT_ONE_URL/lmkit/v1/search/clusters/$CLUSTERID/tenants/$TENANTID" \
-H "Authorization: Bearer $LMKIT_API_KEY"Gives a large tenant its own dedicated vector index partition.#
/lmkit/v1/search/clusters/{clusterId}/tenants/{tenantId}/promoteOptional scaling step for high-volume tenants. By default a tenant's semantic-search vectors share a pooled index with other small tenants. This moves the tenant's vectors into a dedicated partition, so its vector (nearest-neighbor) index holds only its own data, which keeps semantic search fast and accurate as the tenant's document count grows. Apply it before bulk-indexing a large tenant. It has no effect on small tenants and is never required for correctness.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
clusterIdrequired | path | string | |
tenantIdrequired | path | string (uuid) |
Responses
| Status | Type | Description |
|---|---|---|
| 204 | No Content | |
| 404 | Not Found | |
| 503 | Service Unavailable |
curl -X POST "$LMKIT_ONE_URL/lmkit/v1/search/clusters/$CLUSTERID/tenants/$TENANTID/promote" \
-H "Authorization: Bearer $LMKIT_API_KEY"Returns a tenant from its dedicated vector index partition to the shared pool.#
/lmkit/v1/search/clusters/{clusterId}/tenants/{tenantId}/demoteReverses promotion: moves the tenant's semantic-search vectors back into the shared pool and drops its dedicated partition. Vectors are preserved (no re-embedding). A no-op for a tenant that was never promoted.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
clusterIdrequired | path | string | |
tenantIdrequired | path | string (uuid) |
Responses
| Status | Type | Description |
|---|---|---|
| 204 | No Content | |
| 404 | Not Found | |
| 503 | Service Unavailable |
curl -X POST "$LMKIT_ONE_URL/lmkit/v1/search/clusters/$CLUSTERID/tenants/$TENANTID/demote" \
-H "Authorization: Bearer $LMKIT_API_KEY"