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

> **Ответ приходит в сыром OpenAI-формате.**
>
> Обёртки `{success, data}`, которая используется в остальных эндпоинтах Вайбкод — `/v1/deals`, `/v1/tasks` и других, — здесь нет.
>
> Так сделано для совместимости с OpenAI SDK. Если у вас единый клиент с проверкой `if (!response.success)`, добавьте для AI Router исключение.

`GET /v1/models`

Возвращает каталог AI-моделей, доступных текущему API-ключу. Формат ответа полностью совместим с `GET /v1/models` из OpenAI API. Бесплатные модели Битрикс24 видны всем. Модели сторонних провайдеров видны только тем ключам, у которых есть доступ к учётным данным провайдера.

## Параметры

Параметров запроса нет.

## Примеры

### curl — личный ключ

```bash
curl https://vibecode.bitrix24.tech/v1/models \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth-приложение

```bash
curl https://vibecode.bitrix24.tech/v1/models \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — личный ключ

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/models', {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})

const { data } = await res.json()
data.forEach((m) => {
  console.log(`${m.id} — ${m.name}, контекст ${m.context_length}, цена ${m.pricing.prompt}/${m.pricing.completion} Вайбов за 1М токенов`)
})
```

### JavaScript — OAuth-приложение

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/models', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { data } = await res.json()
console.log('Доступно моделей:', data.length)
```

## Поля ответа

| Поле | Тип | Описание |
|------|-----|----------|
| `object` | string | Всегда `list` |
| `data` | array | Массив моделей |
| `data[].id` | string | ID модели — используйте в `model` запроса к [`/v1/chat/completions`](/docs/ai/chat/completions) |
| `data[].object` | string | Всегда `model` |
| `data[].created` | number | Unix-timestamp регистрации модели в каталоге Вайбкод (`0` для платформенных) |
| `data[].owned_by` | string | Системное имя провайдера: `bitrix`, `openai`, `anthropic`, `openrouter`, `google` и т. п. Для платформенных моделей, которые мы перепродаём, возвращается `vibecode`. |
| `data[].name` | string | Отображаемое название модели |
| `data[].context_length` | number | Максимальный размер контекста в токенах (вход + выход суммарно) |
| `data[].max_output_tokens` | number | Максимум токенов в ответе |
| `data[].pricing.prompt` | number | Стоимость 1М токенов входа |
| `data[].pricing.completion` | number | Стоимость 1М токенов ответа |
| `data[].pricing.perCall` | number | Плата за вызов в Вайбах. Присутствует только когда больше `0` |
| `data[].pricing.perMinute` | number | Плата за минуту аудио в Вайбах. Присутствует только когда больше `0` |
| `data[].pricing.unit` | string | Единица измерения цен: `vibes` — внутренняя валюта платформы |
| `data[].capabilities` | object | Возможности модели: `streaming`, `vision`, `reasoning`, `audio`, `transcription`, `tools`, `structured_outputs`, `embeddings` |

## Пример ответа

```json
{
  "object": "list",
  "data": [
    {
      "id": "bitrix/bitrixgpt-5.5",
      "object": "model",
      "created": 0,
      "owned_by": "bitrix",
      "name": "BitrixGPT 5.5 (бесплатная)",
      "context_length": 262144,
      "max_output_tokens": 65536,
      "pricing": {"prompt": 0, "completion": 0, "unit": "vibes"},
      "capabilities": {"streaming": true, "vision": true, "structured_outputs": true}
    },
    {
      "id": "bitrix/bitrixgpt-5.5-thinking",
      "object": "model",
      "created": 0,
      "owned_by": "bitrix",
      "name": "BitrixGPT 5.5 Thinking (бесплатная)",
      "context_length": 262144,
      "max_output_tokens": 65536,
      "pricing": {"prompt": 0, "completion": 0, "unit": "vibes"},
      "capabilities": {"streaming": true, "vision": true, "reasoning": true, "structured_outputs": true}
    },
    {
      "id": "bitrix/bitrixgpt-5.5-agent",
      "object": "model",
      "created": 0,
      "owned_by": "bitrix",
      "name": "BitrixGPT 5.5 Agent",
      "context_length": 262144,
      "max_output_tokens": 65535,
      "pricing": {"prompt": 68.4, "completion": 342, "unit": "vibes"},
      "capabilities": {"streaming": true}
    },
    {
      "id": "bitrix/bitrixgpt-5.6-agent",
      "object": "model",
      "created": 0,
      "owned_by": "bitrix",
      "name": "BitrixGPT 5.6 Agent 1M",
      "context_length": 1048576,
      "max_output_tokens": 384000,
      "pricing": {"prompt": 100, "completion": 400, "unit": "vibes"},
      "capabilities": {"streaming": true, "structured_outputs": true}
    }
  ]
}
```

## Пример ответа при ошибке

`403 scope_missing` — у API-ключа нет скоупа `vibe:ai`:

```json
{
  "error": {
    "message": "API key does not have the vibe:ai scope required for AI endpoints. Add vibe:ai scope to your API key in portal settings.",
    "type": "invalid_request_error",
    "code": "scope_missing"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 403 | `scope_missing` | API-ключу не хватает скоупа `vibe:ai` |
| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |
| 401 | `INVALID_API_KEY` | Ключ не найден или отозван |
| 429 | `rate_limit_exceeded` | Превышен лимит запросов к AI-эндпоинтам. Время до сброса — в заголовке `Retry-After` |

Полный список общих ошибок API — [Ошибки](/docs/errors).

## Известные особенности

**Видимость зависит от настроенных учётных данных.** В каталоге показаны только те модели, для которых текущий API-ключ имеет доступ к учётным данным провайдера — общим для всей платформы, общим в портале или вашим личным BYOK. Модели Битрикс24 (`bitrix/*`) доступны всем без подключения BYOK. Если нужной модели в списке нет — [подключите свой ключ](/docs/ai/credentials/create).

**Модели в статусе `DEPRECATED` остаются в списке.** Они помечены как устаревшие, но запросы к ним ещё работают — будут возвращены заголовки `Deprecation` и `Sunset`. Модели в статусе `DISABLED` из списка скрыты, но при явном указании в `model` будут прозрачно перенаправлены на модель-преемник.

**Цены — в Вайбах за 1 миллион токенов.** Поле `pricing.unit: "vibes"` явно маркирует валюту, чтобы внешний клиент мог программно проверить единицу измерения. Вайбы — внутренняя валюта платформы, баланс пополняется через личный кабинет.

**Не все модели тарифицируются по токенам.** У модели распознавания речи `prompt` и `completion` равны `0`, а оплата идёт по полям `perMinute` за минуту аудио и `perCall` за вызов. Нулевые `prompt` и `completion` сами по себе не означают, что вызов бесплатный — проверяйте все четыре поля `pricing`.

## Смотрите также

- [Получить модель](./get.md)
- [Создать чат-комплишен](/docs/ai/chat/completions)
- [Эмбеддинги](/docs/ai/embeddings)
- [Свои ключи (BYOK)](/docs/ai/credentials)
