Cloudflare API - curl 命令参考
✅ 认证方式已验证
提供的凭据使用 API Key 认证方式(不是 API Token):
-H "X-Auth-Email: exslym@closedbyme.com"
-H "X-Auth-Key: 21f3fb278a15b732a4f52c95d5042d78d1a21"
Account ID: af2863fcfbc1f170e5ef3b7a648c417d
📋 基础命令
环境变量设置
export EMAIL="exslym@closedbyme.com"
export API_KEY="21f3fb278a15b732a4f52c95d5042d78d1a21"
export ACCOUNT_ID="af2863fcfbc1f170e5ef3b7a648c417d"
🏢 账号管理
1. 获取账号信息
curl -X GET "https://api.cloudflare.com/client/v4/accounts" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json"
返回值:
{
"success": true,
"result": [
{
"id": "af2863fcfbc1f170e5ef3b7a648c417d",
"name": "Exslym@closedbyme.com's Account"
}
]
}
📦 Pages 项目管理
1. 列出所有 Pages 项目
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
简化输出:
curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" | jq -r '.result[] | "\(.name) - https://\(.subdomain)"'
2. 创建 Pages 项目
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "my-new-project",
"production_branch": "main"
}'
实测成功示例:
# 创建测试项目
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "curl-test-project", "production_branch": "main"}'
3. 获取特定项目信息
PROJECT_NAME="diyiciapiceshi13"
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
4. 删除 Pages 项目
PROJECT_NAME="my-project"
curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
🚀 部署管理
1. 列出项目部署
PROJECT_NAME="diyiciapiceshi13"
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
查看最新部署:
curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" | jq -r '.result[0] | "URL: \(.url)\n状态: \(.latest_stage.name)"'
2. 部署文件到 Pages
PROJECT_NAME="my-project"
# 使用 multipart/form-data 上传文件
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-F "manifest={}" \
-F "branch=main" \
-F "_worker.js=@./_worker.js"
Python 脚本部署示例(用户提供的成功脚本):
files = {
'manifest': (None, '{}'),
'branch': (None, 'main'),
'_worker.js': ('_worker.js', worker_content, 'text/javascript'),
}
response = requests.post(url, headers=headers, files=files)
3. 获取部署详情
PROJECT_NAME="my-project"
DEPLOYMENT_ID="6387f5d9"
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments/$DEPLOYMENT_ID" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
🌐 Zone (域名) 管理
1. 列出所有 Zones
curl -X GET "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
简化输出:
curl -s -X GET "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" | jq -r '.result[] | "\(.name) - \(.status)"'
2. 创建 Zone(添加域名)
curl -X POST "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"account": {
"id": "'$ACCOUNT_ID'"
},
"name": "example.com",
"type": "full"
}'
获取 Nameservers:
curl -s -X POST "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"account": {"id": "'$ACCOUNT_ID'"},
"name": "example.com",
"type": "full"
}' | jq -r '.result.name_servers[]'
3. 获取 Zone 详情
ZONE_ID="your-zone-id"
curl -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
4. 查看 Nameservers
ZONE_ID="your-zone-id"
curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" | jq -r '.result.name_servers[]'
5. 删除 Zone
ZONE_ID="your-zone-id"
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
🔗 域名绑定
1. 绑定域名到 Pages 项目
PROJECT_NAME="my-project"
DOMAIN_NAME="example.com"
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "'$DOMAIN_NAME'"
}'
2. 列出项目的域名
PROJECT_NAME="my-project"
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
3. 获取域名状态
PROJECT_NAME="my-project"
DOMAIN_NAME="example.com"
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains/$DOMAIN_NAME" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
4. 删除项目域名
PROJECT_NAME="my-project"
DOMAIN_NAME="example.com"
curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains/$DOMAIN_NAME" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
⚡ Worker 路由
1. 创建 Worker 路由
ZONE_ID="your-zone-id"
curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"pattern": "example.com/api/*",
"script": "my-worker-script"
}'
2. 列出 Worker 路由
ZONE_ID="your-zone-id"
curl -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
3. 添加 Worker 自定义域名
curl -X PUT "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/workers/domains" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"hostname": "api.example.com",
"service": "my-worker",
"zone_id": "your-zone-id",
"environment": "production"
}'
4. 删除 Worker 路由
ZONE_ID="your-zone-id"
ROUTE_ID="route-id"
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes/$ROUTE_ID" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
🛠️ 实用技巧
1. 美化 JSON 输出
使用 jq 格式化输出:
curl -s ... | jq '.'
2. 只看成功状态
curl -s ... | jq -r '.success'
3. 提取特定字段
# 提取项目名称
curl -s ... | jq -r '.result[].name'
# 提取 Nameservers
curl -s ... | jq -r '.result.name_servers[]'
4. 保存响应到文件
curl ... > response.json
5. 显示 HTTP 状态码
curl -w "\nHTTP Status: %{http_code}\n" ...
🧪 测试脚本
运行完整测试:
./curl_tests.sh
或查看测试脚本内容:
cat curl_tests.sh
📚 完整工作流示例
示例 1: 创建并部署 Pages 项目
# 1. 创建项目
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "my-site", "production_branch": "main"}'
# 2. 部署文件
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/my-site/deployments" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-F "manifest={}" \
-F "branch=main" \
-F "index.html=@./index.html"
# 3. 查看部署状态
curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/my-site/deployments" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" | jq -r '.result[0] | "URL: \(.url)"'
示例 2: 添加域名并获取 Nameservers
# 1. 创建 Zone
RESPONSE=$(curl -s -X POST "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"account": {"id": "'$ACCOUNT_ID'"},
"name": "example.com",
"type": "full"
}')
# 2. 提取 Nameservers
echo "$RESPONSE" | jq -r '.result.name_servers[]'
# 3. 绑定域名到 Pages
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/my-site/domains" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "example.com"}'
✅ 测试结果
所有 curl 命令已验证通过:
- ✅ 账号信息获取
- ✅ Pages 项目列表
- ✅ Pages 项目创建
- ✅ Pages 项目详情
- ✅ 部署历史查询
- ✅ Zone 列表
- ✅ Zone 创建和 Nameservers
Account ID: af2863fcfbc1f170e5ef3b7a648c417d
认证方式: API Key (X-Auth-Email + X-Auth-Key)
🔗 相关链接
最后更新: 2024-01-27
测试状态: ✅ 全部通过