# AiModel

A model in Maitento's catalogue, which agents name as `provider.model`.

**Kind:** an object, used in responses.

## Fields

Every field is present in a response; empty ones are `null`.

| Field | Type | Description |
|---|---|---|
| `name` | `string` | The catalogue name agents refer to the model by, such as `deepseek.deepseek-v4-flash`. |
| `description` | `string` | A short description of the model. |
| `type` | [`AiModelType`](https://docs.maitento.com/reference/types/ai-model-type.md) | What the model is for: running agents, generating images or embedding text. |
| `modelIdentifier` | `string \| null` | The model id sent to the provider, such as `qwen2.5-coder:32b`. Null when the catalogue entry implies it. |
| `contextWindowTokens` | `integer \| null` | The model's context window, in tokens. Null: the model's built-in default. |
| `maxOutputTokens` | `integer \| null` | The most tokens the model writes in one reply. Null: the model's built-in default. |
| `tokenizerFamily` | `string \| null` | How Maitento estimates the model's token counts: `Cl100k`, `O200k`, `AnthropicClaude` or `Heuristic`. Null: chosen from the model's name. |
| `providerHardLimitTokens` | `integer \| null` | The provider's hard limit on input tokens, such as 200000. Null: the model's built-in default. |
| `reasoningEffort` | `string \| null` | The `reasoning_effort` sent with every request to this model: `none`, `minimal`, `low`, `medium` or `high`. Null: none is sent, and the provider's default applies. |
| `credentialProvider` | `string \| null` | Which credentials a model defined by the caller authenticates with. Null for catalogue models, which use their provider's keys. |
| `allowsSystemFallback` | `boolean \| null` | Whether the model may use Maitento's own provider key once the run's and the tenant's keys are exhausted, when the run allows that. Null: it may. |
| `supportsJsonSchemaResponseFormat` | `boolean \| null` | Whether the model's endpoint supports strict structured output (`response_format=json_schema`). Null: it does. When false, the response schema is restated in the prompt instead. |
| `id` | `uuid` | The unique id. Use it in `by-id` routes and wherever another object refers to this one. |
| `dateCreated` | `datetime` | When it was created, in UTC. |
| `dateUpdated` | `datetime` | When it was last changed, in UTC. |

## Example

```json
{
  "name": "...",
  "description": "...",
  "type": "Interaction",
  "modelIdentifier": "...",
  "contextWindowTokens": 0,
  "maxOutputTokens": 0,
  "tokenizerFamily": "...",
  "providerHardLimitTokens": 0,
  "reasoningEffort": "...",
  "credentialProvider": "...",
  "allowsSystemFallback": false,
  "supportsJsonSchemaResponseFormat": false,
  "id": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "dateCreated": "2026-10-26T12:00:00.0000000Z",
  "dateUpdated": "2026-10-26T12:00:00.0000000Z"
}
```

## Where it's used

- [`models.list`](https://docs.maitento.com/reference/api/models.md) (`GET /ai-models`)
