INTEGRITY Документация

Registrar API

Используйте API Cloudflare Registrar, чтобы искать доменные имена, проверять доступность и цены в реальном времени и регистрировать поддерживаемые домены программно.

В этом руководстве описан бета-процесс работы с Cloudflare API и curl. Эти же конечные точки по умолчанию доступны в официальной справке Cloudflare API и через Cloudflare MCP, а значит, их можно использовать в скриптах, серверных службах, конвейерах CI и инструментах на основе агентов без дополнительной интеграции.

Перед началом работы

Перед отправкой первого запроса к API убедитесь, что у вас есть:

  1. Идентификатор аккаунта Cloudflare.
  2. API-токен с правами на запись для Registrar. Создайте его в разделе https://dash.cloudflare.com/<ACCOUNT_ID>/api-tokens.
  3. Платёжный профиль с действующим способом оплаты по умолчанию. Управляйте платежами в разделе https://dash.cloudflare.com/<ACCOUNT_ID>/billing/payment-info.
  4. Настроенный на аккаунте контакт регистранта по умолчанию, а также принятое соглашение о регистрации доменов на странице регистраций: https://dash.cloudflare.com/<ACCOUNT_ID>/domains/registrations.

Дополнительную информацию по настройке см.:

Настройка аутентификации

Запросы к Cloudflare API используют авторизацию по Bearer-токену.

В терминале задайте переменные окружения для ID аккаунта и API-токена:

export ACCOUNT_ID="<YOUR_ACCOUNT_ID>"
export CLOUDFLARE_API_TOKEN="<YOUR_API_TOKEN>"

Все запросы в этом руководстве используют базовый URL Cloudflare API v4:

https://api.cloudflare.com/client/v4/

Бета-процесс

Процесс работы с бета-версией включает три основных шага:

  1. Найдите подходящие варианты доменных имён.
  2. Проверьте доступность и цену нужного домена в реальном времени.
  3. Зарегистрируйте домен.

Поиск полезен для подбора вариантов, но не является источником достоверных данных. Всегда обращайтесь к Check конечную точку непосредственно перед регистрацией, чтобы снизить вероятность ошибки в процессе регистрации.

Примеры запросов для агентов

Если вы используете Cloudflare MCP или другой сценарий на основе агентов, запрос может быть таким же простым, как:

1. Поиск доменов

Используйте конечную точку Search, чтобы получить варианты доменных имён по ключевому слову, фразе или части доменного имени.

Результаты поиска:

curl --request GET \
  --url "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/registrar/domain-search?q=acme%20corp&limit=3" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Пример ответа:

{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "acmecorp.com",
        "registrable": true,
        "tier": "standard",
        "pricing": {
          "currency": "USD",
          "registration_cost": "8.57",
          "renewal_cost": "8.57"
        }
      },
      {
        "name": "acmecorp.dev",
        "registrable": true,
        "tier": "standard",
        "pricing": {
          "currency": "USD",
          "registration_cost": "10.11",
          "renewal_cost": "10.11"
        }
      },
      {
        "name": "acmecorp.app",
        "registrable": true,
        "tier": "standard",
        "pricing": {
          "currency": "USD",
          "registration_cost": "11.00",
          "renewal_cost": "11.00"
        }
      }
    ]
  }
}

2. Проверка доступности и цены в реальном времени

Используйте конечную точку Check, чтобы проверить, доступен ли домен для регистрации, и узнать актуальную цену.

Результаты проверки:

Эта конечная точка принимает не более 20 доменов за один запрос.

curl --request POST \
  --url "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/registrar/domain-check" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "domains": ["acmecorp.dev"]
  }'

Пример ответа:

{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "acmecorp.dev",
        "registrable": true,
        "tier": "standard",
        "pricing": {
          "currency": "USD",
          "registration_cost": "10.11",
          "renewal_cost": "10.11"
        }
      }
    ]
  }
}

Если домен не удаётся зарегистрировать через API, в ответе указывается причина. Например:

{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "mybrand.uk",
        "registrable": false,
        "reason": "extension_not_supported_via_api"
      }
    ]
  }
}

Типичные reason значения включают:

3. Регистрация домена

Используйте конечную точку Registration, чтобы запустить процесс регистрации домена.

Важно:

Для самого простого запроса требуется только domain_name:

curl --request POST \
  --url "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/registrar/registrations" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "domain_name": "acmecorp.dev"
  }'

В аккаунте должен быть настроен контакт регистранта по умолчанию. Если вы не передадите новый контакт непосредственно в запросе, API автоматически использует контакт по умолчанию. Чтобы зарегистрировать домен с другим контактом, укажите его в запросе.

