Skip to content
Start here

Delete a Turnstile Widget

client.Turnstile.Widgets.Delete(ctx, sitekey, body) (*Widget, error)
DELETE/accounts/{account_id}/challenges/widgets/{sitekey}

Destroy a Turnstile Widget.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Accepted Permissions (at least one required)
Turnstile Sites WriteAccount Settings Write
ParametersExpand Collapse
sitekey string

Widget item identifier tag.

maxLength32
body WidgetDeleteParams
AccountID param.Field[string]

Identifier

maxLength32
ReturnsExpand Collapse
type Widget struct{…}

A Turnstile widget's detailed configuration

BotFightMode bool

If bot_fight_mode is set to true, Cloudflare issues computationally expensive challenges in response to malicious bots (ENT only).

ClearanceLevel WidgetClearanceLevel

If Turnstile is embedded on a Cloudflare site and the widget should grant challenge clearance, this setting can determine the clearance level to be set

One of the following:
const WidgetClearanceLevelNoClearance WidgetClearanceLevel = "no_clearance"
const WidgetClearanceLevelJschallenge WidgetClearanceLevel = "jschallenge"
const WidgetClearanceLevelManaged WidgetClearanceLevel = "managed"
const WidgetClearanceLevelInteractive WidgetClearanceLevel = "interactive"
CreatedOn Time

When the widget was created.

formatdate-time
Domains []WidgetDomain
maxLength10
EphemeralID bool

Return the Ephemeral ID in /siteverify (ENT only).

Mode WidgetMode

Widget Mode

One of the following:
const WidgetModeNonInteractive WidgetMode = "non-interactive"
const WidgetModeInvisible WidgetMode = "invisible"
const WidgetModeManaged WidgetMode = "managed"
ModifiedOn Time

When the widget was modified.

formatdate-time
Name string

Human readable widget name. Not unique. Cloudflare suggests that you set this to a meaningful string to make it easier to identify your widget, and where it is used.

maxLength254
minLength1
Offlabel bool

Do not show any Cloudflare branding on the widget (ENT only).

Region WidgetRegion

Region where this widget can be used. This cannot be changed after creation.

One of the following:
const WidgetRegionWorld WidgetRegion = "world"
const WidgetRegionChina WidgetRegion = "china"
Secret string

Secret key for this widget.

Sitekey string

Widget item identifier tag.

maxLength32

Delete a Turnstile Widget

package main

import (
  "context"
  "fmt"

  "github.com/cloudflare/cloudflare-go"
  "github.com/cloudflare/cloudflare-go/option"
  "github.com/cloudflare/cloudflare-go/turnstile"
)

func main() {
  client := cloudflare.NewClient(
    option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"),
  )
  widget, err := client.Turnstile.Widgets.Delete(
    context.TODO(),
    "0x4AAF00AAAABn0R22HWm-YUc",
    turnstile.WidgetDeleteParams{
      AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", widget.EphemeralID)
}
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "bot_fight_mode": false,
    "clearance_level": "interactive",
    "created_on": "2014-01-01T05:20:00.123123Z",
    "domains": [
      "203.0.113.1",
      "cloudflare.com",
      "blog.example.com"
    ],
    "ephemeral_id": false,
    "mode": "invisible",
    "modified_on": "2014-01-01T05:20:00.123123Z",
    "name": "blog.cloudflare.com login form",
    "offlabel": false,
    "region": "world",
    "secret": "0x4AAF00AAAABn0R22HWm098HVBjhdsYUc",
    "sitekey": "0x4AAF00AAAABn0R22HWm-YUc"
  }
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "bot_fight_mode": false,
    "clearance_level": "interactive",
    "created_on": "2014-01-01T05:20:00.123123Z",
    "domains": [
      "203.0.113.1",
      "cloudflare.com",
      "blog.example.com"
    ],
    "ephemeral_id": false,
    "mode": "invisible",
    "modified_on": "2014-01-01T05:20:00.123123Z",
    "name": "blog.cloudflare.com login form",
    "offlabel": false,
    "region": "world",
    "secret": "0x4AAF00AAAABn0R22HWm098HVBjhdsYUc",
    "sitekey": "0x4AAF00AAAABn0R22HWm-YUc"
  }
}