---
slug: "beget"
name: "Beget API хостинга"
vendor: "Beget"
industry: "cloud"
docsUrl: "https://beget.com/ru/kb/api/beget-api"
version: 2
updatedAt: "2026-10-24"
---

# Beget API хостинга

Отрасль: Облака и хостинг. Актуально на 2026-10-24.

API виртуального хостинга Beget: информация об аккаунте и тарифе, домены и поддомены, DNS-записи, сайты, базы MySQL, FTP, cron, бэкапы, почта и статистика. Запрос — HTTP-вызов вида «раздел/метод» с логином и API-паролем, ответ — JSON. Для облачных сервисов Beget есть отдельный API с JWT-токенами на `https://developer.beget.com`.

## Сценарии

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

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

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
```

### Изменить DNS-записи домена

Направить домен на другой сервер, добавить MX для почты или TXT для подтверждения.

1. Получи текущие записи: GET /api/dns/getData с input_data.fqdn. В ответе records по типам и set_type.
2. Отправь новый набор: GET /api/dns/changeRecords с fqdn и records — одной группой: A, MX и TXT (до 10 каждого), или NS (только для поддоменов), или CNAME (только поддомен, одна запись). У каждой записи priority и value.
3. Метод заменяет группу записей целиком — передавай все записи, которые должны остаться, а не только новые.

```bash
curl -G "https://api.beget.com/api/dns/changeRecords?login=<логин>&passwd=<API-пароль>&input_format=json&output_format=json" \
  --data-urlencode 'input_data={"fqdn": "shop.ru", "records": {
      "A": [{"priority": 10, "value": "203.0.113.10"}],
      "MX": [{"priority": 10, "value": "mx1.beget.com"}, {"priority": 20, "value": "mx2.beget.com"}],
      "TXT": [{"priority": 10, "value": "v=spf1 redirect=beget.com"}]}}'
```

### Создать базу MySQL для сайта

База для нового сайта или CMS.

1. Создай базу: GET /api/mysql/addDb с suffix (имя будет логин_суффикс, не длиннее 16 символов) и password (от 6 символов). Создаётся доступ с localhost.
2. Создание идёт в очереди и занимает несколько минут — проверь, что база появилась: GET /api/mysql/getList.
3. Лимит API — 60 запросов в минуту на пользователя.

```bash
curl -G "https://api.beget.com/api/mysql/addDb?login=<логин>&passwd=<API-пароль>&input_format=json&output_format=json" \
  --data-urlencode 'input_data={"suffix": "shop", "password": "<пароль базы>"}'
```

### Проверить аккаунт и восстановить файлы из бэкапа

Мониторинг тарифа и баланса и восстановление сайта после неудачного обновления.

1. Состояние аккаунта: GET /api/user/getAccountInfo — тариф, баланс, дни до блокировки, использование лимитов. Значение лимита 2147483647 означает «без ограничений».
2. Найди бэкап: GET /api/backup/getFileBackupList — backup_id и date.
3. Восстанови нужные пути: GET /api/backup/restoreFile с backup_id и paths — путями от корня домашней директории. Восстановление выполняется в очереди.

```bash
curl -G "https://api.beget.com/api/backup/restoreFile?login=<логин>&passwd=<API-пароль>&input_format=json&output_format=json" \
  --data-urlencode 'input_data={"backup_id": <ID бэкапа>, "paths": ["shop.ru/public_html/wp-content"]}'
