---
title: "List Discoverable Models"
method: GET
path: "/v1/models/discoverable"
tags: ["models"]
---

# List Discoverable Models

`GET /v1/models/discoverable`

List every model the configured provider credentials can reach.

Operator-facing counterpart to GET /v1/models, which serves a curated catalog
to API callers. This reports each provider separately and keeps its error, so
a provider with a bad key is distinguishable from one with no models. It is
master-key gated because a provider error message describes the gateway's own
configuration.

Answers from the discovery cache, which a background refresher keeps warm, so
the call does not wait on a slow or unreachable provider. Each provider
carries the ``checked_at`` its result was produced at; a null one has not been
dialed yet. Pass ``refresh=true`` to force a live re-dial of every provider.

## Query parameters

- `refresh` boolean — Re-dial every provider instead of answering from the discovery cache.

## Response `200`

Successful Response

- DiscoverableModelsResponse — Per-provider discovery results for operator model selection.
  - `providers` DiscoverableProvider[], required
    - `checked_at` string, nullable — When this instance was last dialed, ISO 8601. Null when it has not been checked yet, which is what the first read after a restart sees while the background refresh runs.
    - `discovery_unsupported` boolean — True when discovery failed only because this backend serves no model-listing endpoint. The provider may still handle requests for models declared in config.
    - `error` string, nullable — Why discovery failed. Null when `ok` is true.
    - `models` DiscoverableModel[], required
      - `id` string, required — Bare model id as the provider reports it.
      - `key` string, required — Selector to send as `model`, in `instance:model` form.
    - `ok` boolean, required — False when this instance could not be queried.
    - `provider` string, required

## Other responses

- `422` — Validation Error

## Changes

> 127 revisions in range; 1 not diffed.

- **2026-08-07** `9efeac9dd037` — 3 info
  - added the new optional `query` request parameter `refresh`
  - added the non-success response with the status `422`
  - added the optional property `providers/items/checked_at` to the response with the `200` status
- **2026-07-31** `ea473885237b` — 1 info
  - added the optional property `providers/items/discovery_unsupported` to the response with the `200` status
- **2026-07-20** `d9a87177ce4a` — 1 info
  - the endpoint scheme security `XApiKeyAuth` was added to the API
- **2026-07-17** `db57bd46e3eb` — 1 info
  - endpoint added
- **2026-04-17** `0f43605bdc13` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/mozilla-ai/apis/otari/changes/v1/models/discoverable/get.md)

---

[API](https://skmtc.dev/mozilla-ai/apis/otari.md) · [All operations](https://skmtc.dev/mozilla-ai/apis/otari/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/mozilla-ai/otari/revisions/eae05f7dd3cd/schema)
