Skip to content
Start here

Create Worker Deployment

client.Workers.Scripts.Deployments.New(ctx, scriptName, params) (*Deployment, error)
POST/accounts/{account_id}/workers/scripts/{script_name}/deployments

Deployments configure how Worker Versions are deployed to traffic. A deployment can consist of multiple versions of a Worker.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Accepted Permissions (at least one required)
Workers Scripts WriteWorkers AdminWorkers EditorIndividual Workers AdminIndividual Workers Editor
ParametersExpand Collapse
scriptName string

Name of the script.

params ScriptDeploymentNewParams
AccountID param.Field[string]

Path param: Identifier.

maxLength32
Deployment param.Field[Deployment]

Body param

Force param.Field[bool]Optional

Query param: If set to true, the deployment will be created even if normally blocked by something such rolling back to an older version when a secret has changed.

ReturnsExpand Collapse
type Deployment struct{…}
ID string
formatuuid
CreatedOn Time
formatdate-time
Source string
Strategy DeploymentStrategy

Strategy for routing traffic across the listed versions. percentage splits traffic according to each version’s percentage.

Versions []DeploymentVersion

Worker versions included in this deployment. Each object must contain a version_id UUID and a percentage; percentages across all objects must total 100. In the cf CLI, pass the entire array as one JSON value to --versions, either inline, for example --versions '[{"version_id":"023e105f-2a42-4f8b-a1c1-73f6a2a30c0f","percentage":100}]', or from a JSON file with --versions @versions.json.

Percentage float64

Percentage of traffic served by this version.

maximum100
minimum0.01
VersionID string

Identifier of the Worker Version.

formatuuid
Annotations DeploymentAnnotationsOptional

Metadata attached to the deployment.

WorkersMessage stringOptional

Human-readable message about the deployment. Truncated to 1000 bytes if longer.

maxLength1000
WorkersTriggeredBy stringOptional

Operation that triggered the creation of the deployment.

AuthorEmail stringOptional
formatemail
CodeUpdateStrategy DeploymentCodeUpdateStrategyOptional

Choose whether to apply Durable Object code updates immediately or defer them. When omitted, the default strategy applies.

One of the following:
type DeploymentCodeUpdateStrategyMode struct{…}
Mode DeploymentCodeUpdateStrategyModeMode

Apply Durable Object code updates immediately.

type DeploymentCodeUpdateStrategyObject struct{…}
Mode DeploymentCodeUpdateStrategyObjectMode

Allow active Durable Objects to hibernate before updating their code.

MaxDelay float64Optional

Set the maximum number of seconds to wait before forcing the update. When omitted, the default maximum delay applies.

maximum86400
minimum0
multipleOf0.001

Create Worker Deployment

package main

import (
  "context"
  "fmt"

  "github.com/cloudflare/cloudflare-go"
  "github.com/cloudflare/cloudflare-go/option"
  "github.com/cloudflare/cloudflare-go/workers"
)

func main() {
  client := cloudflare.NewClient(
    option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"),
  )
  deployment, err := client.Workers.Scripts.Deployments.New(
    context.TODO(),
    "this-is_my_script-01",
    workers.ScriptDeploymentNewParams{
      AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
      Deployment: workers.DeploymentParam{
        Strategy: cloudflare.F(workers.DeploymentStrategyPercentage),
        Versions: cloudflare.F([]workers.DeploymentVersionParam{workers.DeploymentVersionParam{
          Percentage: cloudflare.F(100.000000),
          VersionID: cloudflare.F("023e105f-2a42-4f8b-a1c1-73f6a2a30c0f"),
        }}),
      },
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", deployment.ID)
}
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "result": {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "created_on": "2019-12-27T18:11:19.117Z",
    "source": "api",
    "strategy": "percentage",
    "versions": [
      {
        "percentage": 100,
        "version_id": "023e105f-2a42-4f8b-a1c1-73f6a2a30c0f"
      }
    ],
    "annotations": {
      "workers/message": "Deploy bug fix.",
      "workers/triggered_by": "deployment"
    },
    "author_email": "dev@stainless.com"
  },
  "success": true
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "result": {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "created_on": "2019-12-27T18:11:19.117Z",
    "source": "api",
    "strategy": "percentage",
    "versions": [
      {
        "percentage": 100,
        "version_id": "023e105f-2a42-4f8b-a1c1-73f6a2a30c0f"
      }
    ],
    "annotations": {
      "workers/message": "Deploy bug fix.",
      "workers/triggered_by": "deployment"
    },
    "author_email": "dev@stainless.com"
  },
  "success": true
}