Use the Cloudflare API for programmatic widget management and automation.
Before you begin, you must have:
- A Cloudflare API token with
Account:Turnstile:Editpermissions - An account ID found in your Cloudflare dashboard
Required API token permissions
At least one of the following token permissions
is required:
Turnstile Sites WriteAccount Settings Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/challenges/widgets" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"domains": [
"example.com"
],
"mode": "managed",
"name": "My Example Turnstile Widget"
}'Required API token permissions
At least one of the following token permissions
is required:
Turnstile Sites WriteTurnstile Sites ReadAccount Settings WriteAccount Settings Read
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/challenges/widgets" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Required API token permissions
At least one of the following token permissions
is required:
Turnstile Sites WriteTurnstile Sites ReadAccount Settings WriteAccount Settings Read
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/challenges/widgets/$SITEKEY" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Required API token permissions
At least one of the following token permissions
is required:
Turnstile Sites WriteAccount Settings Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/challenges/widgets/$SITEKEY" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"domains": [
"203.0.113.1",
"cloudflare.com",
"blog.example.com"
],
"mode": "invisible",
"name": "blog.cloudflare.com login form",
"clearance_level": "interactive"
}'Required API token permissions
At least one of the following token permissions
is required:
Turnstile Sites WriteAccount Settings Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/challenges/widgets/$SITEKEY/rotate_secret" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"invalidate_immediately": false
}'Required API token permissions
At least one of the following token permissions
is required:
Turnstile Sites WriteAccount Settings Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/challenges/widgets/$SITEKEY" \
--request DELETE \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"