Cloudflare Registrar APIでドメインを購入する手順(Claude Codeで自動化)

公開 2026-08-26 ・ 更新 2026-08-26 ・ 著者 五十嵐

Cloudflareは2026年4月に Registrar API(ベータ) を公開し、ドメインの検索・空き確認・購入までをAPIで完結できるようになりました。このページは、実際にこのAPIでドメインを購入してサイトを公開したときの手順の記録です。Claude Codeなどのコーディングエージェントに渡せる形でまとめています。

前提(ここだけは手作業)

APIを呼ぶ前に、人間側で3つだけ準備が必要です。所要は合計10分ほどです。

  1. Cloudflareアカウントと支払い方法の登録(Billing → Payment info)。購入時はここのカードに自動課金されます
  2. ユーザーAPIトークンの作成(My Profile → API Tokens → カスタムトークン)。権限は次の2つ:
    • アカウント → レジストラ: ドメイン → 管理
    • ゾーン → DNS → 編集
  3. デフォルトの連絡先の登録(ダッシュボード → ドメイン → 登録 → 「デフォルトの連絡先を作成する」)。ICANNの規定でドメイン登録には実在の連絡先が必要です。CloudflareはWHOIS秘匿がデフォルトなので、外部には公開されません

詰まりどころ4つ(実際に踏んだ順)

症状原因と回避法
Registrar系のAPIだけ「Authentication error」アカウント所有トークンではRegistrar APIが使えない。プロフィール側のユーザーAPIトークンで作り直す
トークン作成画面で「Registrar」を検索しても0件日本語UIでは権限名が「レジストラ: ドメイン」にローカライズされている。「レジ」で検索すると出る
登録リクエストが「domain_name is required」フィールド名は name ではなく domain_name
「No registrant contact provided…」デフォルトの連絡先が未登録。前提の3を済ませると、以後は最小リクエストで購入できる

手順1: 空き確認と価格の取得

domain-check は最大20ドメインを一括で確認できます。返ってくる registrablepricing を見ます。

curl -s -X POST \
  "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/registrar/domain-check" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domains":["example-a.dev","example-b.com"]}'

tierstandard なら通常価格です。プレミアム価格のドメインもあるので、購入前に必ず pricing を確認してください。

手順2: 購入

必須フィールドはドメイン名だけです。購入は返金不可なので、金額を確認してから実行してください。

curl -s -X POST \
  "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/registrar/registrations" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain_name":"example-a.dev"}'

通常は数秒で "state": "succeeded" が同期で返ります。Cloudflareで購入したドメインはネームサーバー設定が不要で、ゾーンが即座にactiveになるのが大きな利点です(他社レジストラからの移管のようなNS浪費待ちがありません)。

手順3: DNS設定(Vercelに向ける例)

ホスティングがVercelの場合、AレコードとCNAMEを作ります。Cloudflareのプロキシ(オレンジ色の雲)は必ずOFFproxied: false)にしてください。ONにするとSSL証明書の発行失敗やリダイレクトループの原因になります。

curl -s -X POST \
  "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"A","name":"@","content":"76.76.21.21","ttl":1,"proxied":false}'

Aレコードの値はプロジェクトによって異なる場合があります(新しめのVercelプロジェクトは 216.198.79.1 のような割当IPのことがある)。Vercelのドメイン設定画面に表示される値をそのまま使ってください

補足

  • 実測では、購入からHTTPSでのサイト公開まで4分でした
  • .dev ドメインはHSTSプリロード対象のためHTTPS必須です。VercelやCloudflare Pagesに載せる限り自動で満たされます
  • 2ドメイン目以降は、デフォルトの連絡先が登録済みなので {"domain_name": "..."} の最小リクエストだけで買えます

この手順を実際に使った検証の記録は実験台帳にあります。