LM-Kit OneDocs2026.8.10lm-kit.com
Search

Tenants

Provisions a new tenant and returns its id.#

POST/lmkit/v1/search/tenants

The 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 ·

PropertyTypeDescription
cluster_idstring

The search cluster to create the tenant in. If not provided, the default cluster is used.

display_namestring

Optional human-readable name for the tenant.

embedding_modelstring

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_ocrboolean

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_rejectionboolean
enable_full_text_searchboolean

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_searchboolean

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_modelstring

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_modelstring

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

StatusTypeDescription
201

Created

404

Not Found

503application/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.#

GET/lmkit/v1/search/clusters/{clusterId}/tenants

Parameters

NameInTypeDescription
clusterIdrequiredpathstring

Responses

StatusTypeDescription
200[]

OK

404

Not Found

503application/json

Service Unavailable

curl -X GET "$LMKIT_ONE_URL/lmkit/v1/search/clusters/$CLUSTERID/tenants" \
  -H "Authorization: Bearer $LMKIT_API_KEY"

Gets a tenant.#

GET/lmkit/v1/search/clusters/{clusterId}/tenants/{tenantId}

Parameters

NameInTypeDescription
clusterIdrequiredpathstring
tenantIdrequiredpathstring (uuid)

Responses

StatusTypeDescription
200

OK

404

Not Found

503application/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).#

PUT/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

NameInTypeDescription
clusterIdrequiredpathstring
tenantIdrequiredpathstring (uuid)

Request body

application/json ·

PropertyTypeDescription
embedding_modelstring

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_ocrboolean

Whether the tenant runs OCR while extracting scanned pages and images during indexing. Null or omitted leaves it unchanged.

ocr_noise_rejectionboolean
enable_full_text_searchboolean

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_searchboolean

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_modelstring

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_modelstring

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

StatusTypeDescription
200

OK

400

Bad Request

404

Not Found

503application/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.#

DELETE/lmkit/v1/search/clusters/{clusterId}/tenants/{tenantId}

Parameters

NameInTypeDescription
clusterIdrequiredpathstring
tenantIdrequiredpathstring (uuid)

Responses

StatusTypeDescription
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.#

POST/lmkit/v1/search/clusters/{clusterId}/tenants/{tenantId}/promote

Optional 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

NameInTypeDescription
clusterIdrequiredpathstring
tenantIdrequiredpathstring (uuid)

Responses

StatusTypeDescription
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.#

POST/lmkit/v1/search/clusters/{clusterId}/tenants/{tenantId}/demote

Reverses 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

NameInTypeDescription
clusterIdrequiredpathstring
tenantIdrequiredpathstring (uuid)

Responses

StatusTypeDescription
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"