
## Тарифы провайдера

`GET /v1/infra/providers/:providerId/plans`

Возвращает список тарифов провайдера с характеристиками (CPU, RAM, диск, цена за работу и за сон). Значение `id` используется как параметр `plan` при [создании сервера](/docs/infra/servers/create).

## Параметры

| Параметр | В | Тип | Обяз. | Описание |
|----------|---|-----|:-----:|----------|
| `providerId` | path | string | да | ID провайдера из [`GET /v1/infra/providers`](./list.md), например `bitrix-cloud` |

## Примеры

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

```bash
curl -H "X-Api-Key: YOUR_API_KEY" \
  https://vibecode.bitrix24.tech/v1/infra/providers/bitrix-cloud/plans
```

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

```bash
curl -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  https://vibecode.bitrix24.tech/v1/infra/providers/bitrix-cloud/plans
```

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

```javascript
const res = await fetch(
  'https://vibecode.bitrix24.tech/v1/infra/providers/bitrix-cloud/plans',
  { headers: { 'X-Api-Key': 'YOUR_API_KEY' } }
)
const { data: plans } = await res.json()
plans.forEach(p => console.log(
  `${p.id}: ${p.cpu}C / ${p.ram}MB / ${p.disk}GB — ${p.priceMonthly} Ꝟ/мес`
))
```

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

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

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

| Поле | Тип | Описание |
|------|-----|----------|
| `success` | boolean | Всегда `true` при успехе |
| `data` | array | Массив тарифов |
| `data[].id` | string | ID тарифа, передаётся как `plan` при создании сервера (`bc-small`, `bc-medium`, `bc-large`, `bc-xlarge`, `bc-micro`, `bc-agent`) |
| `data[].name` | string | Название тарифа с характеристиками для отображения пользователю |
| `data[].cpu` | number | Количество ядер |
| `data[].ram` | number | Оперативная память, МБ |
| `data[].disk` | number | Диск, ГБ |
| `data[].diskType` | string | Тип диска (`network-ssd`) |
| `data[].bandwidth` | number | Пропускная способность сети, Мбит/с |
| `data[].priceMonthly` | number | Каталожная цена работающего сервера в Вайбах (Ꝟ) за месяц. Фактическое списание за конкретный портал может отличаться от каталожной цены |
| `data[].sleepPriceMonthly` | number | Каталожная цена сервера в режиме `sleeping` в Вайбах (Ꝟ) за месяц. Фактическое списание может отличаться |
| `data[].description` | string | (Опционально) Доп. описание тарифа, например `"Для ботов и агентов"` у `bc-micro` |
| `data[].platformId` | string | (Опционально) Платформа виртуализации провайдера, например `standard-v2` |
| `data[].coreFraction` | string | (Опционально) Доля CPU — например `"5"` для 5% загрузки ядра. Приходит у вытесняемых тарифов `bc-micro` и `bc-agent` |
| `data[].preemptible` | boolean | (Опционально) `true` у вытесняемого тарифа. Приходит только у `bc-micro` и `bc-agent`, у остальных тарифов поле отсутствует — это равносильно `false` |

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

```json
{
  "success": true,
  "data": [
    {
      "id": "bc-small",
      "name": "Small (2C / 2GB / 20GB SSD)",
      "cpu": 2,
      "ram": 2048,
      "disk": 20,
      "diskType": "network-ssd",
      "bandwidth": 100,
      "priceMonthly": 1200,
      "sleepPriceMonthly": 180
    },
    {
      "id": "bc-micro",
      "name": "Micro (2C 5% / 4GB / 15GB SSD)",
      "description": "Для ботов и агентов",
      "cpu": 2,
      "ram": 4096,
      "disk": 15,
      "diskType": "network-ssd",
      "bandwidth": 100,
      "priceMonthly": 600,
      "sleepPriceMonthly": 130,
      "platformId": "standard-v2",
      "coreFraction": "5",
      "preemptible": true
    }
  ]
}
```

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

404 — неизвестный `providerId`:

```json
{
  "success": false,
  "error": {
    "code": "NO_CREDENTIALS",
    "message": "No credentials configured for provider nonexistent"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |
| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |
| 404 | `NO_CREDENTIALS` | Провайдер с таким `providerId` не сконфигурирован на платформе |
| 429 | `RATE_LIMITED` | Превышен общий лимит запросов платформы |

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

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

- Тарифы `bc-micro` (2C 5% / 4GB / 15GB SSD) и `bc-agent` (2C 5% / 2GB / 20GB SSD) — **вытесняемые (preemptible)** с 5% загрузкой ядра. Предназначены для ботов и агентов, где CPU расходуется точечно. Обычные приложения ставьте на `bc-small` и выше.
- **Следствие вытесняемости.** Вытесняемый тариф дешевле, но облако принудительно перезапускает такую машину примерно раз в сутки, с коротким окном недоступности. Платформа будит её обратно автоматически. Для непрерывных 24/7-нагрузок — демонов, обработчиков срочных заявок, всегда-онлайн агентов и ботов — выбирайте **невытесняемый** тариф, `bc-small` и выше.
- Ответ не пагинируется.

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

- [Список провайдеров](./list.md) — `GET /v1/infra/providers`.
- [Регионы провайдера](./regions.md) — `GET /v1/infra/providers/:providerId/regions`.
- [Образы ОС провайдера](./images.md) — `GET /v1/infra/providers/:providerId/images`.
- [Создание сервера](/docs/infra/servers/create) — параметр `plan`.
