---
title: "List Catalog Entry Models Route"
method: GET
path: "/api/v1/provider-catalog/{provider_id}/models"
tags: ["providers"]
---

# List Catalog Entry Models Route

`GET /api/v1/provider-catalog/{provider_id}/models`

## Request

- Base URL: `https://cp.xenovia.io` (the document declares no server; this is the origin it was published from)
- URL: `https://cp.xenovia.io/api/v1/provider-catalog/{provider_id}/models`
- Auth: none declared

Every model a catalog entry offers, before a key is entered: the public
model directory's list (``source: directory``), else the entry's
suggestions (``source: catalog``). Needs no credentials and never calls
the runtime; 404 for an id outside the catalog or a hidden entry.

## Path parameters

- `provider_id` string, required

## Headers

- `Authorization` string, nullable

## Response `200`

Successful Response

- ProviderModelList: The models a provider can call. ``live`` is the upstream's own list (through the runtime, or OpenRouter's public list); ``directory`` is the public model directory's list for the entry (models.dev), answered when no live list can be had (no key yet, no discovery, a failed or unconfigured runtime); ``catalog`` is the catalog's suggestions, when the entry has no directory list or the directory cannot be reached. ``error`` says why a live list was refused (the runtime's fixed message), or is null.
  - `models` ProviderModelOption[], required
    - `id` string, required
    - `name` string, required
  - `source` 'live' | 'directory' | 'catalog', required
  - `error` string, nullable

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-04** `2f4b4b338b8f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/xenovia/apis/controlplane/changes/api/v1/provider-catalog/:provider_id/models/get.md)

---

[API](https://skmtc.dev/xenovia/apis/controlplane.md) - [All operations](https://skmtc.dev/xenovia/apis/controlplane/llms.txt) - [OpenAPI document](https://skmtc.dev/xenovia/apis/controlplane/revisions/3e25bef24f8f?raw)
