[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-infra\u002Fproviders\u002Flist":3,"docs-tabs-infra\u002Fproviders\u002Flist":6},{"content":4,"lastmod":5},"\n## Список провайдеров\n\n`GET \u002Fv1\u002Finfra\u002Fproviders`\n\nВозвращает список облачных провайдеров, на которых можно создавать серверы. Поле `available` показывает, настроены ли у платформы учётные данные для провайдера и готов ли он создавать новые виртуальные машины (VM).\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -H \"X-Api-Key: YOUR_API_KEY\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders', {\n  headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n})\nconst { data } = await res.json()\nconst active = data.filter(p => p.available)\nconsole.log('Доступные провайдеры:', active.map(p => p.id))\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\nconst { data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|----------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | array | Массив провайдеров |\n| `data[].id` | string | ID провайдера для передачи в `provider` при создании сервера (например `bitrix-cloud`) |\n| `data[].name` | string | Название для отображения пользователю |\n| `data[].available` | boolean | `true`, если провайдер сконфигурирован на платформе и готов создавать серверы. `false` — создание закончится ошибкой `NO_CREDENTIALS` |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"id\": \"bitrix-cloud\",\n      \"name\": \"Bitrix Cloud\",\n      \"available\": true\n    }\n  ]\n}\n```\n\n## Пример ответа при ошибке\n\n401 — не передан API-ключ:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"MISSING_API_KEY\",\n    \"message\": \"API key required. Pass via X-Api-Key header.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n| 403 | `SCOPE_DENIED` | У ключа нет скоупа `vibe:infra` (добавляется автоматически — сообщите в [feedback](\u002Fv1\u002Ffeedback) если встретили) |\n| 429 | `RATE_LIMITED` | Превышен общий лимит запросов платформы |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- Ответ не пагинируется — список небольшой, возвращается целиком.\n\n## Смотрите также\n\n- [Тарифы провайдера](.\u002Fplans.md) — `GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fplans`.\n- [Регионы провайдера](.\u002Fregions.md) — `GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fregions`.\n- [Образы ОС провайдера](.\u002Fimages.md) — `GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fimages`.\n- [Создание сервера](\u002Fdocs\u002Finfra\u002Fservers\u002Fcreate) — куда уходит выбранный `provider`.\n","2026-06-25",{"plans.md":7,"regions.md":8,"images.md":9},"\n## Тарифы провайдера\n\n`GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fplans`\n\nВозвращает список тарифов провайдера с характеристиками (CPU, RAM, диск, цена за работу и за сон). Значение `id` используется как параметр `plan` при [создании сервера](\u002Fdocs\u002Finfra\u002Fservers\u002Fcreate).\n\n## Параметры\n\n| Параметр | В | Тип | Обяз. | Описание |\n|----------|---|-----|:-----:|----------|\n| `providerId` | path | string | да | ID провайдера из [`GET \u002Fv1\u002Finfra\u002Fproviders`](.\u002Flist.md), например `bitrix-cloud` |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -H \"X-Api-Key: YOUR_API_KEY\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fplans\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fplans\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fplans',\n  { headers: { 'X-Api-Key': 'YOUR_API_KEY' } }\n)\nconst { data: plans } = await res.json()\nplans.forEach(p => console.log(\n  `${p.id}: ${p.cpu}C \u002F ${p.ram}MB \u002F ${p.disk}GB — ${p.priceMonthly}₽\u002Fмес`\n))\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fplans',\n  {\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n    },\n  }\n)\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|----------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | array | Массив тарифов |\n| `data[].id` | string | ID тарифа, передаётся как `plan` при создании сервера (`bc-small`, `bc-medium`, `bc-large`, `bc-xlarge`, `bc-micro`, `bc-agent`) |\n| `data[].name` | string | Название тарифа с характеристиками для отображения пользователю |\n| `data[].cpu` | number | Количество ядер |\n| `data[].ram` | number | Оперативная память, МБ |\n| `data[].disk` | number | Диск, ГБ |\n| `data[].diskType` | string | Тип диска (`network-ssd`) |\n| `data[].bandwidth` | number | Пропускная способность сети, Мбит\u002Fс |\n| `data[].priceMonthly` | number | Цена за работающий сервер. Валюта зависит от провайдера: для `bitrix-cloud` — рубли (₽\u002Fмесяц), для `aws` — доллары США (USD\u002Fмесяц). Поля `currency` в ответе пока нет — ориентируйтесь по `providerId` |\n| `data[].sleepPriceMonthly` | number | Цена за сервер в режиме `sleeping`. Валюта — как у `priceMonthly`: `bitrix-cloud` — рубли, `aws` — доллары США (USD) |\n| `data[].description` | string | (Опционально) Доп. описание тарифа, например `\"Для ботов и агентов\"` у `bc-micro` |\n| `data[].platformId` | string | (Опционально) Платформа виртуализации провайдера, например `standard-v2` |\n| `data[].coreFraction` | string | (Опционально) Доля CPU — например `\"5\"` для 5% загрузки ядра (preemptible-тарифы `bc-micro`, `bc-agent`) |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"id\": \"bc-small\",\n      \"name\": \"Small (2C \u002F 2GB \u002F 20GB SSD)\",\n      \"cpu\": 2,\n      \"ram\": 2048,\n      \"disk\": 20,\n      \"diskType\": \"network-ssd\",\n      \"bandwidth\": 100,\n      \"priceMonthly\": 1200,\n      \"sleepPriceMonthly\": 180\n    },\n    {\n      \"id\": \"bc-micro\",\n      \"name\": \"Micro (2C 5% \u002F 4GB \u002F 15GB SSD)\",\n      \"description\": \"Для ботов и агентов\",\n      \"cpu\": 2,\n      \"ram\": 4096,\n      \"disk\": 15,\n      \"diskType\": \"network-ssd\",\n      \"bandwidth\": 100,\n      \"priceMonthly\": 600,\n      \"sleepPriceMonthly\": 130,\n      \"platformId\": \"standard-v2\",\n      \"coreFraction\": \"5\"\n    }\n  ]\n}\n```\n\n## Пример ответа при ошибке\n\n404 — неизвестный `providerId`:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"NO_CREDENTIALS\",\n    \"message\": \"No credentials configured for provider nonexistent\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n| 404 | `NO_CREDENTIALS` | Провайдер с таким `providerId` не сконфигурирован на платформе |\n| 429 | `RATE_LIMITED` | Превышен общий лимит запросов платформы |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- Тарифы `bc-micro` (2C 5% \u002F 4GB \u002F 15GB SSD, 600₽\u002Fмес) и `bc-agent` (2C 5% \u002F 2GB \u002F 20GB SSD, 300₽\u002Fмес) — **вытесняемые (preemptible)** с 5% загрузкой ядра. Предназначены для ботов и агентов, где CPU расходуется точечно. Обычные приложения ставьте на `bc-small` и выше.\n- **Следствие вытесняемости.** Вытесняемый тариф дешевле, но облако принудительно перезапускает такую машину примерно раз в сутки (с коротким окном недоступности); платформа авто-будит её обратно. Для непрерывных 24\u002F7-нагрузок (демоны, обработчики срочных заявок, всегда-онлайн агенты\u002Fботы) выбирайте **невытесняемый** тариф — `bc-small` и выше. В ответе каждого тарифа поле `preemptible` (`true` = вытесняемый; отсутствует\u002F`false` = невытесняемый) позволяет отличить их программно.\n- `priceMonthly` и `sleepPriceMonthly` отдаются в валюте провайдера: для `bitrix-cloud` — в рублях, для `aws` — в долларах США (USD). Поля `currency` в ответе пока нет — определяйте валюту по `providerId` запроса.\n- Ответ не пагинируется.\n\n## Смотрите также\n\n- [Список провайдеров](.\u002Flist.md) — `GET \u002Fv1\u002Finfra\u002Fproviders`.\n- [Регионы провайдера](.\u002Fregions.md) — `GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fregions`.\n- [Образы ОС провайдера](.\u002Fimages.md) — `GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fimages`.\n- [Создание сервера](\u002Fdocs\u002Finfra\u002Fservers\u002Fcreate) — параметр `plan`.\n","\n## Регионы провайдера\n\n`GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fregions`\n\nВозвращает список дата-центров (зон), в которых провайдер может размещать виртуальные машины. Значение `id` используется как параметр `region` при [создании сервера](\u002Fdocs\u002Finfra\u002Fservers\u002Fcreate). По умолчанию выбирайте **первый элемент массива** — он является актуальной запасной зоной платформы с запасом свободных IP.\n\n## Параметры\n\n| Параметр | В | Тип | Обяз. | Описание |\n|----------|---|-----|:-----:|----------|\n| `providerId` | path | string | да | ID провайдера из [`GET \u002Fv1\u002Finfra\u002Fproviders`](.\u002Flist.md), например `bitrix-cloud` |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -H \"X-Api-Key: YOUR_API_KEY\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fregions\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fregions\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fregions',\n  { headers: { 'X-Api-Key': 'YOUR_API_KEY' } }\n)\nconst { data: regions } = await res.json()\nconst defaultRegion = regions[0].id  \u002F\u002F актуальный фолбэк платформы\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fregions',\n  {\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n    },\n  }\n)\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|----------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | array | Массив регионов |\n| `data[].id` | string | ID региона, передаётся как `region` при создании сервера (например `ru-central1-b`) |\n| `data[].name` | string | Название для отображения пользователю (например `\"Москва (зона B)\"`) |\n| `data[].country` | string | Двухбуквенный код страны ISO 3166-1 (`RU`) |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    { \"id\": \"ru-central1-b\", \"name\": \"Москва (зона B)\", \"country\": \"RU\" },\n    { \"id\": \"ru-central1-a\", \"name\": \"Москва (зона A)\", \"country\": \"RU\" },\n    { \"id\": \"ru-central1-d\", \"name\": \"Москва (зона D)\", \"country\": \"RU\" },\n    { \"id\": \"ru-central1-e\", \"name\": \"Москва (зона E)\", \"country\": \"RU\" }\n  ]\n}\n```\n\n## Пример ответа при ошибке\n\n404 — неизвестный `providerId`:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"NO_CREDENTIALS\",\n    \"message\": \"No credentials configured for provider nonexistent\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n| 404 | `NO_CREDENTIALS` | Провайдер с таким `providerId` не сконфигурирован на платформе |\n| 429 | `RATE_LIMITED` | Превышен общий лимит запросов платформы |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- **Переключение на запасную зону при исчерпании IP-адресов.** Если в запрошенной зоне у провайдера кончились свободные IP, при создании сервера платформа автоматически пробует следующие зоны массива в порядке их появления и в ответе создания проставляет `region`, куда сервер реально попал. Факт переключения на запасную зону фиксируется в аудит-логе событием `SERVER_ZONE_FALLBACK` с исходной и реальной зонами.\n- Ответ не пагинируется.\n\n## Смотрите также\n\n- [Список провайдеров](.\u002Flist.md) — `GET \u002Fv1\u002Finfra\u002Fproviders`.\n- [Тарифы провайдера](.\u002Fplans.md) — `GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fplans`.\n- [Образы ОС провайдера](.\u002Fimages.md) — `GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fimages`.\n- [Создание сервера](\u002Fdocs\u002Finfra\u002Fservers\u002Fcreate) — параметр `region`.\n","\n## Образы ОС провайдера\n\n`GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fimages`\n\nВозвращает список образов операционной системы, на которых можно поднять сервер. Значение `id` используется как параметр `image` при [создании сервера](\u002Fdocs\u002Finfra\u002Fservers\u002Fcreate). Провайдер `bitrix-cloud` поддерживает только Ubuntu 24.04 LTS — образ из ответа регулярно обновляется до свежей сборки с патчами безопасности.\n\n## Параметры\n\n| Параметр | В | Тип | Обяз. | Описание |\n|----------|---|-----|:-----:|----------|\n| `providerId` | path | string | да | ID провайдера из [`GET \u002Fv1\u002Finfra\u002Fproviders`](.\u002Flist.md), например `bitrix-cloud` |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -H \"X-Api-Key: YOUR_API_KEY\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fimages\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fimages\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fimages',\n  { headers: { 'X-Api-Key': 'YOUR_API_KEY' } }\n)\nconst { data: images } = await res.json()\nconst defaultImage = images[0].id  \u002F\u002F актуальная сборка Ubuntu 24.04 LTS\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Finfra\u002Fproviders\u002Fbitrix-cloud\u002Fimages',\n  {\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n    },\n  }\n)\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|----------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | array | Массив образов |\n| `data[].id` | string | ID образа, передаётся как `image` при создании сервера. Меняется при обновлении сборки — всегда берите актуальный из ответа, не хардкодьте |\n| `data[].name` | string | Имя образа для отображения пользователю |\n| `data[].family` | string | Семейство образов (`ubuntu-2404-lts`) |\n| `data[].version` | string | Версия сборки |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"id\": \"fd83esfomhq25p2ono90\",\n      \"name\": \"Ubuntu 24.04 lts v20260410040341\",\n      \"family\": \"ubuntu-2404-lts\",\n      \"version\": \"ubuntu.24.04.lts.v20260413\"\n    }\n  ]\n}\n```\n\n## Пример ответа при ошибке\n\n404 — неизвестный `providerId`:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"NO_CREDENTIALS\",\n    \"message\": \"No credentials configured for provider nonexistent\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n| 404 | `NO_CREDENTIALS` | Провайдер с таким `providerId` не сконфигурирован на платформе |\n| 429 | `RATE_LIMITED` | Превышен общий лимит запросов платформы |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- **Не кешируйте `id` на клиенте.** ID образа меняется при каждом обновлении сборки — запрашивайте свежий перед каждым созданием сервера.\n- **Другие семейства ОС не поддерживаются.** Cloud-init скрипты настройки туннеля и рантаймов рассчитаны именно на Ubuntu 24.04 LTS. Debian, CentOS и прочие дистрибутивы не работают, даже если их образы доступны в Bitrix Cloud напрямую.\n- Ответ не пагинируется.\n\n## Смотрите также\n\n- [Список провайдеров](.\u002Flist.md) — `GET \u002Fv1\u002Finfra\u002Fproviders`.\n- [Тарифы провайдера](.\u002Fplans.md) — `GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fplans`.\n- [Регионы провайдера](.\u002Fregions.md) — `GET \u002Fv1\u002Finfra\u002Fproviders\u002F:providerId\u002Fregions`.\n- [Создание сервера](\u002Fdocs\u002Finfra\u002Fservers\u002Fcreate) — параметр `image`.\n"]