# Models API

> GET /v1/models и GET /v1/models/{id} возвращают публичные модели с лимитами, ценами и возможностями.


## Список моделей

```endpoint
GET https://api.notholy.com/v1/models
```

Список публичный: ключ не нужен. В нём все активные и устаревшие модели в порядке каталога, в формате списка OpenAI с дополнительными полями.

```json
{
  "object": "list",
  "data": [
    {
      "id": "notholy-specter",
      "object": "model",
      "created": 1794014537,
      "owned_by": "notholy",
      "base_model": "GLM 5.3 Abliterated",
      "capabilities": {
        "reasoning": true,
        "reasoning_efforts": [
          "low",
          "high",
          "max"
        ],
        "tools": true
      },
      "context_length": 1048576,
      "input_modalities": [
        "text"
      ],
      "max_output_tokens": 131072,
      "name": "NotHoly Specter",
      "pricing": {
        "currency": "USD",
        "unit": "1M tokens",
        "cached_input": "0.273000",
        "input": "1.820000",
        "output": "3.640000"
      },
      "status": "active"
    }
  ]
}
```

### Поля

| Поле | Тип | Примечания |
|---|---|---|
| `id` | string | Передавайте его как `model` |
| `name` | string | Отображаемое название |
| `status` | string | `active` или `deprecated` |
| `context_length` | integer | Входные плюс выходные токены |
| `max_output_tokens` | integer | Максимум, который может сгенерировать запрос |
| `input_modalities` | string[] | `text`, плюс `image` у моделей, которые принимают изображения |
| `capabilities` | object | `tools`, `reasoning` и допустимые `reasoning_efforts` |
| `pricing` | object | Доллары США за миллион токенов в виде десятичных строк: `input`, `output`, `cached_input` |
| `base_model` | string | Модель с открытыми весами, на которой она построена, если это опубликовано |
| `default` | boolean | Есть и равно `true` у модели, которую клиентам стоит использовать, если пользователь её не выбрал |

С заголовком `anthropic-version` список приходит в формате Anthropic: `{data, has_more, first_id, last_id}` с элементами `{type: "model", id, display_name, created_at}`.

## Одна модель

```endpoint
GET https://api.notholy.com/v1/models/notholy-specter
```

Возвращает тот же объект для одной модели. Неизвестный или выведенный ID возвращает `404 model_not_found`.

```bash test
curl https://api.notholy.com/v1/models/notholy-specter -H "Authorization: Bearer $NOTHOLY_API_KEY"
```

```python test
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.notholy.com/v1", api_key=os.environ["NOTHOLY_API_KEY"])

for m in client.models.list():
    print(m.id)
```
