---
title: Brand Protection
---

[Skip to content](#%5Ftop) 

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

Copy Markdown

Open in **Claude**

Open in **ChatGPT**

Open in **Cursor**

---

**Copy Markdown**

**View as Markdown**

# Brand Protection

##### [Create new URL submissions](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/methods/submit)

client.brandProtection.submit(BrandProtectionSubmitParams { account\_id } params, RequestOptionsoptions?): [BrandProtectionSubmitResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection%20%3E%20%28model%29%20brand%5Fprotection%5Fsubmit%5Fresponse%20%3E%20%28schema%29) { skipped\_urls, submitted\_urls } 

POST/accounts/{account\_id}/brand-protection/submit

##### [Read submitted URLs by ID](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/methods/url%5Finfo)

client.brandProtection.urlInfo(BrandProtectionURLInfoParams { account\_id } params, RequestOptionsoptions?): SinglePage<[BrandProtectionURLInfoResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection%20%3E%20%28model%29%20brand%5Fprotection%5Furl%5Finfo%5Fresponse%20%3E%20%28schema%29)\>

GET/accounts/{account\_id}/brand-protection/url-info

##### ModelsExpand Collapse 

Info { categorizations, model\_results, rule\_matches, 4 more } 

categorizations?: Array<Categorization\>

List of categorizations applied to this submission.

category?: string

Name of the category applied.

verification\_status?: string

Result of human review for this categorization.

model\_results?: Array<ModelResult\>

List of model results for completed scans.

model\_name?: string

Name of the model.

model\_score?: number

This is the score that is outputted by the model for this submission.

rule\_matches?: Array<RuleMatch\>

List of signatures that matched against site content found when crawling the URL.

banning?: boolean

For internal use.

blocking?: boolean

For internal use.

description?: string

Description of the signature that matched.

name?: string

Name of the signature that matched.

scan\_status?: ScanStatus { last\_processed, scan\_complete, status\_code, submission\_id } 

Status of the most recent scan found.

last\_processed?: string

Timestamp of when the submission was processed.

scan\_complete?: boolean

For internal use.

status\_code?: number

Status code that the crawler received when loading the submitted URL.

submission\_id?: number

ID of the most recent submission.

screenshot\_download\_signature?: string

For internal use.

screenshot\_path?: string

For internal use.

url?: string

URL that was submitted.

Submit { excluded\_urls, skipped\_urls, submitted\_urls } 

excluded\_urls?: Array<ExcludedURL\>

URLs that were excluded from scanning because their domain is in our no-scan list.

url?: string

URL that was excluded.

skipped\_urls?: Array<SkippedURL\>

URLs that were skipped because the same URL is currently being scanned.

url?: string

URL that was skipped.

url\_id?: number

ID of the submission of that URL that is currently scanning.

submitted\_urls?: Array<SubmittedURL\>

URLs that were successfully submitted for scanning.

url?: string

URL that was submitted.

url\_id?: number

ID assigned to this URL submission. Used to retrieve scanning results.

BrandProtectionSubmitResponse { skipped\_urls, submitted\_urls } 

skipped\_urls?: Array<Record<string, unknown\>\>

submitted\_urls?: Array<Record<string, unknown\>\>

BrandProtectionURLInfoResponse \= Record<string, unknown\>

#### Brand ProtectionQueries

##### [Create new saved string queries](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/queries/methods/create)

client.brandProtection.queries.create(QueryCreateParams { account\_id, id, body\_scan, 4 more } params, RequestOptionsoptions?): void

POST/accounts/{account\_id}/brand-protection/queries

##### [Delete saved string queries by ID](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/queries/methods/delete)

client.brandProtection.queries.delete(QueryDeleteParams { account\_id, id, scan, tag } params, RequestOptionsoptions?): void

DELETE/accounts/{account\_id}/brand-protection/queries

##### [Create new saved string queries in bulk](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/queries/methods/bulk)

client.brandProtection.queries.bulk(QueryBulkParams { account\_id, queries } params, RequestOptionsoptions?): void

POST/accounts/{account\_id}/brand-protection/queries/bulk

#### Brand ProtectionMatches

##### [Read matches for string queries by ID](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/matches/methods/get)

client.brandProtection.matches.get(MatchGetParams { account\_id, id, include\_dismissed, 3 more } params, RequestOptionsoptions?): [MatchGetResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection.matches%20%3E%20%28model%29%20match%5Fget%5Fresponse%20%3E%20%28schema%29) { matches, total } 

GET/accounts/{account\_id}/brand-protection/matches

##### [Download matches for string queries by ID](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/matches/methods/download)

client.brandProtection.matches.download(MatchDownloadParams { account\_id, id, include\_dismissed, 3 more } params, RequestOptionsoptions?): [MatchDownloadResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection.matches%20%3E%20%28model%29%20match%5Fdownload%5Fresponse%20%3E%20%28schema%29) { matches, total } 

GET/accounts/{account\_id}/brand-protection/matches/download

##### ModelsExpand Collapse 

MatchGetResponse { matches, total } 

matches?: Array<Record<string, unknown\>\>

total?: number

MatchDownloadResponse { matches, total } 

matches?: Array<Record<string, unknown\>\>

total?: number

#### Brand ProtectionLogos

##### [Create new saved logo queries from image files](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/logos/methods/create)

client.brandProtection.logos.create(LogoCreateParams { account\_id, match\_type, tag, 2 more } params, RequestOptionsoptions?): [LogoCreateResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection.logos%20%3E%20%28model%29%20logo%5Fcreate%5Fresponse%20%3E%20%28schema%29) { id, tag, upload\_path } 

POST/accounts/{account\_id}/brand-protection/logos

##### [Delete saved logo queries by ID](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/logos/methods/delete)

client.brandProtection.logos.delete(stringlogoID, LogoDeleteParams { account\_id } params, RequestOptionsoptions?): void

DELETE/accounts/{account\_id}/brand-protection/logos/{logo\_id}

##### ModelsExpand Collapse 

LogoCreateResponse { id, tag, upload\_path } 

id?: number

tag?: string

upload\_path?: string

#### Brand ProtectionLogo Matches

##### [Read matches for logo queries by ID](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/logo%5Fmatches/methods/get)

client.brandProtection.logoMatches.get(LogoMatchGetParams { account\_id, limit, logo\_id, offset } params, RequestOptionsoptions?): [LogoMatchGetResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection.logo%5Fmatches%20%3E%20%28model%29%20logo%5Fmatch%5Fget%5Fresponse%20%3E%20%28schema%29) { matches, total } 

GET/accounts/{account\_id}/brand-protection/logo-matches

##### [Download matches for logo queries by ID](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/logo%5Fmatches/methods/download)

client.brandProtection.logoMatches.download(LogoMatchDownloadParams { account\_id, limit, logo\_id, offset } params, RequestOptionsoptions?): [LogoMatchDownloadResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection.logo%5Fmatches%20%3E%20%28model%29%20logo%5Fmatch%5Fdownload%5Fresponse%20%3E%20%28schema%29) { matches, total } 

GET/accounts/{account\_id}/brand-protection/logo-matches/download

##### ModelsExpand Collapse 

LogoMatchGetResponse { matches, total } 

matches?: Array<Record<string, unknown\>\>

total?: number

LogoMatchDownloadResponse { matches, total } 

matches?: Array<Record<string, unknown\>\>

total?: number

#### Brand ProtectionV2

#### Brand ProtectionV2Queries

##### [Get queries](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/v2/subresources/queries/methods/get)

client.brandProtection.v2.queries.get(QueryGetParams { account\_id, id, page, per\_page } params, RequestOptionsoptions?): [QueryGetResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection.v2.queries%20%3E%20%28model%29%20query%5Fget%5Fresponse%20%3E%20%28schema%29)

GET/accounts/{account\_id}/cloudforce-one/v2/brand-protection/domain/queries

##### ModelsExpand Collapse 

QueryGetResponse \= Array<UnionMember0\> | UnionMember1 { created, parameters, query\_id, 3 more } 

One of the following:

Array<UnionMember0\>

created: string

parameters: Parameters | null

string\_matches: Array<StringMatch\>

pattern: string

maxLength200

minLength1

max\_time?: string

min\_time?: string

query\_id: number

query\_tag: string

scan: boolean

updated: string

UnionMember1 { created, parameters, query\_id, 3 more } 

created: string

parameters: Parameters | null

string\_matches: Array<StringMatch\>

pattern: string

maxLength200

minLength1

max\_time?: string

min\_time?: string

query\_id: number

query\_tag: string

scan: boolean

updated: string

#### Brand ProtectionV2Matches

##### [List saved query matches](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/v2/subresources/matches/methods/get)

client.brandProtection.v2.matches.get(MatchGetParams { account\_id, query\_id, domain\_search, 6 more } params, RequestOptionsoptions?): [MatchGetResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection.v2.matches%20%3E%20%28model%29%20match%5Fget%5Fresponse%20%3E%20%28schema%29) { matches, total } 

GET/accounts/{account\_id}/cloudforce-one/v2/brand-protection/domain/matches

##### ModelsExpand Collapse 

MatchGetResponse { matches, total } 

matches: Array<Match\>

domain: string

first\_seen: string

public\_scans: PublicScans | null

submission\_id: string

registrar: string | null

scan\_status: string

scan\_submission\_id: number | null

source: string | null

dismissed?: boolean

Whether the match is dismissed. Only present for single-query requests. For multi-query requests, use the dismissed field in each match\_details entry.

match\_details?: Array<MatchDetail\>

Per-match detail objects with query metadata and individual dismissed state. Only present when multiple query\_ids are requested.

dismissed: boolean

Individual dismissed state for this specific match.

match\_id: number

query\_id: number

query\_tag: string | null

Tag associated with the query, if one exists.

total: number

minimum0

#### Brand ProtectionV2Logos

##### [Insert logo query](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/v2/subresources/logos/methods/create)

client.brandProtection.v2.logos.create(LogoCreateParams { account\_id, image\_data, similarity\_threshold, 2 more } params, RequestOptionsoptions?): [LogoCreateResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection.v2.logos%20%3E%20%28model%29%20logo%5Fcreate%5Fresponse%20%3E%20%28schema%29) { message, success, query\_id } 

POST/accounts/{account\_id}/cloudforce-one/v2/brand-protection/logo/queries

##### [Delete logo query](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/v2/subresources/logos/methods/delete)

client.brandProtection.v2.logos.delete(stringqueryID, LogoDeleteParams { account\_id } params, RequestOptionsoptions?): [LogoDeleteResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection.v2.logos%20%3E%20%28model%29%20logo%5Fdelete%5Fresponse%20%3E%20%28schema%29) { message, success } 

DELETE/accounts/{account\_id}/cloudforce-one/v2/brand-protection/logo/queries/{query\_id}

##### [Get logo queries](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/v2/subresources/logos/methods/get)

client.brandProtection.v2.logos.get(LogoGetParams { account\_id, id, download } params, RequestOptionsoptions?): [LogoGetResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection.v2.logos%20%3E%20%28model%29%20logo%5Fget%5Fresponse%20%3E%20%28schema%29) { id, r2\_path, similarity\_threshold, 4 more } 

GET/accounts/{account\_id}/cloudforce-one/v2/brand-protection/logo/queries

##### ModelsExpand Collapse 

LogoCreateResponse { message, success, query\_id } 

message: string

success: boolean

query\_id?: number

LogoDeleteResponse { message, success } 

message: string

success: boolean

LogoGetResponse \= Array<LogoGetResponseItem\>

id: number

r2\_path: string

similarity\_threshold: number

tag: string

uploaded\_at: string | null

content\_type?: string

MIME type of the image (only present when download=true)

image\_data?: string

Base64-encoded image data (only present when download=true)

#### Brand ProtectionV2Logo Matches

##### [List logo matches](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection/subresources/v2/subresources/logo%5Fmatches/methods/get)

client.brandProtection.v2.logoMatches.get(LogoMatchGetParams { account\_id, query\_id, download, 4 more } params, RequestOptionsoptions?): [LogoMatchGetResponse](https://developers.cloudflare.com/api/typescript/resources/brand%5Fprotection#%28resource%29%20brand%5Fprotection.v2.logo%5Fmatches%20%3E%20%28model%29%20logo%5Fmatch%5Fget%5Fresponse%20%3E%20%28schema%29) { matches, total } 

GET/accounts/{account\_id}/cloudforce-one/v2/brand-protection/logo/matches

##### ModelsExpand Collapse 

LogoMatchGetResponse { matches, total } 

matches: Array<Match\>

id: number

domain: string | null

matched\_at: string | null

query\_id: number

registrar: string | null

similarity\_score: number

url\_scan\_id: string | null

content\_type?: string

image\_data?: string

total: number

minimum0