# Beget API хостинга: Создать сайт и привязать к нему домен

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

Развернуть новый сайт клиента на хостинге: каталог сайта, домен, привязка.

1. Задай API-пароль в панели Beget. В каждом запросе передаются login и passwd (URL-кодированный). Формат вызова — https://api.beget.com/api/<раздел>/<метод>.
2. Для методов с аргументами передавай input_format = json и input_data — JSON-строкой, URL-кодированной. output_format = json вернёт ответ в JSON.
3. Создай каталог сайта: GET /api/site/add с input_data.name (например, shop.ru) — полный путь будет shop.ru/public_html.
4. Добавь домен: GET /api/domain/addVirtual с hostname (имя без зоны) и zone_id (ID зоны из GET /api/domain/getZoneList). Метод вернёт ID домена.
5. Привяжи домен к сайту: GET /api/site/linkDomain с domain_id и site_id. Сайт откроется через 5–10 минут. Ошибки метода приходят внутри успешного ответа: answer.status = error и массив answer.errors.

```bash
AUTH='login=<логин>&passwd=<API-пароль>&output_format=json&input_format=json'

curl "https://api.beget.com/api/site/add?$AUTH" --data-urlencode 'input_data={"name": "shop.ru"}' -G
curl "https://api.beget.com/api/domain/addVirtual?$AUTH" --data-urlencode 'input_data={"hostname": "shop", "zone_id": 1}' -G
curl "https://api.beget.com/api/site/linkDomain?$AUTH" --data-urlencode 'input_data={"domain_id": <ID домена>, "site_id": <ID сайта>}' -G
```

## Базовые URL

- Боевой: `https://api.beget.com`
- Формат вызова: `https://api.beget.com/api/раздел/метод?параметры`

## Авторизация

Тип: Другое

В каждом запросе передаются `login` (логин аккаунта) и `passwd` (API-пароль, URL-кодированный).

```
https://api.beget.com/api/user/getAccountInfo?login=user&passwd=mypassword
```

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

### GET /api/domain/getZoneList — Доменные зоны и цены

В `result`: `id`, `zone`, `price`, `price_renew`, `is_idn`, `min_period`, `max_period` и др.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `login` | query | string | да | Логин |
| `passwd` | query | string | да | API-пароль |

### GET /api/domain/addVirtual — Добавление домена

Возвращает ID домена.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `input_format` | query | string | да | json |
| `input_data.hostname` | query | string | да | Имя домена без зоны |
| `input_data.zone_id` | query | integer | да | ID зоны |

Пример запроса:

```
https://api.beget.com/api/domain/addVirtual?login=userlogin&passwd=password&input_format=json&output_format=json&input_data={"hostname":"domain","zone_id": 1}
```

### GET /api/site/add — Создание сайта

Полный путь сайта — `name/public_html`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `input_format` | query | string | да | json |
| `input_data.name` | query | string | да | Имя директории сайта, например site.ru |

### GET /api/site/linkDomain — Привязка домена к сайту

Сайт начнёт открываться через 5–10 минут.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `input_format` | query | string | да | json |
| `input_data.domain_id` | query | integer | да | ID домена |
| `input_data.site_id` | query | integer | да | ID сайта |

## Нюансы

- `input_format`: `plain` (по умолчанию) или `json`; при `json` все аргументы метода передаются в `input_data` JSON-строкой, URL-кодированной.
- Успешный ответ: `{"status": "success", "answer": ...}`; результат метода — в `answer.result`. Ошибка метода приходит внутри успешного ответа: `answer.status` = `error`, массив `answer.errors`.
- Изменения (заморозка сайта, привязка домена, создание БД) выполняются в очереди и применяются через несколько минут.
- Другие разделы: `stat` (статистика), `mail`, `ftp`, `cron`; методы `domain/getSubdomainList`, `deleteSubdomain`, `getDirectives`, `addDirectives`, `site/delete`, `freeze`, `unfreeze`, `mysql/addAccess`, `dropDb`, `backup/getLog` и др.

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

- [Изменить DNS-записи домена](https://mcp-everything.ru/integrations/beget/scenarios/izmenit-dns-zapisi-domena.md)
- [Создать базу MySQL для сайта](https://mcp-everything.ru/integrations/beget/scenarios/sozdat-bazu-mysql-dlya-sayta.md)
- [Проверить аккаунт и восстановить файлы из бэкапа](https://mcp-everything.ru/integrations/beget/scenarios/proverit-akkaunt-i-vosstanovit-fayly.md)

---

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