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

# List models

> The public model catalog, with capabilities and privacy levels.

`GET /v1/models` returns the public catalog. `GET /api/v1/models` returns the same catalog. Both endpoints work without an API key, browser session, or prepaid balance. The default `type` is chat.

Supplying credentials or an organization header returns the same public list. Inference still requires authentication and account eligibility; a catalog entry does not guarantee your account can call that model. Personalized availability remains in `/api/v1/model-groups`.

## Request

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl "https://app.trynito.ai/v1/models?type=chat&privacy_tier=private"
```

### Query Parameters

| Parameter | Notes |
| - | - |
| `type` | `chat` (default), `image`, `embedding`, or `all`. |
| `q` | Case-insensitive substring search across ID, display name, description, owner, source, and type. |
| `privacy_tier` | `anon`, `private`, `confidential`, or `encrypted`. |
| `source` | `frontier`, `open_source`, or `unknown`. |
| `supports` | Comma-separated capability filters, for example `image_inputs`, `web_search`, `reasoning`, `function_tools`, `structured_outputs`, `json_mode`, `attestable`, `encrypted`. |
| `min_context` | Minimum context window in tokens. |

## Response

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "object": "list",
  "data": [
    {
      "id": "z-ai/glm-5.2",
      "object": "model",
      "owned_by": "z-ai",
      "display_name": "GLM 5.2",
      "description": "...",
      "type": "chat",
      "source": "open_source",
      "architecture": { "input_modalities": ["text"], "output_modalities": ["text"] },
      "capabilities": { "supports_web_search": true, "supports_reasoning": true },
      "supported_parameters": ["reasoning", "tools"],
      "context_window": 1048576,
      "privacy_tier": "private"
    }
  ]
}
```

| Field | Notes |
| - | - |
| `id` | The logical model ID. Send it as `model`. Confidential rows end in `:confidential`; Encrypted-capable rows also appear with `:encrypted`, which needs the [Encrypted](/api/api-reference/chat-and-text/encrypted) headers. |
| `display_name`, `description`, `owned_by` | Presentation metadata. |
| `type` | `chat`, `image`, or `embedding`. |
| `source` | `frontier`, `open_source`, or `unknown`. |
| `architecture` | Accepted input and produced output modalities. |
| `capabilities` | Six booleans: `supports_image_inputs`, `supports_file_attachments`, `supports_image_generation`, `supports_web_search`, `supports_web_fetch`, and `supports_reasoning`. |
| `supported_parameters` | Sorted optional controls supported by the effective route for the public catalog. Examples include `tools`, `tool_choice`, `response_format`, `parallel_tool_calls`, `stop`, `frequency_penalty`, `presence_penalty`, and `reasoning`. `structured_outputs` and `strict_function_tools` describe JSON Schema and strict function support; they are not top-level request fields. Common request fields such as `model` and `messages` are not listed. An empty list means no optional catalog-backed controls are advertised. |
| `context_window` | Maximum context in tokens. |
| `privacy_tier` | The privacy level the row serves: `anon`, `private`, `confidential`, or `encrypted`. See [Privacy levels at a glance](/models/privacy-levels-at-a-glance). |
| `pricing` | Present when the row has a customer price. `input_token_nanos` and `output_token_nanos` are per-token integer-nanos rates. Other nonzero cache and reasoning rates may appear. |

The Model List reads `supports_reasoning` directly from this endpoint. Pricing
fields describe billing rates separately from capability flags. The Model List shows selected API-reported features; “Not reported” means
none of those selected flags are true.

The `:confidential` and `:encrypted` model IDs and their `privacy_tier` values identify available privacy levels. For current attestation evidence and Encrypted key material, call [Get attestation](/api/api-reference/attestation/get-attestation). The model list does not include attestation details or a verification result.

## Pricing

Use this public endpoint as the source for current API prices. A pricing fetch
needs no API key:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl --fail --silent --show-error 'https://app.trynito.ai/v1/models?type=chat' \
  | jq '.data[] | {id, pricing}'
```

`pricing.currency_code` is `USD` and `pricing.unit` is `nanos`. One USD is
1,000,000,000 nanos. Convert each per-token rate to USD per million tokens by
dividing by 1,000, using integer or decimal arithmetic to preserve precision.

| Field | Unit in the response |
| - | - |
| `input_token_nanos` | Nanos per input token. |
| `output_token_nanos` | Nanos per output token. |
| `cache_read_input_token_nanos` | Nanos per cached input token read, when published. |
| `cache_write_input_token_nanos` | Nanos per input token written to cache, when published. |
| `reasoning_output_token_nanos` | Nanos per reasoning output token, when published. |

Missing pricing or optional fields mean the rate is unavailable from discovery;
never infer a zero price from an omitted field. An explicit zero is a published
zero rate. These are public API prices, separate from subscription allowances.
Web-tool charges are outside this pricing object. A listed rate describes pricing,
while capabilities and account eligibility determine which requests can run.

The [Model List](/models/all-models) publishes these rates through an hourly
refresh. Its snapshot date changes when displayed models or rates change. Fetch
this endpoint for current prices instead of hardcoding the documentation values.
For your own published comparison, a cron job or scheduled build can fetch the
endpoint afresh, validate its response, and regenerate the display. Honor the
response's `Cache-Control: no-store` header and label generated documentation with
its snapshot date. On a failed refresh, keep the last successful publication and
report the failure; never replace unavailable rates with zero.

## Freshness and Errors

The server caches catalog responses for up to 24 hours. Catalog, configuration, and pricing updates invalidate the cache. Responses use `Cache-Control: no-store`; clients and intermediaries must honor that header. The catalog describes model capabilities; inference checks provider health when you send a request.

Global and per-IP rate limits apply. On `429`, respect `Retry-After` when present. A temporarily unavailable catalog or response cache returns `503` with error code `unavailable`; retry with backoff. Invalid filters return `400`.

## Related

* [Model List](/models/all-models)
* [Model ID convention](/models/model-id-convention)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.