Skip to content
Start here

Submit a feedback report

POST/zones/{zone_id}/bot_management/feedback

Submit a feedback report for the specified zone. Use type to indicate whether the report is a false positive (good traffic flagged as bot) or a false negative (bot traffic missed). Furthermore, you can also use expression as a wirefilter to identify the affected traffic sample.

See more accepted API fields and expression types at https://developers.cloudflare.com/bots/concepts/feedback-loop/#api-fields and https://developers.cloudflare.com/bots/concepts/feedback-loop/#expression-fields, respectively.

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)
Bot Management Feedback Report WriteBot Management Feedback Report ReadBot Management WriteBot Management Read
Path ParametersExpand Collapse
zone_id: string

Identifier.

maxLength32
Body ParametersJSONExpand Collapse
description: string
expression: string

Wirefilter expression describing the traffic being reported.

first_request_seen_at: string
formatdate-time
last_request_seen_at: string
formatdate-time
requests: number
formatint64
requests_by_attribute: RequestsByAttribute { metric, requests }

Top attributes contributing to the feedback sample. Keys include topASNs, topCountries, topHosts, topIPs, topJA3Hashes, topJA4s, topPaths, topUserAgents.

metric: string
requests: number
formatint64
requests_by_score: RequestsByScore

Map of bot scores (1-99) to request counts. Sum must equal requests.

requests_by_score_src: RequestsByScoreSrc

Map of score source to request counts. Sum must equal requests.

Type of feedback report.

One of the following:
"false_positive"
"false_negative"
subtype: optional string

Submit a feedback report

curl https://api.cloudflare.com/client/v4/zones/$ZONE_ID/bot_management/feedback \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    -d "{
          \"description\": \"Automated scraping missed by detections\",
          \"expression\": \"http.host eq 'www.example.com' and http.request.uri.path starts_with '/products' and cf.bot_management.score gt 25\",
          \"first_request_seen_at\": \"2025-09-29T00:00:00Z\",
          \"last_request_seen_at\": \"2025-09-29T06:00:00Z\",
          \"requests\": 2000,
          \"requests_by_attribute\": {
            \"topIPs\": [
              {
                \"metric\": \"203.0.113.55\",
                \"requests\": 400
              }
            ],
            \"topJA3Hashes\": [
              {
                \"metric\": \"ab12cd34ef56...\",
                \"requests\": 900
              }
            ]
          },
          \"requests_by_score\": {
            \"30\": 800,
            \"40\": 700,
            \"50\": 500
          },
          \"requests_by_score_src\": {
            \"heuristics\": 200,
            \"ml\": 1800
          },
          \"type\": \"false_negative\"
        }"
Returns Examples