# Assets # Upload ## Upload Assets `client.Workers.Assets.Upload.New(ctx, params) (*AssetUploadNewResponse, error)` **post** `/accounts/{account_id}/workers/assets/upload` Upload assets ahead of creating a Worker version. To learn more about the direct uploads of assets, see https://developers.cloudflare.com/workers/static-assets/direct-upload/. ### Parameters - `params AssetUploadNewParams` - `AccountID param.Field[string]` Path param: Identifier. - `Base64 param.Field[AssetUploadNewParamsBase64]` Query param: Whether the file contents are base64-encoded. Must be `true`. - `const AssetUploadNewParamsBase64True AssetUploadNewParamsBase64 = true` - `Body param.Field[map[string, string]]` Body param ### Returns - `type AssetUploadNewResponse struct{…}` - `JWT string` A "completion" JWT which can be redeemed when creating a Worker version. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/workers" ) func main() { client := cloudflare.NewClient( ) upload, err := client.Workers.Assets.Upload.New(context.TODO(), workers.AssetUploadNewParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), Base64: cloudflare.F(workers.AssetUploadNewParamsBase64True), Body: map[string]string{ "foo": "string", }, }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", upload.JWT) } ``` #### Response ```json { "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, "result": { "jwt": "jwt" } } ```