---
title: Upsert asset hashes
---

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

# Upsert asset hashes

pages.assets.upsert\_hashes(AssetUpsertHashesParams\*\*kwargs) -> [AssetUpsertHashesResponse](<https://developers.cloudflare.com/api/python/resources/pages#(resource)%20pages.assets%20%3E%20(model)%20asset_upsert_hashes_response%20%3E%20(schema)>)

POST/pages/assets/upsert-hashes

Register the provided file hashes as recently uploaded to the Pages asset store. Used as part of the Pages Direct Upload workflow so future deployments can avoid re-uploading files that are already present.

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

##### Security

##### ParametersExpand Collapse

hashes: Sequence\[str]

List of file content hashes to register in the asset store.

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

##### ReturnsExpand Collapse

<details>

<summary>

class AssetUpsertHashesResponse: …

</summary>

<details>

<summary>

errors: List\[Error]

</summary>

code: int

minimum1000

<a href="#(resource)%20pages.assets%20%3E%20(model)%20asset_upsert_hashes_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_upsert_hashes_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_upsert_hashes_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_upsert_hashes_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_upsert_hashes_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_upsert_hashes_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_upsert_hashes_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_upsert_hashes_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_upsert_hashes_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_upsert_hashes_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_upsert_hashes_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_upsert_hashes_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_upsert_hashes_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_upsert_hashes_response%20%3E%20(schema)>)

### Upsert asset hashes

Python

HTTPTypeScriptPythonGoTerraform

```
from cloudflare import Cloudflare

client = Cloudflare()
response = client.pages.assets.upsert_hashes(
    hashes=["a948904f2f0f479b8f936b8a0c5d9882", "b026324c6904b2a9cb4b88d6d61c81d1"],
)
print(response.errors)
```

200 example

```
{
  "errors": [],
  "messages": [],
  "success": true
}
```

##### Returns Examples

200 example

```
{
  "errors": [],
  "messages": [],
  "success": true
}
```