---
title: "Get a model"
method: GET
path: "/v1/models/{model}"
tags: ["Models"]
---

# Get a model

`GET /v1/models/{model}`

## Request

- Base URL: `https://api.naturali.ai`
- URL: `https://api.naturali.ai/v1/models/{model}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.naturali.ai/authorize`, token URL `https://api.naturali.ai/token`, scopes: `mcp:access`)

`{model}` is naturali's own name for the model, the same value [`GET /v1/models`](/docs/api/models/list-models) returns — a vendor's invocation string is a `404`. A `deprecated` model still reads here, so a project already generating on one can see what happened to it.

## Response `200`

Model details.

- Model
  - `model` string, required: The model's name, and the only model string this API accepts or returns. Use it verbatim as a provider's `default_model` and as an agent's `model`. It is naturali's own name, not the vendor's: it states a version explicitly and never changes, so a vendor relabelling its model cannot move a name you have already written down. A vendor's own invocation string is refused where this is expected — one model has one name.
  - `vendor` string, required: The model maker.
  - `input_modalities` string[], required: Accepted input modalities.
  - `output_modalities` string[], required
  - `streaming` boolean, required
  - `status` 'available' | 'deprecated', required: Lifecycle status, from the provider's own listing at the last sync. A model the provider stops listing — or reports as legacy or deprecated — flips to `deprecated` and stays in the catalog, so a project already generating on it can see what happened to it. A `deprecated` model cannot be chosen as the `default_model` of a new `provider: "naturali"` provider.
  - `pricing` object, required: What generating on this model costs in credit, in USD per token: the figure the managed provider's price book holds, `/usage` reports as `cost_usd` and the balance is debited. Always present: a model naturali cannot price is not in this catalog. Refreshed by the daily sync.
    - `input_usd_per_token` number, required: USD per input (uncached) token.
    - `output_usd_per_token` number, required: USD per output token. Reasoning ("thinking") tokens are output tokens: on a model that reasons by default they are counted in `output_tokens` and billed at this rate, and can be most of the output on a short answer. A rate alone therefore does not size a request on such a model.
    - `cached_input_usd_per_token` number, nullable, required: USD per cache-read input token; null when the model does not price caching (cached tokens are then billed at the input rate).
  - `synced_at` string, date-time, required: When the catalog last confirmed this entry against the provider.

## Other responses

- `401`: Missing or invalid credentials.
- `404`: The resource does not exist (existence is not leaked).

---

[API](https://skmtc.dev/naturali/apis/naturali-ai-api.md) · [All operations](https://skmtc.dev/naturali/apis/naturali-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/naturali/apis/naturali-ai-api/revisions/e4905b78f422?raw)
