---
title: Custom Pages
---

[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**

# Custom Pages

##### [List custom pages](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages/methods/list)

client.customPages.list(CustomPageListParams { account\_id, zone\_id } params?, RequestOptionsoptions?): SinglePage<[CustomPageListResponse](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages#%28resource%29%20custom%5Fpages%20%3E%20%28model%29%20custom%5Fpage%5Flist%5Fresponse%20%3E%20%28schema%29) { id, created\_on, description, 5 more } \>

GET/{accounts\_or\_zones}/{account\_or\_zone\_id}/custom\_pages

##### [Get a custom page](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages/methods/get)

client.customPages.get("1000\_errors" | "500\_errors" | "basic\_challenge" | 7 moreidentifier, CustomPageGetParams { account\_id, zone\_id } params?, RequestOptionsoptions?): [CustomPageGetResponse](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages#%28resource%29%20custom%5Fpages%20%3E%20%28model%29%20custom%5Fpage%5Fget%5Fresponse%20%3E%20%28schema%29) { id, created\_on, description, 5 more } 

GET/{accounts\_or\_zones}/{account\_or\_zone\_id}/custom\_pages/{identifier}

##### [Update a custom page](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages/methods/update)

client.customPages.update("1000\_errors" | "500\_errors" | "basic\_challenge" | 7 moreidentifier, CustomPageUpdateParams { state, url, account\_id, zone\_id } params, RequestOptionsoptions?): [CustomPageUpdateResponse](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages#%28resource%29%20custom%5Fpages%20%3E%20%28model%29%20custom%5Fpage%5Fupdate%5Fresponse%20%3E%20%28schema%29) { id, created\_on, description, 5 more } 

PUT/{accounts\_or\_zones}/{account\_or\_zone\_id}/custom\_pages/{identifier}

##### ModelsExpand Collapse 

CustomPageListResponse { id, created\_on, description, 5 more } 

id?: string

created\_on?: string

formatdate-time

description?: string

modified\_on?: string

formatdate-time

preview\_target?: string

required\_tokens?: Array<string\>

state?: "default" | "customized"

The custom page state.

One of the following:

"default"

"customized"

url?: string

The URL associated with the custom page.

formaturi

CustomPageGetResponse { id, created\_on, description, 5 more } 

id?: string

created\_on?: string

formatdate-time

description?: string

modified\_on?: string

formatdate-time

preview\_target?: string

required\_tokens?: Array<string\>

state?: "default" | "customized"

The custom page state.

One of the following:

"default"

"customized"

url?: string

The URL associated with the custom page.

formaturi

CustomPageUpdateResponse { id, created\_on, description, 5 more } 

id?: string

created\_on?: string

formatdate-time

description?: string

modified\_on?: string

formatdate-time

preview\_target?: string

required\_tokens?: Array<string\>

state?: "default" | "customized"

The custom page state.

One of the following:

"default"

"customized"

url?: string

The URL associated with the custom page.

formaturi

#### Custom PagesAssets

##### [List custom assets](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages/subresources/assets/methods/list)

client.customPages.assets.list(AssetListParams { account\_id, zone\_id, page, per\_page } params?, RequestOptionsoptions?): V4PagePaginationArray<[AssetListResponse](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages#%28resource%29%20custom%5Fpages.assets%20%3E%20%28model%29%20asset%5Flist%5Fresponse%20%3E%20%28schema%29) { description, last\_updated, name, 2 more } \>

GET/{accounts\_or\_zones}/{account\_or\_zone\_id}/custom\_pages/assets

##### [Get a custom asset](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages/subresources/assets/methods/get)

client.customPages.assets.get(stringassetName, AssetGetParams { account\_id, zone\_id } params?, RequestOptionsoptions?): [AssetGetResponse](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages#%28resource%29%20custom%5Fpages.assets%20%3E%20%28model%29%20asset%5Fget%5Fresponse%20%3E%20%28schema%29) { description, last\_updated, name, 2 more } 

GET/{accounts\_or\_zones}/{account\_or\_zone\_id}/custom\_pages/assets/{asset\_name}

##### [Create a custom asset](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages/subresources/assets/methods/create)

client.customPages.assets.create(AssetCreateParams { description, name, url, 2 more } params, RequestOptionsoptions?): [AssetCreateResponse](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages#%28resource%29%20custom%5Fpages.assets%20%3E%20%28model%29%20asset%5Fcreate%5Fresponse%20%3E%20%28schema%29) { description, last\_updated, name, 2 more } 

POST/{accounts\_or\_zones}/{account\_or\_zone\_id}/custom\_pages/assets

##### [Update a custom asset](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages/subresources/assets/methods/update)

client.customPages.assets.update(stringassetName, AssetUpdateParams { description, url, account\_id, zone\_id } params, RequestOptionsoptions?): [AssetUpdateResponse](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages#%28resource%29%20custom%5Fpages.assets%20%3E%20%28model%29%20asset%5Fupdate%5Fresponse%20%3E%20%28schema%29) { description, last\_updated, name, 2 more } 

PUT/{accounts\_or\_zones}/{account\_or\_zone\_id}/custom\_pages/assets/{asset\_name}

##### [Delete a custom asset](https://developers.cloudflare.com/api/typescript/resources/custom%5Fpages/subresources/assets/methods/delete)

client.customPages.assets.delete(stringassetName, AssetDeleteParams { account\_id, zone\_id } params?, RequestOptionsoptions?): void

DELETE/{accounts\_or\_zones}/{account\_or\_zone\_id}/custom\_pages/assets/{asset\_name}

##### ModelsExpand Collapse 

AssetListResponse { description, last\_updated, name, 2 more } 

description?: string

A short description of the custom asset.

last\_updated?: string

formatdate-time

name?: string

The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (\_).

minLength1

size\_bytes?: number

The size of the asset content in bytes.

url?: string

The URL where the asset content is fetched from.

formaturi

AssetGetResponse { description, last\_updated, name, 2 more } 

description?: string

A short description of the custom asset.

last\_updated?: string

formatdate-time

name?: string

The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (\_).

minLength1

size\_bytes?: number

The size of the asset content in bytes.

url?: string

The URL where the asset content is fetched from.

formaturi

AssetCreateResponse { description, last\_updated, name, 2 more } 

description?: string

A short description of the custom asset.

last\_updated?: string

formatdate-time

name?: string

The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (\_).

minLength1

size\_bytes?: number

The size of the asset content in bytes.

url?: string

The URL where the asset content is fetched from.

formaturi

AssetUpdateResponse { description, last\_updated, name, 2 more } 

description?: string

A short description of the custom asset.

last\_updated?: string

formatdate-time

name?: string

The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (\_).

minLength1

size\_bytes?: number

The size of the asset content in bytes.

url?: string

The URL where the asset content is fetched from.

formaturi