---
title: Upload asset
---

[Skip to content](#_top)

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

[Pages](https://developers.cloudflare.com/api/python/resources/pages)

[Assets](https://developers.cloudflare.com/api/python/resources/pages/subresources/assets)

Copy Markdown

Open in **Claude**Open in **ChatGPT**Open in **Cursor**

---

**Copy Markdown****View as Markdown**

# Upload asset

pages.assets.upload(AssetUploadParams\*\*kwargs) -> [AssetUploadResponse](<https://developers.cloudflare.com/api/python/resources/pages#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)>)

POST/pages/assets/upload

Upload one or more files to the Pages asset store. Each file is identified by its content hash and is uploaded using the same JSON shape as the Cloudflare KV bulk write API. Used as part of the Pages Direct Upload workflow.

Authenticate with the JWT obtained from the upload-token endpoint: GET /accounts/{account\_id}/pages/projects/{project\_name}/upload-token

##### Security

##### ParametersExpand Collapse

<details>

<summary>

body: Iterable\[Body]

</summary>

base64: bool

Whether value is base64 encoded.

<a href="#(resource)%20pages.assets%20%3E%20(method)%20upload%20%3E%20(params)%20default%20%3E%20(param)%20body%20%3E%20(schema)%20%3E%20(items)%20%3E%20(property)%20base64">Link to this property</a>

key: str

File content hash used as the object key in the Pages asset store.

<a href="#(resource)%20pages.assets%20%3E%20(method)%20upload%20%3E%20(params)%20default%20%3E%20(param)%20body%20%3E%20(schema)%20%3E%20(items)%20%3E%20(property)%20key">Link to this property</a>

<details>

<summary>

metadata: BodyMetadata

</summary>

content\_type: str

MIME type for the uploaded file.

<a href="#(resource)%20pages.assets%20%3E%20(method)%20upload%20%3E%20(params)%20default%20%3E%20(param)%20body%20%3E%20(schema)%20%3E%20(items)%20%3E%20(property)%20metadata%20%3E%20(property)%20contentType">Link to this property</a>

</details>

<a href="#(resource)%20pages.assets%20%3E%20(method)%20upload%20%3E%20(params)%20default%20%3E%20(param)%20body%20%3E%20(schema)%20%3E%20(items)%20%3E%20(property)%20metadata">Link to this property</a>

value: str

File content. When base64 is true, this value is base64 encoded.

<a href="#(resource)%20pages.assets%20%3E%20(method)%20upload%20%3E%20(params)%20default%20%3E%20(param)%20body%20%3E%20(schema)%20%3E%20(items)%20%3E%20(property)%20value">Link to this property</a>

</details>

[Link to this property](<#(resource)%20pages.assets%20%3E%20(method)%20upload%20%3E%20(params)%20default%20%3E%20(param)%20body%20%3E%20(schema)>)

##### ReturnsExpand Collapse

<details>

<summary>

class AssetUploadResponse: …

</summary>

<details>

<summary>

errors: List\[Error]

</summary>

code: int

minimum1000

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20errors%20%3E%20(items)%20%3E%20(property)%20code">Link to this property</a>

message: str

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20errors%20%3E%20(items)%20%3E%20(property)%20message">Link to this property</a>

documentation\_url: Optional\[str]

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20errors%20%3E%20(items)%20%3E%20(property)%20documentation_url">Link to this property</a>

<details>

<summary>

source: Optional\[ErrorSource]

</summary>

pointer: Optional\[str]

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20errors%20%3E%20(items)%20%3E%20(property)%20source%20%3E%20(property)%20pointer">Link to this property</a>

</details>

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20errors%20%3E%20(items)%20%3E%20(property)%20source">Link to this property</a>

</details>

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20errors">Link to this property</a>

<details>

<summary>

messages: List\[Message]

</summary>

code: int

minimum1000

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20messages%20%3E%20(items)%20%3E%20(property)%20code">Link to this property</a>

message: str

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20messages%20%3E%20(items)%20%3E%20(property)%20message">Link to this property</a>

documentation\_url: Optional\[str]

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20messages%20%3E%20(items)%20%3E%20(property)%20documentation_url">Link to this property</a>

<details>

<summary>

source: Optional\[MessageSource]

</summary>

pointer: Optional\[str]

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20messages%20%3E%20(items)%20%3E%20(property)%20source%20%3E%20(property)%20pointer">Link to this property</a>

</details>

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20messages%20%3E%20(items)%20%3E%20(property)%20source">Link to this property</a>

</details>

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20messages">Link to this property</a>

success: Literal\[true]

Whether the API call was successful.

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)%20%3E%20(property)%20success">Link to this property</a>

</details>

[Link to this property](<#(resource)%20pages.assets%20%3E%20(model)%20asset_upload_response%20%3E%20(schema)>)

### Upload asset

Python

HTTPTypeScriptPythonGoTerraform

```
from cloudflare import Cloudflare

client = Cloudflare()
response = client.pages.assets.upload(
    body=[{
        "base64": True,
        "key": "b026324c6904b2a9cb4b88d6d61c81d1",
        "metadata": {
            "content_type": "text/plain"
        },
        "value": "SGVsbG8sIFdvcmxkIQ==",
    }],
)
print(response.errors)
```

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
}
```

##### 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
}
```