```

## Базовые 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/user/getAccountInfo — Информация об аккаунте

Тариф, баланс, дни до блокировки, использование и лимиты (сайты, домены, MySQL, квота, FTP, почта), параметры сервера и версии ПО. Значение лимита `2147483647` означает «без ограничений».

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

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

```
https://api.beget.com/api/user/getAccountInfo?login=userlogin&passwd=password&output_format=json
```

### GET /api/user/toggleSsh — Включение и отключение SSH

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `login` | query | string | да | Логин |
| `passwd` | query | string | да | API-пароль |
| `status` | query | integer | да | 1 — включить, 0 — выключить |
| `ftplogin` | query | string | нет | Логин FTP-аккаунта; без него — основной аккаунт |

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

```
https://api.beget.com/api/user/toggleSsh?login=userlogin&passwd=password&status=1&ftplogin=ftploginname&output_format=json
```

### GET /api/domain/getList — Список доменов

В `result`: `id`, `fqdn`, `date_add`, `auto_renew`, `date_register`, `date_expire`, `can_renew`, `registrar`, `is_under_control` и др.

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

### 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/domain/delete — Удаление домена

Снимает привязку к сайту и удаляет поддомены.

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

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

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

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `input_format` | query | string | да | json |
| `input_data.subdomain` | query | string | да | Имя поддомена |
| `input_data.domain_id` | query | integer | да | ID родительского домена |

### GET /api/domain/checkDomainToRegister — Проверка возможности регистрации

Регистрация возможна, если `may_be_registered` = `true`, `pay_type` = `money` или `bonus_domain`, `in_system` = `false`.

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

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

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

### GET /api/domain/changePhpVersion — Смена версии PHP

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `full_fqdn` | query | string | да | Полное имя домена |
| `php_version` | query | string | да | Новая версия PHP |
| `is_cgi` | query | boolean | нет | Режим CGI, по умолчанию false |

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

```
https://api.beget.com/api/domain/changePhpVersion?login=userlogin&passwd=password&full_fqdn=example.com&php_version=5.4&is_cgi=true&output_format=json
```

### GET /api/dns/getData — DNS-записи домена

В `result`: `is_under_control`, `is_beget_dns`, `is_subdomain`, `fqdn`, `records` (по типам `DNS`, `DNS_IP`, `A`, `MX`, `TXT`; у записи `value` и `priority`), `set_type` (1 — A/MX/TXT, 2 — NS, 3 — CNAME).

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `input_format` | query | string | да | json |
| `input_data.fqdn` | query | string | да | Полное имя домена |

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

```
https://api.beget.com/api/dns/getData?login=userlogin&passwd=password&input_format=json&output_format=json&input_data={"fqdn":"beget.ru"}
```

### GET /api/dns/changeRecords — Изменение DNS-записей

Передаётся одна группа записей: A/MX/TXT (до 10 каждого типа), NS (только поддомены, до 10), CNAME (только поддомены, одна запись) или DNS (до 4, для доменов на Beget). У каждой записи `priority` и `value`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `input_format` | query | string | да | json |
| `input_data.fqdn` | query | string | да | Полное имя домена |
| `input_data.records` | query | object | да | Записи по типам |

### GET /api/site/getList — Список сайтов

В `result`: `id`, `path`, `domains` (`id`, `fqdn`, `php_version`, `ssl` и др.).

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

### 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 сайта |

### GET /api/mysql/getList — Базы MySQL

В `result`: `name`, `size`, `accesses[].name`.

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

### GET /api/mysql/addDb — Создание базы MySQL

Создание ставится в очередь и может занять несколько минут; создаётся доступ `localhost`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `input_format` | query | string | да | json |
| `input_data.suffix` | query | string | да | Суффикс имени; login_suffix — не больше 16 символов |
| `input_data.password` | query | string | да | Пароль, от 6 символов |

### GET /api/backup/getFileBackupList — Список файловых бэкапов

В ответе: `backup_id`, `date`.

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

### GET /api/backup/restoreFile — Восстановление файлов из бэкапа

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `input_format` | query | string | да | json |
| `input_data.backup_id` | query | integer | да | ID бэкапа |
| `input_data.paths` | query | array | да | Пути от корня домашней директории |

## Нюансы

- `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` и др.

## Ошибки

| Код | Описание |
|---|---|
| `AUTH_ERROR` | Ошибка авторизации |
| `INCORRECT_REQUEST` | Некорректный запрос |
| `NO_SUCH_METHOD` | Метод не существует |
| `INVALID_DATA` | Неверные данные (ошибка метода) |
| `LIMIT_ERROR` | Превышен лимит запросов |
| `METHOD_FAILED` | Метод не выполнен |

## Ограничения

- Не больше 60 запросов в минуту на пользователя.

## Источники

- [Beget API](https://beget.com/ru/kb/api/beget-api)
- [Общий принцип работы с API](https://beget.com/ru/kb/api/obshhij-princzip-raboty-s-api)
- [Управление аккаунтом](https://beget.com/ru/kb/api/funkczii-upravleniya-akkauntom)
- [Домены](https://beget.com/ru/kb/api/funkczii-dlya-raboty-s-domenami)
- [DNS](https://beget.com/ru/kb/api/funkczii-upravleniya-dns)
- [Сайты](https://beget.com/ru/kb/api/funkczii-upravleniya-sajtami)
- [MySQL](https://beget.com/ru/kb/api/funkczii-upravleniya-mysql)
- [Бэкапы](https://beget.com/ru/kb/api/funkczii-upravleniya-bekapami)

---

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