---
title: Upload asset
---

[Skip to content](#%5Ftop) 

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

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

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

Copy Markdown

Open in **Claude**

Open in **ChatGPT**

Open in **Cursor**

---

**Copy Markdown**

**View as Markdown**

# Upload asset

client.Pages.Assets.Upload(ctx, body) (\*[AssetUploadResponse](https://developers.cloudflare.com/api/go/resources/pages#%28resource%29%20pages.assets%20%3E%20%28model%29%20AssetUploadResponse%20%3E%20%28schema%29), error)

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 

body AssetUploadParams

Body param.Field\[\[\]AssetUploadParamsBody\]

Base64 bool

Whether value is base64 encoded.

Key string

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

Metadata AssetUploadParamsBodyMetadata

ContentType string

MIME type for the uploaded file.

Value string

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

##### ReturnsExpand Collapse 

type AssetUploadResponse struct{…}

Errors \[\]AssetUploadResponseError

Code int64

minimum1000

Message string

DocumentationURL stringOptional

Source AssetUploadResponseErrorsSourceOptional

Pointer stringOptional

Messages \[\]AssetUploadResponseMessage

Code int64

minimum1000

Message string

DocumentationURL stringOptional

Source AssetUploadResponseMessagesSourceOptional

Pointer stringOptional

Success AssetUploadResponseSuccess

Whether the API call was successful.

### Upload asset

Go

HTTPHTTP

TypeScriptTypeScript

PythonPython

GoGo

TerraformTerraform

```
package main

import (
  "context"
  "fmt"

  "github.com/cloudflare/cloudflare-go"
  "github.com/cloudflare/cloudflare-go/pages"
)

func main() {
  client := cloudflare.NewClient(

  )
  response, err := client.Pages.Assets.Upload(context.TODO(), pages.AssetUploadParams{
    Body: []pages.AssetUploadParamsBody{pages.AssetUploadParamsBody{
      Base64: cloudflare.F(true),
      Key: cloudflare.F("b026324c6904b2a9cb4b88d6d61c81d1"),
      Metadata: cloudflare.F(pages.AssetUploadParamsBodyMetadata{
        ContentType: cloudflare.F("text/plain"),
      }),
      Value: cloudflare.F("SGVsbG8sIFdvcmxkIQ=="),
    }},
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", 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
}
```