> ## Documentation Index
> Fetch the complete documentation index at: https://developers.agentx.so/llms.txt
> Use this file to discover all available pages before exploring further.

# List Models

> List the project's model catalog used for judge selection and cost estimation

Returns the model catalog: the models selectable as judge models (for grading configs, AI
analysis, and online evaluators) and the pricing rows used for cost estimation on traces and
model-portability replays. The catalog is seeded with a small default set on first boot, a few
commonly traced real-world models (`gpt-4o-mini`, `gemini-2.5-pro`, `gemini-2.5-flash`) are
ensured on every boot unless you deliberately deleted them, and everything is editable from the
dashboard's Settings pricing panel (or via `POST`/`PUT`/`DELETE` on this same path).

Use a model's `id` (the exact model string sent to the provider's API) wherever a `judgeModel`
is accepted. The default judge model is `gpt-5.6-luna`, unless Platform Settings > Platform
model overrides it; the catalog's `isDefault` flag only decides which row this list puts
first.

<Note>
  The hosted platform's `GET /custom-agent-evaluations/models` route is **not available** on
  the self-host engine and returns `404` - this catalog endpoint is the replacement. The
  Python SDK's `client.evaluations.list_models()` targets the hosted route; on self-host,
  read the catalog from this endpoint directly.
</Note>

## Authentication

<ParamField header="x-api-key" type="string" required>
  Project API key.
</ParamField>

## Response

<ResponseField name="models" type="array">
  The default row first, alphabetical after that. Each model object has:

  | Field                       | Type           | Description                                                                    |
  | --------------------------- | -------------- | ------------------------------------------------------------------------------ |
  | `id`                        | string         | Exact model string sent to the provider's API - use this as `judgeModel`       |
  | `provider`                  | string         | `"openai"`, `"anthropic"`, `"gemini"`, or `"custom"`                           |
  | `label`                     | string         | Human-readable name                                                            |
  | `pricePerMInputTokens`      | number         | USD per 1M input tokens                                                        |
  | `pricePerMOutputTokens`     | number         | USD per 1M output tokens                                                       |
  | `pricePerMCacheReadTokens`  | number \| null | USD per 1M cache-read tokens; `null` falls back to the input rate              |
  | `pricePerMCacheWriteTokens` | number \| null | USD per 1M cache-write tokens; `null` falls back to the input rate             |
  | `isDefault`                 | boolean        | Whether this is the default judge model                                        |
  | `baseUrl`                   | string \| null | Custom OpenAI-compatible endpoint, for `"custom"` models                       |
  | `apiKeyMasked`              | string \| null | Masked per-model API key, if one is configured (the raw key is never returned) |
</ResponseField>

## Related

* `GET /api/v1/agent-monitoring/portability/models/unpriced` - models seen on token-bearing
  traces in the last 30 days that have no catalog pricing (so unpriced spend is visible
  instead of a silent \$0).

<RequestExample>
  ```bash cURL theme={null}
  curl "http://localhost:4700/api/v1/agent-monitoring/portability/models" \
    -H "x-api-key: agtx_local_0f3c9a17d2b84e6a5c01b9f4e7d8a2c6431b5f97a0e2d4c8"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "models": [
      {
        "id": "claude-sonnet-5",
        "provider": "anthropic",
        "label": "Claude Sonnet 5",
        "pricePerMInputTokens": 3.0,
        "pricePerMOutputTokens": 15.0,
        "pricePerMCacheReadTokens": 0.3,
        "pricePerMCacheWriteTokens": 3.75,
        "isDefault": true,
        "baseUrl": null,
        "apiKeyMasked": null
      },
      {
        "id": "claude-fable-5",
        "provider": "anthropic",
        "label": "Claude Fable 5",
        "pricePerMInputTokens": 10.0,
        "pricePerMOutputTokens": 50.0,
        "pricePerMCacheReadTokens": 1.0,
        "pricePerMCacheWriteTokens": 12.5,
        "isDefault": false,
        "baseUrl": null,
        "apiKeyMasked": null
      },
      {
        "id": "claude-haiku-4-5",
        "provider": "anthropic",
        "label": "Claude Haiku 4.5",
        "pricePerMInputTokens": 1.0,
        "pricePerMOutputTokens": 5.0,
        "pricePerMCacheReadTokens": 0.1,
        "pricePerMCacheWriteTokens": 1.25,
        "isDefault": false,
        "baseUrl": null,
        "apiKeyMasked": null
      },
      {
        "id": "claude-opus-5",
        "provider": "anthropic",
        "label": "Claude Opus 5",
        "pricePerMInputTokens": 5.0,
        "pricePerMOutputTokens": 25.0,
        "pricePerMCacheReadTokens": 0.5,
        "pricePerMCacheWriteTokens": 6.25,
        "isDefault": false,
        "baseUrl": null,
        "apiKeyMasked": null
      },
      {
        "id": "gemini-2.5-flash",
        "provider": "gemini",
        "label": "Gemini 2.5 Flash",
        "pricePerMInputTokens": 0.3,
        "pricePerMOutputTokens": 2.5,
        "pricePerMCacheReadTokens": 0.075,
        "pricePerMCacheWriteTokens": null,
        "isDefault": false,
        "baseUrl": null,
        "apiKeyMasked": null
      },
      {
        "id": "gemini-2.5-pro",
        "provider": "gemini",
        "label": "Gemini 2.5 Pro",
        "pricePerMInputTokens": 1.25,
        "pricePerMOutputTokens": 10.0,
        "pricePerMCacheReadTokens": 0.31,
        "pricePerMCacheWriteTokens": null,
        "isDefault": false,
        "baseUrl": null,
        "apiKeyMasked": null
      },
      {
        "id": "gpt-4o-mini",
        "provider": "openai",
        "label": "GPT-4o mini",
        "pricePerMInputTokens": 0.15,
        "pricePerMOutputTokens": 0.6,
        "pricePerMCacheReadTokens": 0.075,
        "pricePerMCacheWriteTokens": null,
        "isDefault": false,
        "baseUrl": null,
        "apiKeyMasked": null
      },
      {
        "id": "gpt-5.6-luna",
        "provider": "openai",
        "label": "GPT-5.6 Luna",
        "pricePerMInputTokens": 0.2,
        "pricePerMOutputTokens": 1.2,
        "pricePerMCacheReadTokens": 0.1,
        "pricePerMCacheWriteTokens": null,
        "isDefault": false,
        "baseUrl": null,
        "apiKeyMasked": null
      },
      {
        "id": "gpt-5.6-sol",
        "provider": "openai",
        "label": "GPT-5.6 Sol",
        "pricePerMInputTokens": 5.0,
        "pricePerMOutputTokens": 30.0,
        "pricePerMCacheReadTokens": 2.5,
        "pricePerMCacheWriteTokens": null,
        "isDefault": false,
        "baseUrl": null,
        "apiKeyMasked": null
      },
      {
        "id": "gpt-5.6-terra",
        "provider": "openai",
        "label": "GPT-5.6 Terra",
        "pricePerMInputTokens": 2.0,
        "pricePerMOutputTokens": 12.0,
        "pricePerMCacheReadTokens": 1.0,
        "pricePerMCacheWriteTokens": null,
        "isDefault": false,
        "baseUrl": null,
        "apiKeyMasked": null
      }
    ]
  }
  ```
</ResponseExample>
