infra/@beget-kondurov.server/infrastructure/API.md

Beget API Documentation

Сервер: @remote-beget-kondurov
Тип: REST API
Дата создания: 2025-11-13


🔗 API Endpoint

Base URL: https://api.beget.com/api/

Формат: JSON
Метод: GET/POST


🔐 Аутентификация

Способ 1: Login + Password в URL параметрах

curl "https://api.beget.com/api/{section}/{method}?login=kondurov&passwd=API_PASSWORD&input_format=json&output_format=json"

Способ 2: Bearer Token (JWT)

curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     "https://api.beget.com/api/{section}/{method}?output_format=json"

🔑 Получение API credentials

⚠️ Важно: Используйте отдельный пароль для API!

Настройка в панели Beget:

  1. Войти: https://cp.beget.com/
  2. Раздел: API
  3. Выбрать: "Использовать отдельный пароль"
  4. Отметить нужные разрешения (методы)
  5. Сохранить пароль

Рекомендация: Включить только нужные методы (например, только DNS management)


📚 Доступные секции API

1. user - Управление аккаунтом

Методы:
- getAccountInfo - информация о тарифе и сервере

Пример:

curl "https://api.beget.com/api/user/getAccountInfo?login=kondurov&passwd=API_PASS&output_format=json"

Ответ:

{
  "status": "success",
  "result": {
    "tariff": "Standard",
    "server": "epsilon2",
    "disk_usage": "5.2 GB",
    "disk_limit": "10 GB"
  }
}

2. backup - Управление бэкапами

Методы:
- getFileList - список файлов в бэкапе
- getMysqlList - список БД в бэкапе
- restoreFile - восстановить файл из бэкапа
- restoreMysql - восстановить БД из бэкапа

Пример:

curl "https://api.beget.com/api/backup/getFileList?login=kondurov&passwd=API_PASS&output_format=json"

3. mysql - Управление базами данных

Методы:
- getList - список БД
- getData - информация о конкретной БД
- changeAccessPassword - изменить пароль доступа
- addDb - создать новую БД
- deleteDb - удалить БД

Пример:

curl "https://api.beget.com/api/mysql/getList?login=kondurov&passwd=API_PASS&output_format=json"

Ответ:

{
  "status": "success",
  "result": [
    {
      "name": "kondurov_oc",
      "size": "102.5 MB",
      "user": "kondurov_oc"
    }
  ]
}

4. domain - Управление доменами

Методы:
- getList - список доменов
- addSubdomain - добавить поддомен
- deleteSubdomain - удалить поддомен
- getPhpVersion - получить версию PHP
- changePhpVersion - изменить версию PHP

Пример:

curl "https://api.beget.com/api/domain/getList?login=kondurov&passwd=API_PASS&output_format=json"

5. dns - Управление DNS

Методы:
- getData - получить DNS записи
- changeRecords - изменить DNS записи
- addRecords - добавить записи
- deleteRecords - удалить записи

Пример:

curl "https://api.beget.com/api/dns/getData?login=kondurov&passwd=API_PASS&fqdn=pirotehnika.spb.ru&output_format=json"

6. site - Управление сайтами

Методы:
- getList - список сайтов
- add - добавить сайт
- delete - удалить сайт
- freeze - заморозить сайт
- unfreeze - разморозить сайт


7. ftp - Управление FTP

Методы:
- getList - список FTP аккаунтов
- add - добавить FTP аккаунт
- delete - удалить аккаунт
- changePassword - изменить пароль


8. mail - Управление почтой

Методы:
- getMailboxList - список почтовых ящиков
- createMailbox - создать ящик
- deleteMailbox - удалить ящик
- changePassword - изменить пароль
- setForward - настроить пересылку


9. cron - Управление Cron задачами

Методы:
- getList - список задач
- add - добавить задачу
- delete - удалить задачу
- edit - редактировать задачу

Пример:

curl "https://api.beget.com/api/cron/getList?login=kondurov&passwd=API_PASS&output_format=json"

10. stat - Статистика

Методы:
- getSitesListLoad - средняя нагрузка сайтов
- getDbListLoad - нагрузка БД
- getSiteLoad - нагрузка конкретного сайта
- getDbLoad - нагрузка конкретной БД

