APIs.io Engineering Platform Turnstile API

The Turnstile API from APIs.io Engineering Platform — 3 operation(s) for turnstile.

Operations 6

GET /accounts/{account_id}/challenges/widgets APIs.io Engineering Platform List Turnstile Widgets #
POST /accounts/{account_id}/challenges/widgets APIs.io Engineering Platform Create a Turnstile Widget #
DELETE /accounts/{account_id}/challenges/widgets/{sitekey} APIs.io Engineering Platform Delete a Turnstile Widget #
GET /accounts/{account_id}/challenges/widgets/{sitekey} APIs.io Engineering Platform Turnstile Widget Details #
PUT /accounts/{account_id}/challenges/widgets/{sitekey} APIs.io Engineering Platform Update a Turnstile Widget #
POST /accounts/{account_id}/challenges/widgets/{sitekey}/rotate_secret APIs.io Engineering Platform Rotate Secret for a Turnstile Widget #

Documentation

Specifications

Other Resources

🔗
PostmanCollection
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-1ab188a6-cc1f-490d-9413-9c6da20918d0?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-0e94f581-cbc1-48e0-b594-1f6b3d07a328?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-4517d93a-e7f7-4dc2-b572-06762bbe14de?action=share&creator=35240
🔗
PostmanCollection
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-88f9ddbb-3115-47dc-b6e5-7fc6f1d2a190?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-3a12caae-4945-4df4-8ab9-bb6219ba7a9f?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-863b18f0-c2f2-4e32-a5fa-0d1e6ccf77a9?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-189876d1-f207-49a2-a4bc-5c67ae78cd19?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-c1e74fd9-3f84-4d95-943d-d645d6cb82f7?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-b002164d-6e8a-4b6d-b409-4929476e7818?action=share&creator=35240
🔗
PostmanCollection
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-508660fd-30b8-4c9c-aede-8edbac8a514d?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-da35e0ba-f1a9-42fe-a77a-56ff0a47e341?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-1d4df7d0-9c92-4fa8-946f-2110c2b3b48d?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-2af6f54f-d259-46c0-8f86-78856f5885cd?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-cc203f31-e7f6-42ec-ad34-c5c4cde58904?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-f19285da-48dd-4691-bbdf-f7d6bec157a3?action=share&creator=35240
🔗
PostmanCollection
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-aa69cacc-4bbf-4724-a1d4-78cdad57fee8?action=share&creator=35240
🔗
PostmanCollection
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-a5858f86-04d3-4e15-ae11-b42c7516688b?action=share&creator=35240
🔗
PostmanCollection
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-c2052341-766c-43c7-b1dc-ed4985e4606b?action=share&creator=35240
🔗
PostmanCollection
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-aa777c90-8271-4809-8eac-3ec39a9a899c?action=share&creator=35240
🔗
PostmanCollection
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-4d5957dc-df05-4216-a5fc-d46b3ba811d8?action=share&creator=35240
🔗
PostmanCollection
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-28d97617-fdba-46a5-ac3e-40f3d2e0fa57?action=share&creator=35240
🔗
PostmanCollection
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-7429b451-d812-4abc-b497-b763372cf5c5?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-b0eafdd0-adaa-48a2-a855-6a31beb86d83?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-209f34ef-13c1-400c-bca8-fcddb304aff5?action=share&creator=35240
🔗
PostmanCapability
https://api-evangelist.postman.co/workspace/APIs.io-Engineering-Platform/fe320942-e505-4ee8-8b7c-d72eae00d93f/collection/35240-fb2bbbb8-d4cc-48b1-a660-c8e158bfbbea?action=share&creator=35240

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/engineering-platform-turnstile-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

