--- name: omni-models description: Query available AI models across all configured providers. List models, resolve model aliases, and browse the full model catalog including provider-specific variants. --- ## Overview Query available AI models across all configured providers. List models, resolve model aliases, and browse the full model catalog including provider-specific variants. ## Authentication All requests require a valid Bearer token or session cookie. Obtain a token via `POST /api/auth/login` or configure `REQUIRE_API_KEY=false` for local development. ## Endpoints ### GET /api/v1/models List available models Returns all models available across configured providers. The discovery filters (`capability`, `min_context`, `kind`, `q`) are opt-in: without them the response is unchanged. They narrow the caller's own (key-filtered) catalog and run before `limit`/`after` paging. ```bash curl http://localhost:20128/api/v1/models \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/v1/models/query Query a model shortlist Filtered shortlist over the same catalog as `GET /v1/models` (same auth and per-key visibility). Results are ordered by `owned_by`, then `id`, and capped by `limit` (default 20, maximum 100). ```bash curl -X POST http://localhost:20128/api/v1/models/query \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/v1/models/health Per-model pause state for the caller's key Read-only liveness view over the in-memory model lockout store. `ok` means no pause observed by this instance (not a health verdict); connection-level pauses live outside the store read here. Additive: leaves GET /v1/models and its cache untouched. `retry_after` carries the shortest remaining lockout in seconds, rounded up, only when `state` is `cooling`. One documented difference from the dispatch 429 `model_cooldown` rule: a model with one lockout-covered connection and one connection-level cooldown still reads `cooling` here, while the 429 requires every connection to carry a model cooldown. ```bash curl http://localhost:20128/api/v1/models/health \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### GET /api/models List models (management) ```bash curl http://localhost:20128/api/models \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/models/alias Create or update a model alias ```bash curl -X POST http://localhost:20128/api/models/alias \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/models/catalog Get full model catalog ```bash curl http://localhost:20128/api/models/catalog \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### GET /api/models/openrouter-catalog GET models › openrouter catalog ```bash curl http://localhost:20128/api/models/openrouter-catalog \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/models/test POST models › test ```bash curl -X POST http://localhost:20128/api/models/test \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/models/test-all POST models › test all ```bash curl -X POST http://localhost:20128/api/models/test-all \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/v1/models/{model} GET models › ```bash curl http://localhost:20128/api/v1/models/{model} \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ## Payloads See the full OpenAPI specification at `GET /api/openapi/spec` or `docs/openapi.yaml` for detailed request/response schemas.