---
title: Update CSAM Scanner setting
---

[Skip to content](#%5Ftop) 

[API Reference](https://developers.cloudflare.com/api/python)

[Csam Scanner](https://developers.cloudflare.com/api/python/resources/csam%5Fscanner)

Copy Markdown

Open in **Claude**

Open in **ChatGPT**

Open in **Cursor**

---

**Copy Markdown**

**View as Markdown**

# Update CSAM Scanner setting

csam\_scanner.edit(CsamScannerEditParams\*\*kwargs)  \-> [CsamScannerEditResponse](https://developers.cloudflare.com/api/python/resources/csam%5Fscanner#%28resource%29%20csam%5Fscanner%20%3E%20%28model%29%20csam%5Fscanner%5Fedit%5Fresponse%20%3E%20%28schema%29)

PATCH/zones/{zone\_id}/settings/csam\_scanner\_third\_party

Update the CSAM Scanner configuration for a zone. Allows enabling or disabling CSAM scanning, updating the notification email, and configuring scanning sources.

When a new email is provided, email verification is triggered automatically. The `enabled` field is a toggle; the server may adjust it based on whether the notification email is verified.

Returns 403 if the zone or account is locked by Trust & Safety.

##### Security

API Token

The preferred authorization scheme for interacting with the Cloudflare API. [Create a token](https://developers.cloudflare.com/fundamentals/api/get-started/create-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)

`Zone Settings Write`

##### ParametersExpand Collapse 

zone\_id: str

Identifier for the zone.

maxLength32

minLength1

id: Optional\[Literal\["csam\_scanner"\]\]

The feature identifier.

value: Optional\[[Value](https://developers.cloudflare.com/api/python/resources/csam%5Fscanner/methods/edit#%28resource%29%20csam%5Fscanner%20%3E%20%28method%29%20edit%20%3E%20%28params%29%20default%20%3E%20%28param%29%20value%20%3E%20%28schema%29)\]

Writable CSAM Scanner feature configuration values.

email: Optional\[str\]

Notification email address for CSAM scan results. When changed, email verification is triggered automatically.

maxLength254

enabled: Optional\[bool\]

Whether CSAM scanning is enabled for this zone.

resend\_email: Optional\[bool\]

Set to true to trigger re-sending the email verification. Write-only; never appears in responses (omitted when false).

sources: Optional\[Dict\[str, bool\]\]

Map of scanning sources and their enabled state.

##### ReturnsExpand Collapse 

class CsamScannerEditResponse: …

CSAM Scanner configuration for a zone.

id: Optional\[Literal\["csam\_scanner"\]\]

The feature identifier.

editable: Optional\[bool\]

Whether the feature state can be changed. When false, the zone or account may be locked by Trust & Safety.

modified\_on: Optional\[datetime\]

When the setting was last modified. Currently always null as the server does not populate this field.

formatdate-time

value: Optional\[Value\]

The CSAM Scanner feature configuration values. Contains the notification email and scanning enablement settings.

email: Optional\[str\]

Notification email address for CSAM scan results. Masked in responses unless explicitly unmasked via admin endpoint.

maxLength254

email\_state: Optional\[Literal\["valid", "pending", "unverified"\]\]

Current verification state of the notification email.

One of the following:

"valid"

"pending"

"unverified"

enabled: Optional\[bool\]

Whether CSAM scanning is enabled for this zone.

sources: Optional\[Dict\[str, bool\]\]

Map of scanning sources and their enabled state.

zone\_plan: Optional\[str\]

The zone’s plan level.

### Update CSAM Scanner setting

Python

HTTPHTTP

TypeScriptTypeScript

PythonPython

GoGo

TerraformTerraform

```
import os
from cloudflare import Cloudflare

client = Cloudflare(
    api_token=os.environ.get("CLOUDFLARE_API_TOKEN"),  # This is the default and can be omitted
)
response = client.csam_scanner.edit(
    zone_id="023e105f4ecef8ad9ca31a8372d0c353",
)
print(response.id)
```

200 example

```
{
  "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": {
    "id": "csam_scanner",
    "editable": true,
    "modified_on": "2019-12-27T18:11:19.117Z",
    "value": {
      "email": "**********",
      "email_state": "valid",
      "enabled": true,
      "sources": {
        "source1": true
      },
      "zone_plan": "ent"
    }
  }
}
```

##### Returns Examples

200 example

```
{
  "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": {
    "id": "csam_scanner",
    "editable": true,
    "modified_on": "2019-12-27T18:11:19.117Z",
    "value": {
      "email": "**********",
      "email_state": "valid",
      "enabled": true,
      "sources": {
        "source1": true
      },
      "zone_plan": "ent"
    }
  }
}
```