CF Manager · API

← панель OpenAPI JSON

Программный доступ к инвентарю доменов и DNS-записям по многим Cloudflare-аккаунтам. Предназначен для агентов и скриптов.

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

Агенты передают ключ в заголовке X-API-Key. Ключи выпускает и отзывает только верховный админ из панели (вкладка «API-ключи»). Ключ показывается один раз при выпуске; в БД хранится только его SHA-256.

ScopeЧто разрешено
readGET-эндпоинты: stats, zones, accounts, sync-status, чтение DNS
writeвсё из read + создание/правка/удаление DNS-записей и запуск sync
⚠️ write изменяет живые записи в Cloudflare немедленно и необратимо. Управление самими ключами доступно только по сессии админа — API-ключом ключи выпускать/отзывать нельзя.
# базовый вызов
curl -s https://cf.82-27-0-250.sslip.io/api/stats \
     -H "X-API-Key: cfk_XXXXXXXXXXXXXXXXXXXXXXXX"

Модель данных

account — один CF-логин (email + Global API Key). zone — домен, найденный под аккаунтом (id — внутренний, zone_id — из Cloudflare). DNS-записи читаются/пишутся вживую через CF по zone.id.

Эндпоинты

GET/api/stats
Сводка: число аккаунтов, доменов, распределение по статусу, состояние последнего sync.
GET/api/zones read
Список доменов. Параметры: q (поиск по домену или email аккаунта), status (active/pending/…), page, per_page (≤500).
curl -s "$BASE/api/zones?q=example&per_page=20" -H "X-API-Key: $KEY"
GET/api/accounts read
Аккаунты с результатом последнего sync. Параметр failed_only=true — только сбойные.
GET/api/zones/{id}/dns read
Живые DNS-записи зоны (id — внутренний id зоны из /api/zones).
curl -s "$BASE/api/zones/42/dns" -H "X-API-Key: $KEY"
POST/api/zones/{id}/dns write
Создать запись. Тело: type, name, content, ttl (1=auto), proxied (для A/AAAA/CNAME), priority (MX/SRV).
curl -s -X POST "$BASE/api/zones/42/dns" -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"A","name":"node1","content":"1.2.3.4","proxied":true}'
PATCH/api/zones/{id}/dns/{record_id} write
Обновить запись целиком (те же поля, что и при создании). record_id — CF-id записи.
DELETE/api/zones/{id}/dns/{record_id} write
Удалить запись.
POST/api/sync write
Запустить обход всех аккаунтов и пересбор зон. Параметры: concurrency (1–100), failed_only=true. Прогресс — в GET /api/sync/status.
GET/api/sync/status read
Состояние текущего/последнего обхода: running, done, total, ok, failed, zones.

Ошибки

КодЗначение
401нет/битый ключ или сессия
403ключу не хватает scope (нужен write)
404зона/запись/ключ не найдены
502ошибка от Cloudflare (текст в detail)

Полная машинночитаемая спецификация — /openapi.json.