# AI Security ## Get AI Security for Apps Status `client.AISecurity.Get(ctx, query) (*AISecurityGetResponse, error)` **get** `/zones/{zone_id}/ai-security/settings` Get whether AI Security for Apps is enabled or disabled for a zone. ### Parameters - `query AISecurityGetParams` - `ZoneID param.Field[string]` Defines the zone. ### Returns - `type AISecurityGetResponse struct{…}` AI Security for Apps enablement status for a zone. - `Enabled bool` Whether AI Security for Apps is enabled on the zone. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/ai_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) aiSecurity, err := client.AISecurity.Get(context.TODO(), ai_security.AISecurityGetParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", aiSecurity.Enabled) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "enabled": true }, "success": true } ``` ## Set AI Security for Apps Status `client.AISecurity.Update(ctx, params) (*AISecurityUpdateResponse, error)` **put** `/zones/{zone_id}/ai-security/settings` Enable or disable AI Security for Apps for a zone. Changes can take up to a minute to propagate to the zone. ### Parameters - `params AISecurityUpdateParams` - `ZoneID param.Field[string]` Path param: Defines the zone. - `Enabled param.Field[bool]` Body param: Whether AI Security for Apps is enabled on the zone. ### Returns - `type AISecurityUpdateResponse struct{…}` AI Security for Apps enablement status for a zone. - `Enabled bool` Whether AI Security for Apps is enabled on the zone. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/ai_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) aiSecurity, err := client.AISecurity.Update(context.TODO(), ai_security.AISecurityUpdateParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", aiSecurity.Enabled) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "enabled": true }, "success": true } ``` # Custom Topics ## Get AI Security for Apps Custom Topics `client.AISecurity.CustomTopics.Get(ctx, query) (*CustomTopicGetResponse, error)` **get** `/zones/{zone_id}/ai-security/custom-topics` Get the AI Security for Apps custom topic categories for a zone. ### Parameters - `query CustomTopicGetParams` - `ZoneID param.Field[string]` Defines the zone. ### Returns - `type CustomTopicGetResponse struct{…}` - `Topics []CustomTopicGetResponseTopic` Custom topic categories for AI Security for Apps content detection. - `Label string` Unique label identifier. Must contain only lowercase letters (a–z), digits (0–9), and hyphens. - `Topic string` Description of the topic category. Must contain only printable ASCII characters. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/ai_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) customTopic, err := client.AISecurity.CustomTopics.Get(context.TODO(), ai_security.CustomTopicGetParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", customTopic.Topics) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "topics": [ { "label": "credit-cards", "topic": "credit card numbers" } ] }, "success": true } ``` ## Set AI Security for Apps Custom Topics `client.AISecurity.CustomTopics.Update(ctx, params) (*CustomTopicUpdateResponse, error)` **put** `/zones/{zone_id}/ai-security/custom-topics` Set the AI Security for Apps custom topic categories for a zone. A maximum of 20 custom topics can be configured per zone. Each topic label must be 2–20 characters using only lowercase letters (a–z), digits (0–9), and hyphens. Each topic description must be 2–50 printable ASCII characters. Changes can take up to a minute to propagate to the zone. ### Parameters - `params CustomTopicUpdateParams` - `ZoneID param.Field[string]` Path param: Defines the zone. - `Topics param.Field[[]CustomTopicUpdateParamsTopic]` Body param: Custom topic categories for AI Security for Apps content detection. - `Label string` Unique label identifier. Must contain only lowercase letters (a–z), digits (0–9), and hyphens. - `Topic string` Description of the topic category. Must contain only printable ASCII characters. ### Returns - `type CustomTopicUpdateResponse struct{…}` - `Topics []CustomTopicUpdateResponseTopic` Custom topic categories for AI Security for Apps content detection. - `Label string` Unique label identifier. Must contain only lowercase letters (a–z), digits (0–9), and hyphens. - `Topic string` Description of the topic category. Must contain only printable ASCII characters. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/ai_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) customTopic, err := client.AISecurity.CustomTopics.Update(context.TODO(), ai_security.CustomTopicUpdateParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", customTopic.Topics) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "topics": [ { "label": "credit-cards", "topic": "credit card numbers" } ] }, "success": true } ```