# Endpoints

> The complete table of LMSP 1.0 endpoints with method, path, requirement level and purpose, plus the conventions for paths, authentication and optional endpoints.

Source: https://madeforagent.com/lmsp/1.0/endpoints/
Language: en
Specification: LMSP 1.0 (draft)
Updated: 2026-11-08

## 4.1 Endpoint table {#table}

A conforming service **MUST** implement every endpoint marked required. It **MAY** implement the optional ones, and signals them through the capability flags of its [service description](https://madeforagent.com/lmsp/1.0/discovery.md#service-description).

| Method | Path | Requirement | Purpose |
| --- | --- | --- | --- |
| GET | `/.well-known/lmsp.json` | Required | [Service and capability discovery](https://madeforagent.com/lmsp/1.0/discovery.md#service-description) |
| GET | `/lmsp/v1/openapi.json` | Required | Machine-readable interface specification |
| GET | `/lmsp/v1/health` | Required | [Liveness and readiness check](https://madeforagent.com/lmsp/1.0/common-rules.md#health) |
| POST | `/lmsp/v1/pair` | Required | [Exchange a pairing code for a bearer token](https://madeforagent.com/lmsp/1.0/security.md#pairing) |
| GET | `/lmsp/v1/models` | Required | [List local models](https://madeforagent.com/lmsp/1.0/models.md#list) |
| GET | `/lmsp/v1/models/{model_id}` | Required | [Get one model](https://madeforagent.com/lmsp/1.0/models.md#operations) |
| POST | `/lmsp/v1/responses` | Required | [Synchronous or streaming generation](https://madeforagent.com/lmsp/1.0/responses.md#request) |
| GET | `/lmsp/v1/responses/{response_id}` | Optional | [Retrieve a stored response](https://madeforagent.com/lmsp/1.0/responses.md#sync) |
| POST | `/lmsp/v1/tasks` | Required | [Create an asynchronous generation task](https://madeforagent.com/lmsp/1.0/tasks.md#create) |
| GET | `/lmsp/v1/tasks/{task_id}` | Required | [Get an asynchronous task](https://madeforagent.com/lmsp/1.0/tasks.md#create) |
| POST | `/lmsp/v1/tasks/{task_id}/cancel` | Required | [Cancel an asynchronous task](https://madeforagent.com/lmsp/1.0/tasks.md#cancel) |
| GET | `/lmsp/v1/tasks/{task_id}/events` | Optional | [Subscribe to or resume the event stream](https://madeforagent.com/lmsp/1.0/tasks.md#events) |
| POST | `/lmsp/v1/models/{model_id}/load` | Optional | [Preload a model](https://madeforagent.com/lmsp/1.0/models.md#operations) |
| POST | `/lmsp/v1/models/{model_id}/unload` | Optional | [Unload a model](https://madeforagent.com/lmsp/1.0/models.md#operations) |

The OpenAI-compatible endpoints under `/v1` and the optional Ollama-compatible endpoints are listed in [page 8](https://madeforagent.com/lmsp/1.0/compatibility.md).

## 4.2 Conventions {#conventions}

- **Bodies.** Request and response bodies are JSON (`application/json`), except event streams (`text/event-stream`) and errors (`application/problem+json`).
- **Path parameters.** A name in braces, such as `{model_id}`, is a placeholder. Values **MUST** be percent-encoded. A model id like `qwen3:14b-q4_k_m` is sent as `qwen3%3A14b-q4_k_m`.
- **Authentication.** Every endpoint requires `Authorization: Bearer <token>`, except `/.well-known/lmsp.json`, `/lmsp/v1/openapi.json`, `/lmsp/v1/health` and `/lmsp/v1/pair`.
- **Optional endpoints.** An optional endpoint that the service does not implement **MUST** answer `501 Not Implemented` with the error code `unsupported_capability`.
- **Versions and errors.** Requests may carry version headers, and every error uses one format. Both are defined in [page 9](https://madeforagent.com/lmsp/1.0/common-rules.md).
- **Contract.** The OpenAPI document published at [`/lmsp/1.0/openapi.json`](https://madeforagent.com/lmsp/1.0/openapi.json) is the machine-readable form of this page. The text is normative where the two differ.
