Для AI-агентов: markdown этой страницы — /docs-content/infra/servers/list.md индекс документации — /llms.txt
Список серверов
GET /v1/infra/servers
Возвращает три группы: серверы текущего API-ключа, хосты-галактики, на которые ссылаются его galaxy-приложения, и серверы, где владелец ключа состоит в команде разработки. У хоста по ссылке приходит только безопасная строка для чтения с access.via: "galaxy-reference". Каждая строка несёт блок access, который объясняет основание доступа. Удалённые серверы текущего ключа (status: "deleted") по умолчанию не попадают в выдачу — чтобы их увидеть, передайте ?includeDeleted=true. Параметр не возвращает удалённые хосты или ссылки через удалённые приложения. Остальные серверы не видны даже в том же портале. Для просмотра всех серверов портала используйте панель администратора в личном кабинете.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
includeDeleted |
string | Нет | Передайте true, чтобы в выдачу попали удалённые серверы текущего ключа. Любое другое значение, как и отсутствие параметра, оставляет выдачу по умолчанию. На строки collaborator и galaxy-reference параметр не действует |
page |
number | Нет | Номер страницы, начиная с 1. Действует только на серверы, где вы состоите в команде разработки. Собственные строки и хосты по ссылке приходят целиком — см. «Известные особенности» |
limit |
number | Нет | Размер страницы, 1..500, по умолчанию 50. Учитывается, только если передан page и/или limit, и ограничивает только строки collaborator |
Зачем это нужно: исходники переживают сервер. Удалив сервер, вы по-прежнему можете посмотреть его версии исходников, снять с них тег, скачать или очистить — но для этого нужен его идентификатор, а получить его больше неоткуда. Контракт исходников описан на странице Хранилище исходников.
Примеры
curl — личный ключ
curl -H "X-Api-Key: YOUR_API_KEY" \
https://vibecode.bitrix24.tech/v1/infra/servers
curl — OAuth-приложение
curl -H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
https://vibecode.bitrix24.tech/v1/infra/servers
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/infra/servers', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data: servers } = await res.json()
servers.forEach(s => {
if (s.access.via === 'galaxy-reference') {
console.log(`${s.name}: общий хост доступен только для чтения`)
return
}
const ready = s.status === 'running' && s.blackholeStatus === 'CONNECTED'
console.log(`${s.name}: ${ready ? '✓ готов' : s.status} — ${s.appUrl}`)
})
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/infra/servers', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data: servers } = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе |
data |
array | Массив из собственных строк, уникальных хостов galaxy-reference и строк collaborator, именно в таком порядке. Набор полей собственной строки отличается от полной карточки GET /v1/infra/servers/:id: detail дополнительно содержит reachability, ssh.hasPassword внутри непустого ssh, localPort, portPinned, buildLog и buildHint, а строка списка — deletedAt и access: { via: "owner" }. Ни один из этих GET не возвращает ssh.password или ssh.privateKey. Строка участника команды короче. Строка хоста по ссылке содержит только id, status, kind, galaxyId, name, displayName, createdAt и access. Проверяйте наличие поля, прежде чем его читать |
data[].id |
string (UUID) | ID сервера |
data[].status |
string | Последний сохранённый статус: provisioning, running, stopped, sleeping, error, deleted. Удалённые собственные серверы (deleted) по умолчанию не попадают в выдачу — см. includeDeleted |
data[].deletedAt |
string | null | Момент удаления сервера в ISO-8601. null у живых серверов |
data[].provider |
string | ID провайдера |
data[].kind |
string | Тип ресурса: STANDALONE (отдельная виртуальная машина), GALAXY (галактика — хост-носитель galaxy-приложений) или GALAXY_APP (galaxy-приложение на общем хосте). Определяет контракт деплоя |
data[].galaxyId |
string (UUID) | null | Для GALAXY_APP — ID хоста-носителя. Для остальных типов null |
data[].appCount |
number | null | Для GALAXY-хоста — число неудалённых приложений на нём. Для остальных типов null |
data[].diskTotalMb |
number | null | Размер диска машины-галактики в мебибайтах. Для STANDALONE и GALAXY_APP — null |
data[].diskFreeMb |
number | null | Свободное место на диске машины-галактики в мебибайтах. Для STANDALONE и GALAXY_APP — null |
data[].diskState |
string | null | Оценка занятости диска: ok, warning, critical или unknown, если замера ещё не было. Пороги описаны в Галактика. Для STANDALONE и GALAXY_APP — null |
data[].diskProbedAt |
string (ISO 8601) | null | Время замера диска. У спящей машины приходит последнее известное значение вместе с временем этого замера |
data[].name |
string | Системное имя сервера |
data[].displayName |
string | null | Отображаемое имя для личного кабинета. Если не передавалось — совпадает с name |
data[].description |
string | null | Описание приложения для карточки каталога Битрикс24. null, если описание не задавали. Меняется через PATCH /v1/infra/servers/:id |
data[].ip |
string | null | Публичный IP (может быть null, пока идёт создание сервера) |
data[].ssh |
object | null | Блок SSH-данных: { user, port }. Поля hasPassword, password и privateKey в списке не присутствуют |
data[].plan |
string | Тариф. Для galaxy-приложения (kind: "GALAXY_APP") возвращается тариф хоста-носителя, а не запрошенный |
data[].region |
string | Фактический регион сервера — может отличаться от запрошенного после переключения на запасную зону. Для galaxy-приложения возвращается регион хоста-носителя |
data[].image |
string | Образ ОС |
data[].monthlyCost |
string | Каталожная месячная стоимость в Вайбах (Ꝟ), строкой: "1200" или "1200.00". Фактическое списание может отличаться. Сравнивайте с Number(s.monthlyCost) |
data[].mode |
string | BLACKHOLE или OPEN |
data[].createdVia |
string | api — вызов через API Вайбкод, ui — действие в личном кабинете, galaxy — galaxy-приложение. У серверов агентов и ботов приходят собственные значения |
data[].subdomain |
string | Субдомен для приложения |
data[].blackholeStatus |
string | Состояние туннеля: NONE, CONNECTED, DISCONNECTED. Сохранённый CONNECTED может стать DISCONNECTED только в этом ответе, если непустой снимок шлюза не содержит туннель |
data[].accessPolicy |
string | Политика доступа: OWNER_ONLY, NAMED_USERS, DEPARTMENT, PORTAL, AUTHENTICATED, PUBLIC |
data[].runtimeId |
string | null | ID рантайма, установленного через POST /:id/deploy (создание сервера всегда даёт null). |
data[].runtimeStatus |
string | null | Устаревшее поле, оставлено для совместимости. Для серверов, созданных после 2026-04-25, всегда возвращается null. Рантайм ставится на этапе POST /:id/deploy, а сигнал его готовности — успех шага runtime в ответе деплоя, а не значение этого поля |
data[].appUrl |
string | null | HTTPS-адрес приложения |
data[].sleepAfterMinutes |
number | null | Через сколько минут простоя сервер автоматически усыпляется. null — не усыплять автоматически |
data[].idleSleepProtected |
boolean | true, если сон по простою недоступен: сервер должен оставаться на связи. Поле сообщает только решение и не раскрывает ботов или API-ключи |
data[].runMode |
string | Режим работы: IDLE — засыпает по простою, SCHEDULE — работает по расписанию, ALWAYS — круглосуточно. Выводится из назначенного расписания, idleSleepProtected, createdVia и sleepAfterMinutes. Защищённый сервер без расписания имеет режим ALWAYS, даже если хранит числовой порог |
data[].workSchedule |
object | null | Назначенное расписание или null. Поля: id, name (у готового расписания платформы пустое — опознавайте по presetKey), presetKey, timezone, windows. Каждое окно — {{ isoDay, start, end }}, где isoDay это 1…7 от понедельника, а start и end — местное время расписания в виде ЧЧ:ММ. Окна приходят СПИСКОМ: в одном дне их может быть два, например смена с перерывом |
data[].provisionError |
string | null | Краткая причина последней ошибки создания или сборки. null, если ошибок не было |
data[].provisionErrorCode |
string | null | Машиночитаемый код категории сбоя: PREEMPTIBLE_EVICTION / PROVISION_TIMEOUT / NO_CAPACITY / GUEST_NOT_BOOTING / AGENT_NEVER_CONNECTED / DISK_FULL / GENERIC. null, если ошибок не было. Значение GUEST_NOT_BOOTING терминальное. Разбор этого значения и DISK_FULL — в «Известных особенностях» |
data[].provisionReason |
string | null | Структурный признак причины сбоя galaxy-приложения: oom — не хватило памяти контейнера, или crash. null у обычных серверов и когда сбоя не было. Значение oom — сигнал перенести приложение на выделенный сервер, порядок описан в Создать сервер |
data[].b24CatalogSync |
object | Состояние карточки приложения в каталоге приложений Вайбкод на портале Битрикс24: { status, itemId, attempts, pendingOp, eligible }. Разбор полей — Опубликовать в каталоге |
data[].createdAt |
string (ISO 8601) | Момент создания |
data[].access |
object | Как этот сервер попал в выдачу. Приходит у каждой строки |
data[].access.via |
string | owner — сервером управляет текущий ключ, galaxy-reference — собственное живое galaxy-приложение ссылается на этот живой хост того же портала, collaborator — вы состоите в команде разработки сервера. У строки owner блок этим полем и исчерпывается |
data[].access.role |
string | Только при via: "collaborator". Ваша роль: DEVELOPER — работа с кодом, ADMIN — дополнительно управление машиной |
data[].access.allowedActions |
array | При via: "collaborator" перечисляет возможности роли: read, code, sources, wake, а у ADMIN ещё lifecycle, settings, audience, catalogMeta и billing. При via: "galaxy-reference" содержит только read |
data[].access.allowedEndpoints |
array | Готовые к вызову операции. При via: "collaborator" перечень покрывает чтение карточки, работу с кодом и исходниками и пробуждение. При via: "galaxy-reference" содержит только GET /v1/infra/servers и GET /v1/infra/servers/:id |
data[].access._note |
string | При via: "collaborator" объясняет командный доступ. При via: "galaxy-reference" предупреждает, что хост доступен только для чтения, а операции управления и работы с приложением нужно адресовать ресурсам текущего ключа |
total |
number | Только при запросе с page и/или limit: число всех уникальных строк без пагинации, то есть собственные серверы, хосты по ссылке и все членства |
page |
number | Только при запросе с page и/или limit: применённый номер страницы |
limit |
number | Только при запросе с page и/или limit: применённый размер страницы |
Пример ответа
{
"success": true,
"data": [
{
"id": "e765edfc-ba0a-43de-b8ea-838dd872c522",
"status": "running",
"provider": "bitrix-cloud",
"kind": "STANDALONE",
"galaxyId": null,
"appCount": null,
"diskTotalMb": null,
"diskFreeMb": null,
"diskState": null,
"diskProbedAt": null,
"name": "vibe-server-pd9l",
"displayName": "vibe-server-pd9l",
"description": null,
"ip": "111.88.251.211",
"ssh": {
"user": "ubuntu",
"port": 22
},
"plan": "bc-small",
"region": "ru-central1-a",
"image": "fd80bm0rh4rkepi5ksdi",
"monthlyCost": "1200",
"mode": "OPEN",
"createdVia": "ui",
"subdomain": "app-05b67cf7",
"blackholeStatus": "CONNECTED",
"accessPolicy": "OWNER_ONLY",
"runtimeId": null,
"runtimeStatus": null,
"appUrl": "https://app-05b67cf7.vibecode.bitrix24.tech",
"sleepAfterMinutes": null,
"idleSleepProtected": false,
"runMode": "IDLE",
"workSchedule": null,
"provisionError": null,
"provisionErrorCode": null,
"provisionReason": null,
"b24CatalogSync": {
"status": "IDLE",
"itemId": null,
"attempts": 0,
"pendingOp": null,
"eligible": true
},
"createdAt": "2026-04-03T13:30:25.819Z",
"access": { "via": "owner" }
},
{
"id": "3f7a91c4-6e0b-42d8-8b55-19ad7c204e6f",
"status": "running",
"kind": "GALAXY",
"galaxyId": null,
"name": "vibe-galaxy-host-q7x2",
"displayName": "Общий хост Galaxy",
"createdAt": "2026-06-18T08:15:30.000Z",
"access": {
"via": "galaxy-reference",
"allowedActions": ["read"],
"allowedEndpoints": [
"GET /v1/infra/servers",
"GET /v1/infra/servers/:id"
],
"_note": "This host is readable only because one of your galaxy applications references it. Host management and application operations must target resources owned by your key, not this shared host."
}
},
{
"id": "b0f4c8a2-7d31-4e56-9a10-2c6f5b83de47",
"status": "running",
"provider": "bitrix-cloud",
"kind": "GALAXY_APP",
"galaxyId": "3f7a91c4-6e0b-42d8-8b55-19ad7c204e6f",
"name": "vibe-app-mk4t",
"displayName": "Учёт заявок",
"description": null,
"plan": "bc-small",
"region": "ru-central1-a",
"image": "fd80bm0rh4rkepi5ksdi",
"mode": "BLACKHOLE",
"createdVia": "galaxy",
"subdomain": "app-91c40e7b",
"blackholeStatus": "CONNECTED",
"accessPolicy": "PORTAL",
"runtimeId": null,
"runtimeStatus": null,
"appUrl": "https://app-91c40e7b.vibecode.bitrix24.tech",
"provisionError": null,
"provisionErrorCode": null,
"provisionReason": null,
"createdAt": "2026-08-14T09:12:47.301Z",
"access": {
"via": "collaborator",
"role": "DEVELOPER",
"allowedActions": ["read", "code", "sources", "wake"],
"allowedEndpoints": [
"GET /v1/infra/servers/:id",
"POST /v1/infra/servers/:id/deploy",
"POST /v1/infra/servers/:id/exec",
"POST /v1/infra/servers/:id/upload",
"GET /v1/infra/servers/:id/logs",
"GET /v1/infra/servers/:id/sources",
"GET /v1/infra/servers/:id/sources/:versionId/download",
"POST /v1/infra/servers/:id/sources",
"POST /v1/infra/servers/:id/wake"
],
"_note": "You are on this server's development team, not its owner. Deploying and changing the application code is fully available to you through `allowedEndpoints` — no extra grant and no API-key rebind is needed. Server management (lifecycle, tariff, SSH, access lists) answers 403 SERVER_ROLE_FORBIDDEN and names your role; that is the expected boundary, not a broken permission."
}
}
]
}
Пример ответа при ошибке
401 — не передан API-ключ:
{
"success": false,
"error": {
"code": "MISSING_API_KEY",
"message": "API key required. Pass via X-Api-Key header."
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
| 401 | INVALID_API_KEY |
Ключ не опознан: такой строки на платформе нет |
| 429 | RATE_LIMITED |
Превышен общий лимит запросов платформы |
Полный список общих ошибок API — Ошибки.
Известные особенности
- Сверка туннелей выполняется одним снимком и ничего не чинит. Для работающих BLACKHOLE-серверов со статусом
CONNECTEDсписок использует один текущий снимок шлюза. В непустом снимке отсутствующий субдомен показывается какDISCONNECTED; недоступный шлюз или успешный пустойconnections[]считаются неоднозначными для всего флота и сохраняют значения из базы. GET не пишет статусы и не запускаетrepair; строкиgalaxy-referenceв сверку не входят. - Пустой массив при работающих серверах означает, что текущий ключ ими не управляет, вы не состоите в их командах разработки и его живые galaxy-приложения не ссылаются на их живые хосты. После истечения или отзыва прежнего ключа сервер остаётся привязан к нему. Если прежний ключ удалён, сервер остаётся без управляющего ключа. В обоих случаях новый ключ возвращает пустой
data, хотя серверы работают и видны в личном кабинете. Как вернуть доступ — Восстановление доступа к серверу. - Даже администратор портала видит только свои серверы, хосты по ссылкам собственных galaxy-приложений и серверы, где он в команде разработки. Для портальной картины используйте панель администратора в личном кабинете — прав администратора портала эта выдача не учитывает.
- Строка участника команды короче владельческой. Она собирается отдельным набором полей, а не вырезанием приватных из владельческого: при
access.via: "collaborator"не приходятip,ssh,deletedAt,appCount, поля диска,wakeScheduleCapableиb24CatalogSync. Расходы (monthlyCost) и порог сна с ближайшим пробуждением (sleepAfterMinutes,nextScheduledWakeAt) добавляются только ролиADMIN. Поэтому проверяйте наличие поля в строке, а не считайте его обязательным. - Управляющая операция вне вашей роли отвечает
403 SERVER_ROLE_FORBIDDEN, а не404. Отказ называет вашу роль, требуемый порог и открытые вам вызовы вerror.hint. Это граница роли, а не потерянный доступ: перепривязка ключа и выдача прав заново тут ни при чём — работайте по спискуaccess.allowedEndpointsлибо попросите владельца выполнить операцию. Ключу, который серверу посторонний, существование сервера по-прежнему не раскрывается — там остаётся404. - Хост
galaxy-referenceдоступен только для чтения. Строка появляется, пока живое galaxy-приложение текущего ключа ссылается на живойGALAXY-хост того же портала. Несколько приложений на одном хосте дают одну строку. Если ключ управляет и хостом, приходит полная строкаowner. У строки по ссылке нетrole, данных провайдера, сети, SSH, тарифа, биллинга, ёмкости, сборки или рантайма. Все вызовы к хосту, кроме двухGETизallowedEndpoints, продолжают отвечать так же, как постороннему ключу. - По членству приходят только живые серверы своего портала. Машины-галактики (
kind: "GALAXY") участнику команды не показываются. Они появляются только по отдельному основаниюgalaxy-reference. Удалённые серверы не приходят по членству даже с?includeDeleted=true— этот параметр действует только на серверы текущего ключа. Сервер, которым ключ управляет и в команде которого вы состоите, приходит одной строкой сaccess.via: "owner". appUrlу строки участника пуст, пока аудитория приложения не открывает его вам. Поле заполняется, только если политика доступа сервера (accessPolicy) открывает приложение всем сотрудникам портала либо вам выдан личный грант. Членство в команде даёт код, а не право открыть приложение. Исключение — доступ через подразделение: открыть приложение вы можете, а ссылку поле не покажет, её называет владелец или администратор команды.- Серверы порталов, помеченных удалёнными в Битрикс24, автоматически скрываются. Платформа ежедневно проверяет доступность порталов: если портал отвечает 410/403 три дня подряд, он помечается как удалённый и его серверы перестают отображаться.
- Без
page/limitответ не пагинируется. Собственные серверы и уникальные хосты по ссылке всегда приходят целиком.page/limitрежут только серверы, где вы участник команды разработки. При пагинацииtotalсчитает все три группы без дублей. includeDeleted=trueне показывает серверы удалённых порталов и не восстанавливает ссылочный доступ. Скрытие удалённого портала действует при любом значении параметра. Удалённое приложение или хост тоже не создают строкуgalaxy-reference.GUEST_NOT_BOOTING— терминальное состояние, повтор не поможет. Гостевая операционная система машины не загружается после прерванного обновления.POST /repairиPOST /startотвечают422с этим же кодом, вavailableActionsостаётся толькоdelete, начисление за машину закрыто. Клиент, который запускает или ремонтирует серверы по расписанию, обязан читать это значение: такую машину нужно пересоздать, а не чинить.DISK_FULL— ремонт не смог поставить агента: на диске сервера нет места. Повтор ремонта поможет только после того, как на диске освободится место. Успешный ремонт снимает код. Разбор — Получить сервер.