Текущее поведение по умолчанию:

Чтобы переопределить контакт регистранта по умолчанию для одной регистрации, укажите его непосредственно в запросе:

curl --request POST \
  --url "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/registrar/registrations" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "domain_name": "acmecorp.dev",
    "contacts": {
      "registrant": {
        "email": "[email protected]",
        "phone": "+1.5555555555",
        "postal_info": {
          "name": "Ada Lovelace",
          "organization": "Example Inc",
          "address": {
            "street": "123 Main St",
            "city": "Austin",
            "state": "TX",
            "postal_code": "78701",
            "country_code": "US"
          }
        }
      }
    }
  }'

Пример успешного ответа:

{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "domain_name": "acmecorp.dev",
    "state": "succeeded",
    "completed": true,
    "created_at": "2025-10-27T10:00:00Z",
    "updated_at": "2025-10-27T10:00:03Z",
    "context": {
      "registration": {
        "domain_name": "acmecorp.dev",
        "status": "active",
        "created_at": "2025-10-27T10:00:00Z",
        "expires_at": "2026-10-27T10:00:00Z",
        "auto_renew": false,
        "privacy_mode": "redaction",
        "locked": true
      }
    },
    "links": {
      "self": "/accounts/abc/registrar/registrations/acmecorp.dev/registration-status",
      "resource": "/accounts/abc/registrar/registrations/acmecorp.dev"
    }
  }
}

Обработка ответов на регистрацию

По умолчанию конечная точка регистрации ждёт до 10 секунд, прежде чем отправить ответ.

Вы можете получить один из следующих вариантов:

Чтобы принудительно включить немедленную асинхронную обработку, отправьте Prefer: respond-async.

Пример асинхронного запроса:

curl --request POST \
  --url "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/registrar/registrations" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  --header "Content-Type: application/json" \
  --header "Prefer: respond-async" \
  --data '{
    "domain_name": "acmecorp.dev"
  }'

Пример 202 Accepted ответ:

{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "domain_name": "acmecorp.dev",
    "state": "in_progress",
    "completed": false,
    "created_at": "2025-10-27T10:00:00Z",
    "updated_at": "2025-10-27T10:00:10Z",
    "links": {
      "self": "/accounts/abc/registrar/registrations/acmecorp.dev/registration-status",
      "resource": "/accounts/abc/registrar/registrations/acmecorp.dev"
    }
  }
}

Опрос статуса регистрации

Если регистрация всё ещё выполняется, опрашивайте конечную точку статуса, пока процесс не завершится.

curl --request GET \
  --url "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/registrar/registrations/acmecorp.dev/registration-status" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Пример ответа:

{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "domain_name": "acmecorp.dev",
    "state": "succeeded",
    "completed": true,
    "created_at": "2025-10-27T10:00:00Z",
    "updated_at": "2025-10-27T10:00:03Z",
    "context": {
      "registration": {
        "domain_name": "acmecorp.dev",
        "status": "active",
        "created_at": "2025-10-27T10:00:00Z",
        "expires_at": "2026-10-27T10:00:00Z",
        "auto_renew": false,
        "privacy_mode": "redaction",
        "locked": true
      }
    },
    "links": {
      "self": "/accounts/abc/registrar/registrations/acmecorp.dev/registration-status",
      "resource": "/accounts/abc/registrar/registrations/acmecorp.dev"
    }
  }
}

Возможные статусы обработки:

Если процесс возвращает action_required, остановите опрос и покажите пользователю необходимое действие.

Если процесс возвращает failed, проверить error.code и error.message прежде чем повторить попытку.

Получение ресурса регистрации

После завершения регистрации получите ресурс регистрации напрямую:

curl --request GET \
  --url "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/registrar/registrations/acmecorp.dev" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Пример ответа:

{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "domain_name": "acmecorp.dev",
    "status": "active",
    "created_at": "2025-10-27T10:00:00Z",
    "expires_at": "2026-10-27T10:00:00Z",
    "auto_renew": false,
    "privacy_mode": "redaction",
    "locked": true
  }
}

Ограничения бета-версии

Это первый бета-выпуск API Registrar.

Текущие ограничения:

Если вы проверяете домен, который Cloudflare поддерживает в панели управления, но ещё не поддерживает в API, ответ Check возвращает extension_not_supported_via_api.

Эти основные функции Registrar появятся в будущих версиях API.

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

Следующие шаги

Если вы разрабатываете решения на основе бета-версии Registrar API, особенно для автоматизации, агентов или мультитенантных платформенных сценариев, поделитесь с нами отзывом.