Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

API を呼び出す

最終更新 Markdown で表示Agent セットアップ

API トークンを作成 すると、以降の API リクエストは同じ方法で認証されます。Cloudflare は RFC の標準 である Authorization: Bearer <API_TOKEN> を使います。リクエストの例は次のとおりです。

curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
--header "Authorization: Bearer YQSn-xWAQiiEh9qM58wZNnyQS7FUdoqGIUAbrh7T"

API トークンのシークレットを平文で送信したり保存したりしないでください。コードリポジトリ、とくに公開リポジトリにもコミットしないでください。

ゾーン ID やアカウント ID、認証情報(API トークンなど)は 環境変数 に定義することを検討してください。

コマンドラインで JSON 出力を読みやすくするには、コマンドラインの JSON プロセッサ jq などのツールを使えます。jq の入手とインストールは Download jq を参照してください。

次の例では、curl の JSON 出力を jq で整形します。

curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" | jq .

Cloudflare の API を使う

Cloudflare API の各要素はバージョン番号に固定されています。最新は Version 4 です。Version 4 の HTTPS エンドポイントの安定したベース URL は次のとおりです。https://api.cloudflare.com/client/v4/

API 呼び出しの具体的な手順は、次の資料を参照してください。

クエリパラメーター

Cloudflare のいくつかのエンドポイントには、結果を絞り込む任意のクエリパラメーターがあります。例は List Zones です。

クエリパラメーターを付けるときは、URL をダブルクォート "" で囲んでください(ヘッダー値と同じです)。囲まないと API 呼び出しがエラーになることがあります。

curl "https://api.cloudflare.com/client/v4/zones?account.id=$ACCOUNT_ID" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

文字列はシングルクォート('')でもダブルクォート("")でも囲めます。ただしシングルクォートを使うと、bash などのシェルでは変数が展開されません。上の例では、$ACCOUNT_ID$CLOUDFLARE_API_TOKEN環境変数 が値に置き換わりません。

ページネーション

デフォルトのページサイズでは結果が多すぎて表示しきれないことがあります。たとえば次のような応答です。

"count": 1,
"page": 1,
"per_page": 20,
"total_count": 200,

結果をページ送りするには、次の 2 つのクエリパラメーターを使え、組み合わせもできます。

  • page=x で特定のページを選べます。
  • per_page=xx で 1 ページあたりの件数を調整できます。大きすぎるとタイムアウトすることがあります。

例: https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?per_page=100&page=2

そのほかのオプションは次のとおりです。

  • order: 並べ替えに使う属性を選びます。
  • direction: ASC(昇順)または DESC(降順)。

利用できるオプションは、API ドキュメント の各エンドポイントの result_info の末尾に記載されています。

Windows で API を呼び出す

最近の Windows 10 と 11 には、開発者ドキュメントの API 例で使う curl ツールがすでに含まれています。別の Windows バージョンを使っている場合は、curl サイトの Windows downloads で入手とインストールを確認してください。

コマンド プロンプトを使う

