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

# Models

> GET /v1/models — list the available capability tiers.

## Endpoint

```http theme={null}
GET /v1/models
```

Lists the capability tiers you can pass as `model` to the [Answers API](/en/api-reference/chat) and the [Agent API](/en/api-reference/responses). OpenAI-compatible shape.

<Note>
  **Public** — the model catalog is a static capability list (no tenant data), so this endpoint needs **no API key**. An `Authorization` header, if sent (the OpenAI SDKs always attach one), is simply ignored. Every other `/v1` endpoint requires `Authorization: Bearer mb_live_*`.
</Note>

## Tiers

| `model`           | Tier                     | Use case                                           |
| ----------------- | ------------------------ | -------------------------------------------------- |
| `mirobody-flash`  | Default — fast, low cost | Everyday health Q\&A, high concurrency             |
| `mirobody-expert` | Deeper reasoning         | Complex report interpretation, multi-step analysis |

Hosted model usage is metered from the backing provider's token counts. Each model response includes `usage.billed_tokens`; combine those counts with the current catalog's `pricing` when estimating cost. The console Usage page currently reports request counts, not token-level cost. Self-hosting the open-source engine is free software; you pay for your own infrastructure and LLM providers.

## Per-tier metadata

Each entry carries a conservative capacity budget and the per-tier price:

| Field               | Meaning                                                                                                                                                                                     |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `context_window`    | Advertised input-plus-output capacity for the tier. Treat it as a planning budget, not a promise that every request shape will fit.                                                         |
| `max_output_tokens` | Advertised output capacity. This is catalog metadata; request fields such as `max_tokens` are not enforced by agent mode.                                                                   |
| `pricing`           | `{input_per_1m_tokens, output_per_1m_tokens, currency}` — standard price per **1M tokens** for estimating from `usage.billed_tokens`. Cache adjustments are not represented in this object. |

## Example

<CodeGroup>
  ```bash curl theme={null}
  # no API key needed
  curl https://api.mirobody.ai/v1/models
  ```

  ```python Python (OpenAI SDK) theme={null}
  from openai import OpenAI

  # api_key is unused by /v1/models but the SDK requires the field to be set
  client = OpenAI(api_key="unused", base_url="https://api.mirobody.ai/v1")
  for m in client.models.list().data:
      print(m.id)
  ```
</CodeGroup>

## Response

An OpenAI-style `{ "object": "list", "data": [ … ] }` — each tier extends the standard model object with `context_window`, `max_output_tokens`, and `pricing`. The values below illustrate the response shape; read the live endpoint for current values:

```jsonc theme={null}
{
  "object": "list",
  "data": [
    { "id": "mirobody-flash", "object": "model", "owned_by": "mirobody",
      "context_window": 65536, "max_output_tokens": 8192,
      "pricing": { "input_per_1m_tokens": 0.75, "output_per_1m_tokens": 4.50, "currency": "USD" } },
    { "id": "mirobody-expert", "object": "model", "owned_by": "mirobody",
      "context_window": 65536, "max_output_tokens": 8192,
      "pricing": { "input_per_1m_tokens": 5.0, "output_per_1m_tokens": 25.0, "currency": "USD" } }
  ]
}
```

<Note>
  Capacity, backing providers, and pricing may differ by cluster and can change without changing the stable tier id. Always read `pricing` from the cluster you call rather than hard-coding the example.
</Note>

For your `model` value, always pass a stable tier — `mirobody-flash` (default) or `mirobody-expert`.
