# Модели

> ID моделей, каталог GET /v1/models, приватные модели и провайдеры.

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

Актуальный каталог отдаёт `GET /v1/models`. Ключ необязателен, но с ключом в
заголовке Authorization список включает и модели, открытые вашему аккаунту
персонально.

```bash [curl]
curl https://ai-seller.vibe-codes.ru/v1/models \
  -H "Authorization: Bearer $AISELLER_API_KEY"
```

```python [Python]
from openai import OpenAI

client = OpenAI(base_url="https://ai-seller.vibe-codes.ru/v1", api_key="$AISELLER_API_KEY")
for model in client.models.list():
    print(model.id)
```

Ответ — в формате OpenAI:

```json
{
  "object": "list",
  "data": [
    {"id": "gpt-5.6-sol", "object": "model", "owned_by": "ai-seller"},
    {"id": "gpt-image-2.5", "object": "model", "owned_by": "ai-seller"}
  ]
}
```

Если заголовок с ключом передан, ключ обязан быть действующим: с неверным
ключом ответ — `401 invalid_api_key`, а не анонимный список.

## ID модели

ID — строка из каталога, например `gpt-5.6-sol`. Префикс вендора необязателен:
встречаются и `model`, и `vendor/model`. Передавайте ID ровно в том виде, в каком
его отдаёт `GET /v1/models`; в ответах шлюза поле `model` содержит тот же ID.

## Тип модели и эндпоинт

У каждой модели один тип — текст, изображения или видео, — и она работает только
на эндпоинтах своего типа:

| Тип | Эндпоинты |
| --- | --- |
| Текст | `POST /v1/chat/completions`, `POST /v1/messages`, `POST /v1/responses` |
| Изображения | `POST /v1/images/generations` |
| Видео | `POST /v1/videos` |

Модель на эндпоинте чужого типа отвечает `404 model_not_found`, как
несуществующая. Среди текстовых эндпоинтов модель работает на тех, чей формат
поддерживает её провайдер: шлюз не переводит запросы из одного формата в другой
(см. [Обзор API](https://ai-seller.vibe-codes.ru/docs/endpoints#формат-запроса-и-модель)).

## Провайдеры и отказоустойчивость

У модели может быть несколько провайдеров. Если провайдер не ответил или вернул
сбой до начала ответа, шлюз повторяет запрос у следующего — для вас это один
запрос с одним `request_id`. После того как ответ начал приходить, переключения
уже нет: сбой посреди потока приходит событием ошибки (см.
[Стриминг](https://ai-seller.vibe-codes.ru/docs/streaming)).

## Приватные модели и цены

Часть моделей открывается аккаунту персонально: они видны в `GET /v1/models`
только с вашим ключом, остальным отвечают `404 model_not_found`. Для аккаунта
могут действовать персональные цены. Как считается стоимость запроса — в разделе
[Баланс и стоимость](https://ai-seller.vibe-codes.ru/docs/pricing); актуальные ставки по моделям можно
уточнить на support@example.com.
