Timeweb Cloud API: Создать облачный сервер из скрипта

Сценарий из mcp-everything. Актуально на 2026-10-24.

Поднять сервер под проект, тест или клиента — с нужной ОС, тарифом и SSH-ключом.

  1. Создай токен в панели управления (раздел «API и Terraform») и передавай его в заголовке Authorization: Bearer <токен>.
  2. Выбери тариф и ОС: GET /api/v1/presets/servers (server_presets) и GET /api/v1/os/servers (servers_os).
  3. Добавь свой SSH-ключ, если его ещё нет: POST /api/v1/ssh-keys с name, body и is_default. Список ключей — GET /api/v1/ssh-keys.
  4. Создай сервер: POST /api/v1/servers с name, preset_id (или configuration — не оба), os_id, ssh_keys_ids и availability_zone. Ответ 201 с объектом server.
  5. Сервер ещё может запускаться — проверяй status через GET /api/v1/servers/{server_id}, пока он не станет рабочим.
curl -X POST https://api.timeweb.cloud/api/v1/servers \
  -H "Authorization: Bearer $TIMEWEB_CLOUD_TOKEN" -H 'Content-Type: application/json' \
  -d '{
        "name": "web-1042",
        "preset_id": <ID тарифа>,
        "os_id": <ID ОС>,
        "ssh_keys_ids": [<ID ключа>],
        "availability_zone": "msk-1",
        "is_ddos_guard": false,
        "comment": "Сервер для клиента 1042"
      }'

Базовые URL

Авторизация

Тип: Bearer-токен

JWT-токен создаётся в панели управления в разделе «API и Terraform» и передаётся в каждом запросе:

Authorization: Bearer $TIMEWEB_CLOUD_TOKEN

Методы сценария

POST /api/v1/servers — Создание сервера

Нужен preset_id или configuration (одно из двух). Ответ 201 с объектом server; сервер может ещё запускаться — смотрите status.

Параметр Где Тип Обяз. Описание
name body string да Имя сервера, до 255 символов
preset_id body number нет ID тарифа (нельзя вместе с configuration)
configuration.configurator_id body number нет ID конфигуратора (обязателен внутри configuration)
configuration.disk body number нет Диск, МБ
configuration.cpu body number нет Число ядер
configuration.ram body number нет ОЗУ, МБ
configuration.gpu body number нет Число видеокарт
os_id body number нет ID ОС (нельзя вместе с image_id)
image_id body string нет ID образа
software_id body number нет ID ПО из маркетплейса
bandwidth body number нет Пропускная способность: 100–1000 с шагом 100
is_ddos_guard body boolean нет Защищённый IP (L3/L4)
ssh_keys_ids body array нет SSH-ключи
is_local_network body boolean нет Локальная сеть
network.id body string нет ID приватной сети
network.floating_ip body string нет Публичный IP
network.local_ip body string нет Приватный IP
cloud_init body string нет Cloud-init скрипт
availability_zone body string нет spb-1…spb-4, msk-1, nsk-1, ams-1, ala-1, fra-1
project_id body number нет ID проекта
hostname body string нет Сетевое имя
comment body string нет Комментарий, до 255 символов

GET /api/v1/servers/{server_id} — Получение сервера

Параметр Где Тип Обяз. Описание
server_id path integer да ID сервера

GET /api/v1/presets/servers — Тарифы серверов

В ответе server_presets.

Параметр Где Тип Обяз. Описание
Authorization header string да Bearer <токен>

GET /api/v1/os/servers — Операционные системы

В ответе servers_os.

Параметр Где Тип Обяз. Описание
Authorization header string да Bearer <токен>

GET /api/v1/ssh-keys — Список SSH-ключей

Параметр Где Тип Обяз. Описание
Authorization header string да Bearer <токен>

POST /api/v1/ssh-keys — Создание SSH-ключа

Параметр Где Тип Обяз. Описание
name body string да Название
body body string да Тело ключа
is_default body boolean да Выбирать по умолчанию при создании сервера

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://timeweb.cloud/api-docs Вся интеграция одним документом: https://mcp-everything.ru/integrations/timeweb-cloud.md