# Beget API хостинга: Изменить DNS-записи домена

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

Направить домен на другой сервер, добавить 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"}]}}'
```

## Базовые 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/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 | да | Записи по типам |

## Нюансы

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

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

- [Создать сайт и привязать к нему домен](https://mcp-everything.ru/integrations/beget/scenarios/sozdat-sayt-i-privyazat-k-nemu-domen.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