Пример:

curl "https://api.beget.com/api/stat/getSitesListLoad?login=kondurov&passwd=API_PASS&output_format=json"

📦 Библиотеки для работы с API

PHP

composer require angryjack/beget-api

Использование:

use Angryjack\Beget\Beget;

$beget = new Beget('kondurov', 'API_PASSWORD');

// Получить список БД
$mysql = $beget->api('mysql');
$databases = $mysql->getList();

// Получить информацию об аккаунте
$user = $beget->api('user');
$info = $user->getAccountInfo();

Go

go get github.com/ThCompiler/go.beget.api

Python (через requests)

import requests

API_URL = "https://api.beget.com/api"
LOGIN = "kondurov"
PASSWORD = "API_PASSWORD"

def get_databases():
    response = requests.get(
        f"{API_URL}/mysql/getList",
        params={
            "login": LOGIN,
            "passwd": PASSWORD,
            "output_format": "json"
        }
    )
    return response.json()

# Использование
databases = get_databases()
print(databases)

Bash

#!/bin/bash

API_URL="https://api.beget.com/api"
LOGIN="kondurov"
PASSWORD="API_PASSWORD"

# Функция для вызова API
beget_api() {
    local section=$1
    local method=$2
    local params=$3

    curl -s "${API_URL}/${section}/${method}?login=${LOGIN}&passwd=${PASSWORD}&output_format=json&${params}"
}

# Примеры использования
beget_api "user" "getAccountInfo"
beget_api "mysql" "getList"
beget_api "domain" "getList"

⚠️ Коды ошибок

Успешный ответ:

{
  "status": "success",
  "result": {...}
}

Ошибка:

{
  "status": "error",
  "error_code": "AUTH_ERROR",
  "error_text": "Incorrect login or password"
}

Основные коды ошибок:
- AUTH_ERROR - ошибка авторизации
- INCORRECT_REQUEST - неверный запрос
- METHOD_ERROR - ошибка выполнения метода
- PERMISSION_DENIED - доступ запрещён


🔒 Безопасность

Рекомендации:

  1. Используйте отдельный API пароль (не основной пароль аккаунта)
  2. Ограничьте разрешения (только нужные методы)
  3. Храните credentials в .env файле:
    bash BEGET_API_LOGIN=kondurov BEGET_API_PASSWORD=your_api_password
  4. Используйте HTTPS (всегда)
  5. Не публикуйте credentials в git

.gitignore:

.env
beget-api-credentials.txt
api-config.json

🚀 Практические примеры

Получить список всех БД и их размеры

curl -s "https://api.beget.com/api/mysql/getList?login=kondurov&passwd=API_PASS&output_format=json" \
  | jq '.result[] | {name: .name, size: .size}'

Создать бэкап БД

# 1. Получить список БД в бэкапе
curl "https://api.beget.com/api/backup/getMysqlList?login=kondurov&passwd=API_PASS&output_format=json"

# 2. Восстановить конкретную БД
curl "https://api.beget.com/api/backup/restoreMysql?login=kondurov&passwd=API_PASS&db_name=kondurov_oc&backup_id=latest&output_format=json"

Изменить версию PHP для домена

curl "https://api.beget.com/api/domain/changePhpVersion?login=kondurov&passwd=API_PASS&fqdn=pirotehnika.spb.ru&php_version=8.1&output_format=json"

Добавить DNS запись

curl -X POST "https://api.beget.com/api/dns/addRecords" \
  -d "login=kondurov" \
  -d "passwd=API_PASS" \
  -d "fqdn=pirotehnika.spb.ru" \
  -d "records[0][type]=A" \
  -d "records[0][value]=1.2.3.4" \
  -d "output_format=json"

📖 Официальная документация

На русском:
- https://beget.com/ru/kb/api/beget-api
- https://beget.com/ru/kb/api/funkczii-upravleniya-akkauntom

На английском:
- https://beget.com/en/kb/api/beget-api
- https://beget.com/en/kb/api/account-administration-functions

VPS API (отдельное):
- https://developer.beget.com/


🔗 Полезные ссылки


✅ TODO


Дата создания: 2025-11-13
Обновлено: 2025-11-13