Ollama · Models
Uploads a blob under its content digest.#
/api/blobs/{digest}Ollama-compatible blob push: the raw request body streams into content-addressed storage and is hashed as it lands; a body whose SHA-256 does not match the declared digest is rejected and leaves nothing behind. Pushed blobs become model artifacts through POST /api/create's files and adapters maps. The request-size ceiling is the server's configured maximum upload size.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
digestrequired | path | string | The content digest, sha256: |
Responses
| Status | Type | Description |
|---|---|---|
| 201 | Created | |
| 400 | Bad Request |
curl -X POST "$LMKIT_ONE_URL/api/blobs/$DIGEST" \
-H "Authorization: Bearer $LMKIT_API_KEY"Checks whether a blob exists, by content digest.#
/api/blobs/{digest}Ollama-compatible blob probe. Clients (the ollama CLI included) HEAD each file digest before creating a model and push only the blobs this server lacks.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
digestrequired | path | string | The content digest, sha256: |
Responses
| Status | Type | Description |
|---|---|---|
| 200 | OK | |
| 404 | Not Found |
curl -X HEAD "$LMKIT_ONE_URL/api/blobs/$DIGEST" \
-H "Authorization: Bearer $LMKIT_API_KEY"Lists the models this server can serve, in the Ollama tags shape.#
/api/tagsOllama-compatible model listing. Returns the same catalog the OpenAI-compatible /v1/models endpoint exposes, shaped as Ollama tags entries. Models are downloaded on demand at first use, so entries without a local copy are listed too; those omit modified_at.
Responses
| Status | Type | Description |
|---|---|---|
| 200 | OK |
curl -X GET "$LMKIT_ONE_URL/api/tags" \
-H "Authorization: Bearer $LMKIT_API_KEY"Describes one model, in the Ollama show shape.#
/api/showOllama-compatible model details: structural details, architecture metadata and the capability vocabulary (completion, tools, vision, embedding, thinking). The modelfile, parameters and template fields exist for wire compatibility; LM-Kit models are not built from Modelfiles.
Request body
application/json ·
| Property | Type | Description |
|---|---|---|
model | string | The model identifier to describe. |
name | string | Legacy alias of model; used when model is absent. |
verbose | boolean | Request full metadata dumps. Accepted for wire compatibility. |
Responses
| Status | Type | Description |
|---|---|---|
| 200 | OK | |
| 404 | Not Found |
curl -X POST "$LMKIT_ONE_URL/api/show" \
-H "Authorization: Bearer $LMKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "string",
"name": "string",
"verbose": false
}'Lists the models currently loaded in memory, in the Ollama ps shape.#
/api/psOllama-compatible running-model listing. expires_at is omitted: residency is governed by the server's memory-pressure policy, not a keep-alive timer.
Responses
| Status | Type | Description |
|---|---|---|
| 200 | OK |
curl -X GET "$LMKIT_ONE_URL/api/ps" \
-H "Authorization: Bearer $LMKIT_API_KEY"Returns the server version, in the Ollama version shape.#
/api/versionReports the LM-Kit One version. Clients use this endpoint as a liveness probe.
Responses
| Status | Type | Description |
|---|---|---|
| 200 | OK |
curl -X GET "$LMKIT_ONE_URL/api/version" \
-H "Authorization: Bearer $LMKIT_API_KEY"Downloads a model, in the Ollama pull shape.#
/api/pullOllama-compatible model download. Streams newline-delimited progress objects (status, digest, total, completed) and ends with {"status":"success"}; with stream: false, blocks and returns the terminal object. Pullable names are LM-Kit catalog models and Hugging Face references (hf.co/owner/repo[:quant]), which import as custom models through the server's egress policy with hub-declared digests verified while downloading. The download joins any in-flight download of the same model and continues server-side if the client disconnects.
Request body
application/json ·
| Property | Type | Description |
|---|---|---|
model | string | The model identifier to download. |
name | string | Legacy alias of model; used when model is absent. |
insecure | boolean | Allow insecure registry connections. Accepted for wire compatibility; LM-Kit models are always fetched from their catalog source over HTTPS. |
stream | boolean | Whether to stream progress as newline-delimited JSON. Defaults to true. |
Responses
| Status | Type | Description |
|---|---|---|
| 200 | OK | |
| 404 | Not Found | |
| 500 | application/json | Internal Server Error |
curl -X POST "$LMKIT_ONE_URL/api/pull" \
-H "Authorization: Bearer $LMKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "string",
"name": "string",
"insecure": false,
"stream": false
}'Deletes a model's local files, in the Ollama delete shape.#
/api/deleteRemoves the model's downloaded files from local storage. The catalog entry remains, so the model can be pulled again. A model that is loaded is unloaded first; a model actively serving requests is refused.
Request body
application/json ·
| Property | Type | Description |
|---|---|---|
model | string | The model whose local files should be removed. |
name | string | Legacy alias of model; used when model is absent. |
Responses
| Status | Type | Description |
|---|---|---|
| 200 | OK | |
| 404 | Not Found | |
| 500 | Internal Server Error |
curl -X DELETE "$LMKIT_ONE_URL/api/delete" \
-H "Authorization: Bearer $LMKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "string",
"name": "string"
}'Creates a model, in the Ollama create shape.#
/api/createOllama-compatible model creation. 'from' derives from a catalog model or an existing custom model (already downloaded); 'files' builds from pushed blobs (a main GGUF plus an optional mmproj entry); 'adapters' attaches LoRA adapter blobs to either form; 'quantize' requantizes the source GGUF into the requested precision, streaming progress while the conversion runs. System/template/parameters/license become the new model's recorded profile, and the created model serves beside the catalog on every listing, marked Unverified.
Request body
application/json ·
| Property | Type | Description |
|---|---|---|
model | string | Name of the model to create (name[:tag]). |
from | string | Existing model to base the new one on: a catalog model ID or a previously created model. |
system | string | System prompt baked into the created model. |
template | string | Prompt template text. Stored verbatim and reported by /api/show; rendering follows the base model's own template. |
license | one of object · | |
parameters | object | Modelfile parameters for the created model. |
files | object | File-name to blob-digest map for file-based creation. Requires the blob store, which this server does not serve yet. |
adapters | object | Adapter-name to blob-digest map. Requires the blob store, which this server does not serve yet. |
quantize | string | Quantization to apply while creating. Not served yet. |
stream | boolean | When false, a single terminal object is returned instead of NDJSON progress lines. |
Responses
| Status | Type | Description |
|---|---|---|
| 200 | application/json | OK |
| 400 | Bad Request | |
| 404 | Not Found |
curl -X POST "$LMKIT_ONE_URL/api/create" \
-H "Authorization: Bearer $LMKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "string",
"from": "string",
"system": "string",
"template": "string"
}'Copies a model under a new name.#
/api/copyOllama-compatible model copy: the destination is a new custom model sharing the source's files and profile. Copying never duplicates artifacts on disk.
Request body
application/json ·
| Property | Type | Description |
|---|---|---|
source | string | The model to copy. |
destination | string | The new model name. |
Responses
| Status | Type | Description |
|---|---|---|
| 200 | OK | |
| 400 | Bad Request | |
| 404 | Not Found |
curl -X POST "$LMKIT_ONE_URL/api/copy" \
-H "Authorization: Bearer $LMKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": "string",
"destination": "string"
}'Not supported: models cannot be pushed to a registry.#
/api/pushExists so Ollama clients get a clear error instead of an opaque 404. Publishing runs the other way on this server: models are pulled FROM the hub (hf.co/owner/repo), imported from disk, or built with create; a custom model's artifact path is listed by the admin API for publishing with the hub's own tools.
Responses
| Status | Type | Description |
|---|---|---|
| 501 | Not Implemented |
curl -X POST "$LMKIT_ONE_URL/api/push" \
-H "Authorization: Bearer $LMKIT_API_KEY"