engineering-platform-turnstile-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'To get started using Cloudflare''s products and services via the API, refer to [how to interact with Cloudflare](https://developers.cloudflare.com/fundamentals/basic-tasks/interact-with-cloudflare/), which covers using tools like [Terraform](https://developers.cloudflare.com/terraform/#cloudflare-terraform) and the [official SDKs](https://developers.cloudflare.com/fundamentals/api/reference/sdks/) to maintain your Cloudflare resources.


    Using the Cloudflare API requires authentication so that Cloudflare knows who is making requests and what permissions you have. Create an API token to grant access to the API to perform actions.


    To create an API token, from the Cloudflare dashboard, go to My Profile > API Tokens and select Create Token. For more information on how to create and troubleshoot API tokens, refer to

    our [API fundamentals](https://developers.cloudflare.com/fundamentals/api/).


    Totally new to Cloudflare? [Start here](https://developers.cloudflare.com/fundamentals/get-started/).'
  license:
    name: BSD-3-Clause
    url: https://opensource.org/licenses/BSD-3-Clause
  title: APIs.io Engineering Platform Cloudflare Turnstile API
  version: 4.0.0
tags:
- name: Turnstile
paths:
  /accounts/{account_id}/challenges/widgets:
    parameters:
    - in: path
      name: account_id
      required: true
      schema:
        $ref: '#/components/schemas/turnstile_identifier'
    - in: query
      name: page
      schema:
        default: 1
        description: Page number of paginated results.
        minimum: 1
        type: number
    - in: query
      name: per_page
      schema:
        default: 25
        description: Number of items per page.
        maximum: 1000
        minimum: 5
        type: number
    - in: query
      name: order
      schema:
        description: Field to order widgets by.
        enum:
        - id
        - sitekey
        - name
        - created_on
        - modified_on
        example: id
    - in: query
      name: direction
      schema:
        description: Direction to order widgets.
        enum:
        - asc
        - desc
        example: asc
    get:
      description: Lists all turnstile widgets of an account.
      operationId: accounts-turnstile-widgets-list
      responses:
        4XX:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/turnstile_api-response-common-failure'
          description: List Turnstile Widgets Error
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/turnstile_api-response-common'
                - properties:
                    result_info:
                      $ref: '#/components/schemas/turnstile_result_info'
                - properties:
                    result:
                      items:
                        $ref: '#/components/schemas/turnstile_widget_list'
                      type: array
          description: List Turnstile Widgets
      security:
      - api_token: []
      - api_email: []
        api_key: []
      summary: APIs.io Engineering Platform List Turnstile Widgets
      tags:
      - Turnstile
      x-api-token-group:
      - Turnstile Sites Read
      - Account Settings Read
    post:
      description: Lists challenge widgets.
      operationId: accounts-turnstile-widget-create
      requestBody:
        content:
          application/json:
            schema:
              properties:
                bot_fight_mode:
                  $ref: '#/components/schemas/turnstile_bot_fight_mode'
                clearance_level:
                  $ref: '#/components/schemas/turnstile_clearance_level'
                domains:
                  $ref: '#/components/schemas/turnstile_domains'
                mode:
                  $ref: '#/components/schemas/turnstile_mode'
                name:
                  $ref: '#/components/schemas/turnstile_name'
                offlabel:
                  $ref: '#/components/schemas/turnstile_offlabel'
                region:
                  $ref: '#/components/schemas/turnstile_region'
              required:
              - name
              - mode
              - domains
        required: true
      responses:
        4XX:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/turnstile_api-response-common-failure'
          description: Create Turnstile Widget Response Error
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/turnstile_api-response-common'
                - properties:
                    result_info:
                      $ref: '#/components/schemas/turnstile_result_info'
                - properties:
                    result:
                      $ref: '#/components/schemas/turnstile_widget_detail'
          description: Create Turnstile Widget Response
      security:
      - api_token: []
      - api_email: []
        api_key: []
      summary: APIs.io Engineering Platform Create a Turnstile Widget
      tags:
      - Turnstile
  /accounts/{account_id}/challenges/widgets/{sitekey}:
    parameters:
    - in: path
      name: account_id
      required: true
      schema:
        $ref: '#/components/schemas/turnstile_identifier'
    - in: path
      name: sitekey
      required: true
      schema:
        $ref: '#/components/schemas/turnstile_sitekey'
    delete:
      description: Destroy a Turnstile Widget.
      operationId: accounts-turnstile-widget-delete
      responses:
        4XX:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/turnstile_api-response-common-failure'
          description: Delete Turnstile Widget Response
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/turnstile_api-response-common'
                - properties:
                    result:
                      $ref: '#/components/schemas/turnstile_widget_detail'
          description: Delete Turnstile Widget Response
      security:
      - api_token: []
      - api_email: []
        api_key: []
      summary: APIs.io Engineering Platform Delete a Turnstile Widget
      tags:
      - Turnstile
    get:
      description: Show a single challenge widget configuration.
      operationId: accounts-turnstile-widget-get
      responses:
        4XX:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/turnstile_api-response-common-failure'
          description: Turnstile Widget Details Response Error
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/turnstile_api-response-common'
                - properties:
                    result:
                      $ref: '#/components/schemas/turnstile_widget_detail'
          description: Turnstile Widget Details Response
      security:
      - api_token: []
      - api_email: []
        api_key: []
      summary: APIs.io Engineering Platform Turnstile Widget Details
      tags:
      - Turnstile
      x-api-token-group:
      - Turnstile Sites Read
      - Account Settings Read
    put:
      description: Update the configuration of a widget.
      operationId: accounts-turnstile-widget-update
      requestBody:
        content:
          application/json:
            schema:
              properties:
                bot_fight_mode:
                  $ref: '#/components/schemas/turnstile_bot_fight_mode'
                clearance_level:
                  $ref: '#/components/schemas/turnstile_clearance_level'
                domains:
                  $ref: '#/components/schemas/turnstile_domains'
                mode:
                  $ref: '#/components/schemas/turnstile_mode'
                name:
                  $ref: '#/components/schemas/turnstile_name'
                offlabel:
                  $ref: '#/components/schemas/turnstile_offlabel'
              required:
              - name
              - mode
              - domains
        required: true
      responses:
        4XX:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/turnstile_api-response-common-failure'
          description: Update Turnstile Widget Response Error
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/turnstile_api-response-common'
                - properties:
                    result:
                      $ref: '#/components/schemas/turnstile_widget_detail'
          description: Update Turnstile Widget Response
      security:
      - api_token: []
      - api_email: []
        api_key: []
      summary: APIs.io Engineering Platform Update a Turnstile Widget
      tags:
      - Turnstile
  /accounts/{account_id}/challenges/widgets/{sitekey}/rotate_secret:
    parameters:
    - in: path
      name: account_id
      required: true
      schema:
        $ref: '#/components/schemas/turnstile_identifier'
    - in: path
      name: sitekey
      required: true
      schema:
        $ref: '#/components/schemas/turnstile_sitekey'
    post:
      description: 'Generate a new secret key for this widget. If `invalidate_immediately`

        is set to `false`, the previous secret remains valid for 2 hours.


        Note that secrets cannot be rotated again during the grace period.

        '
      operationId: accounts-turnstile-widget-rotate-secret
      requestBody:
        content:
          application/json:
            schema:
              properties:
                invalidate_immediately:
                  $ref: '#/components/schemas/turnstile_invalidate_immediately'
        required: true
      responses:
        4XX:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/turnstile_api-response-common-failure'
          description: Rotate Secret Response Error
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/turnstile_api-response-common'
                - properties:
                    result:
                      $ref: '#/components/schemas/turnstile_widget_detail'
          description: Rotate Secret Response
      security:
      - api_token: []
      - api_email: []
        api_key: []
      summary: APIs.io Engineering Platform Rotate Secret for a Turnstile Widget
      tags:
      - Turnstile
components:
  schemas:
    turnstile_secret:
      description: Secret key for this widget.
      example: 0x4AAF00AAAABn0R22HWm098HVBjhdsYUc
      type: string
    turnstile_mode:
      description: Widget Mode
      enum:
      - non-interactive
      - invisible
      - managed
      example: invisible
      type: string
    turnstile_clearance_level:
      description: '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

        '
      enum:
      - no_clearance
      - jschallenge
      - managed
      - interactive
      example: interactive
      type: string
    turnstile_messages:
      example: []
      items:
        properties:
          code:
            minimum: 1000
            type: integer
          message:
            type: string
        required:
        - code
        - message
        type: object
        uniqueItems: true
      type: array
    turnstile_created_on:
      description: When the widget was created.
      example: '2014-01-01T05:20:00.123123Z'
      format: date-time
      readOnly: true
      type: string
    turnstile_widget_detail:
      description: A Turnstile widget's detailed configuration
      properties:
        bot_fight_mode:
          $ref: '#/components/schemas/turnstile_bot_fight_mode'
        clearance_level:
          $ref: '#/components/schemas/turnstile_clearance_level'
        created_on:
          $ref: '#/components/schemas/turnstile_created_on'
        domains:
          $ref: '#/components/schemas/turnstile_domains'
        mode:
          $ref: '#/components/schemas/turnstile_mode'
        modified_on:
          $ref: '#/components/schemas/turnstile_modified_on'
        name:
          $ref: '#/components/schemas/turnstile_name'
        offlabel:
          $ref: '#/components/schemas/turnstile_offlabel'
        region:
          $ref: '#/components/schemas/turnstile_region'
        secret:
          $ref: '#/components/schemas/turnstile_secret'
        sitekey:
          $ref: '#/components/schemas/turnstile_sitekey'
      required:
      - sitekey
      - secret
      - created_on
      - modified_on
      - name
      - domains
      - mode
      - region
      - bot_fight_mode
      - offlabel
      - clearance_level
      type: object
    turnstile_api-response-common:
      properties:
        errors:
          $ref: '#/components/schemas/turnstile_messages'
        messages:
          $ref: '#/components/schemas/turnstile_messages'
        success:
          description: Whether the API call was successful
          example: true
          type: boolean
      required:
      - success
      - errors
      - messages
      type: object
    turnstile_sitekey:
      description: Widget item identifier tag.
      example: 0x4AAF00AAAABn0R22HWm-YUc
      maxLength: 32
      type: string
    turnstile_identifier:
      description: Identifier
      example: 023e105f4ecef8ad9ca31a8372d0c353
      maxLength: 32
      readOnly: true
      type: string
    turnstile_result_info:
      properties:
        count:
          description: Total number of results for the requested service
          example: 1
          type: number
        page:
          description: Current page within paginated list of results
          example: 1
          type: number
        per_page:
          description: Number of results per page of results
          example: 20
          type: number
        total_count:
          description: Total results available without any search parameters
          example: 2000
          type: number
      required:
      - page
      - per_page
      - count
      - total_count
      type: object
    turnstile_bot_fight_mode:
      description: 'If bot_fight_mode is set to `true`, Cloudflare issues computationally

        expensive challenges in response to malicious bots (ENT only).

        '
      example: false
      type: boolean
    turnstile_offlabel:
      description: 'Do not show any Cloudflare branding on the widget (ENT only).

        '
      example: false
      type: boolean
    turnstile_api-response-common-failure:
      properties:
        errors:
          allOf:
          - $ref: '#/components/schemas/turnstile_messages'
          example:
          - code: 7003
            message: No route for the URI
          minLength: 1
        messages:
          allOf:
          - $ref: '#/components/schemas/turnstile_messages'
          example: []
        result:
          type:
          - object
          - 'null'
        success:
          description: Whether the API call was successful
          example: false
          type: boolean
      required:
      - success
      - errors
      - messages
      - result
      type: object
    turnstile_modified_on:
      description: When the widget was modified.
      example: '2014-01-01T05:20:00.123123Z'
      format: date-time
      readOnly: true
      type: string
    turnstile_name:
      description: '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.

        '
      example: blog.cloudflare.com login form
      maxLength: 254
      minLength: 1
      type: string
    turnstile_invalidate_immediately:
      default: false
      description: 'If `invalidate_immediately` is set to `false`, the previous secret will

        remain valid for two hours. Otherwise, the secret is immediately

        invalidated, and requests using it will be rejected.

        '
      type: boolean
    turnstile_region:
      default: world
      description: Region where this widget can be used.
      enum:
      - world
      type: string
    turnstile_domains:
      example:
      - 203.0.113.1
      - cloudflare.com
      - blog.example.com
      items:
        description: 'Hosts as a hostname or IPv4/IPv6 address represented by strings. The

          widget will only work on these domains, and their subdomains.

          '
        example: 203.0.113.1
        type: string
      maxLength: 10
      type: array
    turnstile_widget_list:
      description: A Turnstile Widgets configuration as it appears in listings
      properties:
        bot_fight_mode:
          $ref: '#/components/schemas/turnstile_bot_fight_mode'
        clearance_level:
          $ref: '#/components/schemas/turnstile_clearance_level'
        created_on:
          $ref: '#/components/schemas/turnstile_created_on'
        domains:
          $ref: '#/components/schemas/turnstile_domains'
        mode:
          $ref: '#/components/schemas/turnstile_mode'
        modified_on:
          $ref: '#/components/schemas/turnstile_modified_on'
        name:
          $ref: '#/components/schemas/turnstile_name'
        offlabel:
          $ref: '#/components/schemas/turnstile_offlabel'
        region:
          $ref: '#/components/schemas/turnstile_region'
        sitekey:
          $ref: '#/components/schemas/turnstile_sitekey'
      required:
      - sitekey
      - created_on
      - modified_on
      - name
      - domains
      - mode
      - region
      - bot_fight_mode
      - offlabel
      - clearance_level
      type: object
  securitySchemes:
    api_email:
      in: header
      name: X-Auth-Email
      type: apiKey
    api_key:
      in: header
      name: X-Auth-Key
      type: apiKey
    api_token:
      scheme: bearer
      type: http
    user_service_key:
      in: header
      name: X-Auth-User-Service-Key
      type: apiKey