Skip to content
Start here

List Turnstile Widgets

client.Turnstile.Widgets.List(ctx, params) (*V4PagePaginationArray[WidgetListResponse], error)
GET/accounts/{account_id}/challenges/widgets

Lists all turnstile widgets of an account.

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 WriteTurnstile Sites ReadAccount Settings WriteAccount Settings Read
ParametersExpand Collapse
params WidgetListParams
AccountID param.Field[string]

Path param: Identifier

maxLength32
Direction param.Field[WidgetListParamsDirection]optional

Query param: Direction to order widgets.

const WidgetListParamsDirectionAsc WidgetListParamsDirection = "asc"
const WidgetListParamsDirectionDesc WidgetListParamsDirection = "desc"
Filter param.Field[string]optional

Query param: Filter widgets by field using case-insensitive substring matching. Format: field:value

Supported fields:

  • name - Filter by widget name (e.g., filter=name:login-form)
  • sitekey - Filter by sitekey (e.g., filter=sitekey:0x4AAA)

Returns 400 Bad Request if the field is unsupported or format is invalid. An empty filter value returns all results.

Order param.Field[WidgetListParamsOrder]optional

Query param: Field to order widgets by.

const WidgetListParamsOrderID WidgetListParamsOrder = "id"
const WidgetListParamsOrderSitekey WidgetListParamsOrder = "sitekey"
const WidgetListParamsOrderName WidgetListParamsOrder = "name"
const WidgetListParamsOrderCreatedOn WidgetListParamsOrder = "created_on"
const WidgetListParamsOrderModifiedOn WidgetListParamsOrder = "modified_on"
Page param.Field[float64]optional

Query param: Page number of paginated results.

minimum1
PerPage param.Field[float64]optional

Query param: Number of items per page.

maximum1000
minimum5
ReturnsExpand Collapse
type WidgetListResponse struct{…}

A Turnstile Widgets configuration as it appears in listings

BotFightMode bool

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

ClearanceLevel WidgetListResponseClearanceLevel

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 WidgetListResponseClearanceLevelNoClearance WidgetListResponseClearanceLevel = "no_clearance"
const WidgetListResponseClearanceLevelJschallenge WidgetListResponseClearanceLevel = "jschallenge"
const WidgetListResponseClearanceLevelManaged WidgetListResponseClearanceLevel = "managed"
const WidgetListResponseClearanceLevelInteractive WidgetListResponseClearanceLevel = "interactive"
CreatedOn Time

When the widget was created.

formatdate-time
Domains []WidgetDomain
maxLength10
EphemeralID bool

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

Mode WidgetListResponseMode

Widget Mode

One of the following:
const WidgetListResponseModeNonInteractive WidgetListResponseMode = "non-interactive"
const WidgetListResponseModeInvisible WidgetListResponseMode = "invisible"
const WidgetListResponseModeManaged WidgetListResponseMode = "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 WidgetListResponseRegion

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

One of the following:
const WidgetListResponseRegionWorld WidgetListResponseRegion = "world"
const WidgetListResponseRegionChina WidgetListResponseRegion = "china"
Sitekey string

Widget item identifier tag.

maxLength32

List Turnstile Widgets

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"),
  )
  page, err := client.Turnstile.Widgets.List(context.TODO(), turnstile.WidgetListParams{
    AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", page)
}
{
  "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",
      "sitekey": "0x4AAF00AAAABn0R22HWm-YUc"
    }
  ],
  "result_info": {
    "count": 1,
    "page": 1,
    "per_page": 20,
    "total_count": 2000
  }
}
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",
      "sitekey": "0x4AAF00AAAABn0R22HWm-YUc"
    }
  ],
  "result_info": {
    "count": 1,
    "page": 1,
    "per_page": 20,
    "total_count": 2000
  }
}