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 の各要素はバージョン番号に固定されています。最新は Version 4 です。Version 4 の HTTPS エンドポイントの安定したベース URL は次のとおりです。https://api.cloudflare.com/client/v4/
API 呼び出しの具体的な手順は、次の資料を参照してください。
- 製品の Developer Docs にあるハウツーガイド。
- 各エンドポイントのリクエストとレスポンスのペイロードは API schema docs。
- ファーストパーティライブラリは Go ↗、TypeScript ↗、Python ↗、または HashiCorp の Terraform ↗。
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 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 には、REST API の呼び出しと JSON レスポンスの処理向けに、専用のコマンドレット(Invoke-RestMethod と ConvertFrom-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_ID、CLOUDFLARE_EMAIL、CLOUDFLARE_API_KEY が事前に定義されている前提です。詳細は 環境変数 を参照してください。
デフォルトでは、JSON オブジェクト階層の最初のレベルだけが表示されます(上の例では、hosts や certificates などの中身は表示されません)。追加のレベルを表示し、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 では curl は Invoke-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 なら ~/.bashrc、zsh なら ~/.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%"