コマンド プロンプトで curl から Cloudflare API を使うときは、文字列の区切りにダブルクォート(")を使います。

典型的な PATCH リクエストは次のようになります。

C:\>curl --request PATCH "https://api.cloudflare.com/client/v4/user/invites/{id}" --header "X-Auth-Email: <EMAIL>" --header "X-Auth-Key: <API_KEY>" --data "{""status"": ""accepted""}"

リクエスト本文(POST / PATCH-d--data で指定する本文など)のダブルクォートをエスケープするには、もう 1 つのダブルクォート(")またはバックスラッシュ(\)を前に付けます。

1 つのコマンドを 2 行以上に分けるときは、行末に継続文字として ^ を使います。

C:\>curl --request PATCH ^
"https://api.cloudflare.com/client/v4/user/invites/{id}" ^
--header "X-Auth-Email: <EMAIL>" ^
--header "X-Auth-Key: <API_KEY>" ^
--data "{""status"": ""accepted""}"

PowerShell を使う

PowerShell には、REST API の呼び出しと JSON レスポンスの処理向けに、専用のコマンドレット(Invoke-RestMethodConvertFrom-Json)があります。構文は、開発者ドキュメントの curl の例とは異なります。

次の例は Invoke-RestMethod コマンドレットを使います。

Invoke-RestMethod -URI "https://api.cloudflare.com/client/v4/zones/$Env:ZONE_ID/ssl/certificate_packs?ssl_status=all" -Method 'GET' -Headers @{'X-Auth-Email'=$Env:CLOUDFLARE_EMAIL;'X-Auth-Key'=$Env:CLOUDFLARE_API_KEY}
result      : {@{id=78411cfa-5727-4dc1-8d4a-773d01f17c7c; type=universal; hosts=System.Object[];
              primary_certificate=c173c8a1-9724-4e96-a748-2c4494186098; status=active; certificates=System.Object[];
              created_on=2022-12-09T23:11:06.010263Z; validity_days=90; validation_method=txt;
              certificate_authority=lets_encrypt}}
result_info : @{page=1; per_page=20; total_pages=1; count=1; total_count=1}
success     : True
errors      : {}
messages    : {}

このコマンドは、環境変数 ZONE_IDCLOUDFLARE_EMAILCLOUDFLARE_API_KEY が事前に定義されている前提です。詳細は 環境変数 を参照してください。

デフォルトでは、JSON オブジェクト階層の最初のレベルだけが表示されます(上の例では、hostscertificates などの中身は表示されません)。追加のレベルを表示し、jq のように整形するには、ConvertFrom-Json コマンドレットで最大の深さ(デフォルトは 2)を指定します。

Invoke-RestMethod -URI "https://api.cloudflare.com/client/v4/zones/$Env:ZONE_ID/ssl/certificate_packs?ssl_status=all" -Method 'GET' -Headers @{'X-Auth-Email'=$Env:CLOUDFLARE_EMAIL;'X-Auth-Key'=$Env:CLOUDFLARE_API_KEY} | ConvertTo-Json -Depth 5
{
	"result": [
		{
			"id": "78411cfa-5727-4dc1-8d4a-773d01f17c7c",
			"type": "universal",
			"hosts": ["*.example.com", "example.com"],
			"primary_certificate": "c173c8a1-9724-4e96-a748-2c4494186098",
			"status": "active",
			"certificates": [
				{
					"id": "c173c8a1-9724-4e96-a748-2c4494186098",
					"hosts": ["*.example.com", "example.com"],
					"issuer": "LetsEncrypt",
					"signature": "ECDSAWithSHA384",
					"status": "active",
					"bundle_method": "ubiquitous",
					"zone_id": "<ZONE_ID>",
					"uploaded_on": "2023-02-02T11:20:25.403338Z",
					"modified_on": "2022-12-08T00:26:15.577555Z",
					"expires_on": "2023-03-07T23:26:12.000000Z",
					"priority": null
				}
			],
			"created_on": "2022-12-09T23:11:06.010263Z",
			"validity_days": 90,
			"validation_method": "txt",
			"certificate_authority": "lets_encrypt"
		}
	]
	// (...)
}

PowerShell でも curl を使えます。ただし PowerShell では curlInvoke-WebRequest コマンドレットのエイリアスで、通常の curl とは構文が異なります。curl を使うときは curl.exe と入力します。

curl による典型的な PATCH リクエストは次のようになります。

curl.exe --request PATCH "https://api.cloudflare.com/client/v4/user/invites/{id}" --header "Authorization: Bearer $Env:CLOUDFLARE_API_TOKEN" --data '{\"status\": \"accepted\"}'

リクエスト本文(-d または --data で指定)のダブルクォート(")をエスケープするには、もう 1 つのダブルクォート(")またはバックスラッシュ(\)を前に付けます。文字列の区切りにシングルクォート(')を使う場合でも、ダブルクォートはエスケープしてください。

1 つのコマンドを 2 行以上に分けるときは、行末に継続文字としてバッククォート(`)を使います。

curl.exe --request PATCH `
"https://api.cloudflare.com/client/v4/user/invites/{id}" `
--header "X-Auth-Email: $Env:CLOUDFLARE_EMAIL" `
--header "X-Auth-Key: $Env:CLOUDFLARE_API_KEY" `
--data '{\"status\": \"accepted\"}'

環境変数

ゾーン ID やアカウント ID など、コマンド間で繰り返す値は環境変数に定義できます。環境変数の有効期間は、現在のシェルセッション、現在のユーザーの今後のセッション、またはそのマシン上の全ユーザーの今後のセッションにできます。

認証情報(API トークン、API キー、メールアドレス)も環境変数に置き、複数のコマンドで再利用できます。ただし、定義する範囲はできるだけ小さくしてください(現在のシェルセッションのみ、または現在のユーザーの新しいセッションのみ)。

環境変数の設定と参照の手順は、プラットフォームとシェルによって異なります。

環境変数を定義する

現在のシェルセッションに ZONE_ID 環境変数を定義するには、次のコマンドを実行します。

export ZONE_ID='f2ea6707005a4da1af1b431202e96ac5'

現在のユーザーの新しいシェルセッションすべてに定義するには、シェルの設定ファイルの末尾(bash なら ~/.bashrczsh なら ~/.zshrc など)に上のコマンドを追加します。

現在の PowerShell セッションに ZONE_ID 環境変数を定義するには、次のコマンドを実行します。

$Env:ZONE_ID='f2ea6707005a4da1af1b431202e96ac5'

現在のユーザーの新しい PowerShell セッションすべてに定義するには、PowerShell プロファイルで変数を設定します。プロファイルのパスは echo $PROFILE で確認できます。

または、System.Environment クラスの SetEnvironmentVariable() メソッドで、現在のユーザーの新しい PowerShell セッションすべてに変数を設定します。例:

[Environment]::SetEnvironmentVariable("ZONE_ID", "f2ea6707005a4da1af1b431202e96ac5", "User")

このコマンドは現在のセッションには影響しません。PowerShell を閉じて、新しいセッションを開始してください。

現在のコマンド プロンプトセッションに ZONE_ID 環境変数を定義するには、次のコマンドを実行します。

set ZONE_ID=f2ea6707005a4da1af1b431202e96ac5

現在のユーザーの今後のコマンド プロンプトセッションすべてに環境変数を定義するには、次のコマンドを実行します。

setx ZONE_ID f2ea6707005a4da1af1b431202e96ac5

このコマンドは現在のウィンドウには影響しません。set を実行するか、コマンド プロンプトを閉じて新しいウィンドウを開いてください。

環境変数を参照する

コマンドで環境変数を参照するときは、変数名の前に $ を付けます(例: $ZONE_ID)。変数を参照する文字列全体は、スペースを含まない場合はクォートなし、またはダブルクォート("")で囲んでください。

例:

curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

コマンドで環境変数を参照するときは、変数名の前に $Env: を付けます(例: $Env:ZONE_ID)。変数を参照する文字列全体は、クォートなし、またはダブルクォート("")で囲んでください。

例:

Invoke-RestMethod -URI "https://api.cloudflare.com/client/v4/zones/$Env:ZONE_ID" -Method 'GET' -Headers @{'Authorization'="Bearer $Env:CLOUDFLARE_API_TOKEN"}

コマンドで環境変数を参照するときは、変数名を % で囲みます(例: %ZONE_ID%)。

例:

curl "https://api.cloudflare.com/client/v4/zones/%ZONE_ID%" --header "Authorization: Bearer %CLOUDFLARE_API_TOKEN%"

役に立ちましたか?