Skip to content
Start here

Create Version

POST/accounts/{account_id}/workers/workers/{worker_id}/versions

Create a new version.

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 Write
Path ParametersExpand Collapse
account_id: string

Identifier.

maxLength32
worker_id: string

Identifier for the Worker, which can be ID or name.

Query ParametersExpand Collapse
deploy: optional boolean

If true, a deployment will be created that sends 100% of traffic to the new version.

Body ParametersJSONExpand Collapse
annotations: optional object { "workers/message", "workers/tag", "workers/triggered_by" }

Metadata about the version.

"workers/message": optional string

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

maxLength1000
"workers/tag": optional string

User-provided identifier for the version. Maximum 100 bytes.

maxLength100
"workers/triggered_by": optional string

Operation that triggered the creation of the version.

assets: optional object { config, jwt }

Configuration for assets within a Worker.

_headers and _redirects files should be included as modules named _headers and _redirects with content type text/plain.

config: optional object { html_handling, not_found_handling, run_worker_first }

Configuration for assets within a Worker.

html_handling: optional "auto-trailing-slash" or "force-trailing-slash" or "drop-trailing-slash" or "none"

Determines the redirects and rewrites of requests for HTML content.

One of the following:
"auto-trailing-slash"
"force-trailing-slash"
"drop-trailing-slash"
"none"
not_found_handling: optional "none" or "404-page" or "single-page-application"

Determines the response when a request does not match a static asset, and there is no Worker script.

One of the following:
"none"
"404-page"
"single-page-application"
run_worker_first: optional array of string or boolean

Contains a list path rules to control routing to either the Worker or assets. Glob (*) and negative (!) rules are supported. Rules must start with either ’/’ or ’!/’. At least one non-negative rule must be provided, and negative rules have higher precedence than non-negative rules.

One of the following:
array of string

Contains a list path rules to control routing to either the Worker or assets. Glob (*) and negative (!) rules are supported. Rules must start with either ’/’ or ’!/’. At least one non-negative rule must be provided, and negative rules have higher precedence than non-negative rules.

boolean

Enables routing to always invoke the Worker script ahead of all requests. When true, this is equivalent to ["/*"] in the string array version of this field.

jwt: optional string

Token provided upon successful upload of all files from a registered manifest.

bindings: optional array of object { name, type } or object { instance_name, name, type, namespace } or object { name, namespace, type } or 32 more

List of bindings attached to a Worker. You can find more about bindings on our docs: https://developers.cloudflare.com/workers/configuration/multipart-upload-metadata/#bindings.

One of the following:
AI object { name, type }
name: string

A JavaScript variable name for the binding.

type: "ai"

The kind of resource that the binding provides.

AISearch object { instance_name, name, type, namespace }
instance_name: string

The user-chosen instance name. Must exist at deploy time. The worker can search, chat, update, and manage items/jobs on this instance.

name: string

A JavaScript variable name for the binding.

type: "ai_search"

The kind of resource that the binding provides.

namespace: optional string

The namespace the instance belongs to. Defaults to “default” if omitted. Customers who don’t use namespaces can simply omit this field.

AISearchNamespace object { name, namespace, type }
name: string

A JavaScript variable name for the binding.

namespace: string

The user-chosen namespace name. Must exist before deploy — Wrangler handles auto-creation on deploy failure (R2 bucket pattern). The “default” namespace is auto-created by config-api for new accounts. Grants full access (CRUD + search + chat) to all instances within the namespace.

type: "ai_search_namespace"

The kind of resource that the binding provides.

AnalyticsEngine object { dataset, name, type }
dataset: string

The name of the dataset to bind to.

name: string

A JavaScript variable name for the binding.

type: "analytics_engine"

The kind of resource that the binding provides.

Assets object { name, type }
name: string

A JavaScript variable name for the binding.

type: "assets"

The kind of resource that the binding provides.

Browser object { name, type }
name: string

A JavaScript variable name for the binding.

type: "browser"

The kind of resource that the binding provides.

D1 object { database_id, name, type, id }
database_id: string

Identifier of the D1 database to bind to.

name: string

A JavaScript variable name for the binding.

type: "d1"

The kind of resource that the binding provides.

Deprecatedid: optional string
This property has been renamed to `database_id`.

Identifier of the D1 database to bind to.

DataBlob object { name, part, type }
name: string

A JavaScript variable name for the binding.

part: string

The name of the file containing the data content. Only accepted for service worker syntax Workers.

Deprecatedtype: "data_blob"

The kind of resource that the binding provides.

DispatchNamespace object { name, namespace, type, outbound }
name: string

A JavaScript variable name for the binding.

namespace: string

The name of the dispatch namespace.

type: "dispatch_namespace"

The kind of resource that the binding provides.

outbound: optional object { params, worker }

Outbound worker.

params: optional array of object { name }

Pass information from the Dispatch Worker to the Outbound Worker through the parameters.

name: string

Name of the parameter.

worker: optional object { entrypoint, environment, service }

Outbound worker.

entrypoint: optional string

Entrypoint to invoke on the outbound worker.

environment: optional string

Environment of the outbound worker.

service: optional string

Name of the outbound worker.

DurableObjectNamespace object { name, type, class_name, 4 more }
name: string

A JavaScript variable name for the binding.

type: "durable_object_namespace"

The kind of resource that the binding provides.

class_name: optional string

The exported class name of the Durable Object.

dispatch_namespace: optional string

The dispatch namespace the Durable Object script belongs to.

environment: optional string

The environment of the script_name to bind to.

namespace_id: optional string

Namespace identifier tag.

maxLength32
script_name: optional string

The script where the Durable Object is defined, if it is external to this Worker.

Hyperdrive object { id, name, type }
id: string

Identifier of the Hyperdrive connection to bind to.

name: string

A JavaScript variable name for the binding.

type: "hyperdrive"

The kind of resource that the binding provides.

Inherit object { name, type, old_name, version_id }
name: string

The name of the inherited binding.

type: "inherit"

The kind of resource that the binding provides.

old_name: optional string

The old name of the inherited binding. If set, the binding will be renamed from old_name to name in the new version. If not set, the binding will keep the same name between versions.

version_id: optional string

Identifier for the version to inherit the binding from, which can be the version ID or the literal “latest” to inherit from the latest version. Defaults to inheriting the binding from the latest version.

Images object { name, type }
name: string

A JavaScript variable name for the binding.

type: "images"

The kind of resource that the binding provides.

Json object { json, name, type }
json: unknown

JSON data to use.

name: string

A JavaScript variable name for the binding.

type: "json"

The kind of resource that the binding provides.

KVNamespace object { name, namespace_id, type }
name: string

A JavaScript variable name for the binding.

namespace_id: string

Namespace identifier tag.

maxLength32
type: "kv_namespace"

The kind of resource that the binding provides.

Media object { name, type }
name: string

A JavaScript variable name for the binding.

type: "media"

The kind of resource that the binding provides.

MTLSCertificate object { certificate_id, name, type }
certificate_id: string

Identifier of the certificate to bind to.

name: string

A JavaScript variable name for the binding.

type: "mtls_certificate"

The kind of resource that the binding provides.

PlainText object { name, text, type }
name: string

A JavaScript variable name for the binding.

text: string

The text value to use.

type: "plain_text"

The kind of resource that the binding provides.

Pipelines object { name, pipeline, type }
name: string

A JavaScript variable name for the binding.

pipeline: string

Name of the Pipeline to bind to.

type: "pipelines"

The kind of resource that the binding provides.

Queue object { name, queue_name, type }
name: string

A JavaScript variable name for the binding.

queue_name: string

Name of the Queue to bind to.

type: "queue"

The kind of resource that the binding provides.

Ratelimit object { name, namespace_id, simple, type }
name: string

A JavaScript variable name for the binding.

namespace_id: string

Identifier of the rate limit namespace to bind to.

simple: object { limit, period, mitigation_timeout }

The rate limit configuration.

limit: number

The limit (requests per period).

period: number

The period in seconds.

mitigation_timeout: optional number

Duration in seconds to apply the mitigation action after the rate limit is exceeded. Valid values are 0 (disabled), 10, or multiples of 60 up to 86400. Must be greater than or equal to the period when non-zero.

type: "ratelimit"

The kind of resource that the binding provides.

R2Bucket object { bucket_name, name, type, jurisdiction }
bucket_name: string

R2 bucket to bind to.

name: string

A JavaScript variable name for the binding.

type: "r2_bucket"

The kind of resource that the binding provides.

jurisdiction: optional "eu" or "fedramp" or "fedramp-high"

The jurisdiction of the R2 bucket.

One of the following:
"eu"
"fedramp"
"fedramp-high"
SecretText object { name, text, type }
name: string

A JavaScript variable name for the binding.

text: string

The secret value to use.

type: "secret_text"

The kind of resource that the binding provides.

SendEmail object { name, type, allowed_destination_addresses, 2 more }
name: string

A JavaScript variable name for the binding.

type: "send_email"

The kind of resource that the binding provides.

allowed_destination_addresses: optional array of string

List of allowed destination addresses.

allowed_sender_addresses: optional array of string

List of allowed sender addresses.

destination_address: optional string

Destination address for the email.

formatemail
Service object { name, service, type, 2 more }
name: string

A JavaScript variable name for the binding.

service: string

Name of Worker to bind to.

type: "service"

The kind of resource that the binding provides.

entrypoint: optional string

Entrypoint to invoke on the target Worker.

environment: optional string

Optional environment if the Worker utilizes one.

TextBlob object { name, part, type }
name: string

A JavaScript variable name for the binding.

part: string

The name of the file containing the text content. Only accepted for service worker syntax Workers.

Deprecatedtype: "text_blob"

The kind of resource that the binding provides.

Vectorize object { index_name, name, type }
index_name: string

Name of the Vectorize index to bind to.

name: string

A JavaScript variable name for the binding.

type: "vectorize"

The kind of resource that the binding provides.

VersionMetadata object { name, type }
name: string

A JavaScript variable name for the binding.

type: "version_metadata"

The kind of resource that the binding provides.

SecretsStoreSecret object { name, secret_name, store_id, type }
name: string

A JavaScript variable name for the binding.

secret_name: string

Name of the secret in the store.

store_id: string

ID of the store containing the secret.

type: "secrets_store_secret"

The kind of resource that the binding provides.

Flagship object { app_id, name, type }
app_id: string

ID of the Flagship app to bind to for feature flag evaluation.

maxLength128
name: string

A JavaScript variable name for the binding.

type: "flagship"

The kind of resource that the binding provides.

SecretKey object { algorithm, format, name, 4 more }
algorithm: unknown

Algorithm-specific key parameters. Learn more.

format: "raw" or "pkcs8" or "spki" or "jwk"

Data format of the key. Learn more.

One of the following:
"raw"
"pkcs8"
"spki"
"jwk"
name: string

A JavaScript variable name for the binding.

type: "secret_key"

The kind of resource that the binding provides.

usages: array of "encrypt" or "decrypt" or "sign" or 5 more

Allowed operations with the key. Learn more.

One of the following:
"encrypt"
"decrypt"
"sign"
"verify"
"deriveKey"
"deriveBits"
"wrapKey"
"unwrapKey"
key_base64: optional string

Base64-encoded key data. Required if format is “raw”, “pkcs8”, or “spki”.

key_jwk: optional unknown

Key data in JSON Web Key format. Required if format is “jwk”.

Workflow object { name, type, workflow_name, 2 more }
name: string

A JavaScript variable name for the binding.

type: "workflow"

The kind of resource that the binding provides.

workflow_name: string

Name of the Workflow to bind to.

class_name: optional string

Class name of the Workflow. Should only be provided if the Workflow belongs to this script.

script_name: optional string

Script name that contains the Workflow. If not provided, defaults to this script name.

WasmModule object { name, part, type }
name: string

A JavaScript variable name for the binding.

part: string

The name of the file containing the WebAssembly module content. Only accepted for service worker syntax Workers.

Deprecatedtype: "wasm_module"

The kind of resource that the binding provides.

VPCService object { name, service_id, type }
name: string

A JavaScript variable name for the binding.

service_id: string

Identifier of the VPC service to bind to.

type: "vpc_service"

The kind of resource that the binding provides.

VPCNetwork object { name, type, network_id, tunnel_id }
name: string

A JavaScript variable name for the binding.

type: "vpc_network"

The kind of resource that the binding provides.

network_id: optional string

Identifier of the network to bind to. Only “cf1:network” is currently supported. Mutually exclusive with tunnel_id.

tunnel_id: optional string

UUID of the Cloudflare Tunnel to bind to. Mutually exclusive with network_id.

compatibility_date: optional string

Date indicating targeted support in the Workers runtime. Backwards incompatible fixes to the runtime following this date will not affect this Worker.

compatibility_flags: optional array of string

Flags that enable or disable certain features in the Workers runtime. Used to enable upcoming features or opt in or out of specific changes not included in a compatibility_date.

containers: optional array of object { class_name }

List of containers attached to a Worker. Containers can only be attached to Durable Object classes of this Worker script.

class_name: string

Select which Durable Object class should get this container attached.

limits: optional object { cpu_ms, subrequests }

Resource limits enforced at runtime.

cpu_ms: optional number

CPU time limit in milliseconds.

subrequests: optional number

Subrequest limit per request.

main_module: optional string

The name of the main module in the modules array (e.g. the name of the module that exports a fetch handler).

migrations: optional SingleStepMigration { deleted_classes, new_classes, new_sqlite_classes, 4 more } or object { new_tag, old_tag, steps }

Migrations for Durable Objects associated with the version. Migrations are applied when the version is deployed.

One of the following:
SingleStepMigration object { deleted_classes, new_classes, new_sqlite_classes, 4 more }

A single set of migrations to apply.

deleted_classes: optional array of string

A list of classes to delete Durable Object namespaces from.

new_classes: optional array of string

A list of classes to create Durable Object namespaces from.

new_sqlite_classes: optional array of string

A list of classes to create Durable Object namespaces with SQLite from.

new_tag: optional string

Tag to set as the latest migration tag.

old_tag: optional string

Tag used to verify against the latest migration tag for this Worker. If they don’t match, the upload is rejected.

renamed_classes: optional array of object { from, to }

A list of classes with Durable Object namespaces that were renamed.

from: optional string
to: optional string
transferred_classes: optional array of object { from, from_script, to }

A list of transfers for Durable Object namespaces from a different Worker and class to a class defined in this Worker.

from: optional string
from_script: optional string
to: optional string
WorkersMultipleStepMigrations object { new_tag, old_tag, steps }
new_tag: optional string

Tag to set as the latest migration tag.

old_tag: optional string

Tag used to verify against the latest migration tag for this Worker. If they don’t match, the upload is rejected.

steps: optional array of MigrationStep { deleted_classes, new_classes, new_sqlite_classes, 2 more }

Migrations to apply in order.

deleted_classes: optional array of string

A list of classes to delete Durable Object namespaces from.

new_classes: optional array of string

A list of classes to create Durable Object namespaces from.

new_sqlite_classes: optional array of string

A list of classes to create Durable Object namespaces with SQLite from.

renamed_classes: optional array of object { from, to }

A list of classes with Durable Object namespaces that were renamed.

from: optional string
to: optional string
transferred_classes: optional array of object { from, from_script, to }

A list of transfers for Durable Object namespaces from a different Worker and class to a class defined in this Worker.

from: optional string
from_script: optional string
to: optional string
modules: optional array of object { content_base64, content_type, name }

Code, sourcemaps, and other content used at runtime.

This includes _headers and _redirects files used to configure Static Assets. _headers and _redirects files should be included as modules named _headers and _redirects with content type text/plain.

content_base64: string

The base64-encoded module content.

formatbyte
content_type: string

The content type of the module.

name: string

The name of the module.

placement: optional object { mode } or object { region } or object { hostname } or 5 more

Configuration for Smart Placement. Specify mode=‘smart’ for Smart Placement, or one of region/hostname/host.

One of the following:
Mode object { mode }
mode: "smart"
Region object { region }
region: string

Cloud region for targeted placement in format ‘provider:region’.

Hostname object { hostname }
hostname: string

HTTP hostname for targeted placement.

Host object { host }
host: string

TCP host and port for targeted placement.

object { mode, region }
mode: "targeted"

Targeted placement mode.

region: string

Cloud region for targeted placement in format ‘provider:region’.

object { hostname, mode }
hostname: string

HTTP hostname for targeted placement.

mode: "targeted"

Targeted placement mode.

object { host, mode }
host: string

TCP host and port for targeted placement.

mode: "targeted"

Targeted placement mode.

object { mode, target }
mode: "targeted"

Targeted placement mode.

target: array of object { region } or object { hostname } or object { host }

Array of placement targets (currently limited to single target).

One of the following:
Region object { region }
region: string

Cloud region in format ‘provider:region’.

Hostname object { hostname }
hostname: string

HTTP hostname for targeted placement.

Host object { host }
host: string

TCP host:port for targeted placement.

Deprecatedusage_model: optional "standard" or "bundled" or "unbound"

Usage model for the version.

One of the following:
"standard"
"bundled"
"unbound"
ReturnsExpand Collapse
errors: array of object { code, message, documentation_url, source }
code: number
minimum1000
message: string
documentation_url: optional string
source: optional object { pointer }
pointer: optional string
messages: array of object { code, message, documentation_url, source }
code: number
minimum1000
message: string
documentation_url: optional string
source: optional object { pointer }
pointer: optional string
result: Version { id, created_on, number, 16 more }
id: string

Version identifier.

formatuuid
created_on: string

When the version was created.

formatdate-time
number: number

The integer version number, starting from one.

urls: array of string

All routable URLs that always point to this version. Does not include alias URLs, since aliases can be updated to point to a different version.

annotations: optional object { "workers/message", "workers/tag", "workers/triggered_by" }

Metadata about the version.

"workers/message": optional string

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

maxLength1000
"workers/tag": optional string

User-provided identifier for the version. Maximum 100 bytes.

maxLength100
"workers/triggered_by": optional string

Operation that triggered the creation of the version.

assets: optional object { config, jwt }

Configuration for assets within a Worker.

_headers and _redirects files should be included as modules named _headers and _redirects with content type text/plain.

config: optional object { html_handling, not_found_handling, run_worker_first }

Configuration for assets within a Worker.

html_handling: optional "auto-trailing-slash" or "force-trailing-slash" or "drop-trailing-slash" or "none"

Determines the redirects and rewrites of requests for HTML content.

One of the following:
"auto-trailing-slash"
"force-trailing-slash"
"drop-trailing-slash"
"none"
not_found_handling: optional "none" or "404-page" or "single-page-application"

Determines the response when a request does not match a static asset, and there is no Worker script.

One of the following:
"none"
"404-page"
"single-page-application"
run_worker_first: optional array of string or boolean

Contains a list path rules to control routing to either the Worker or assets. Glob (*) and negative (!) rules are supported. Rules must start with either ’/’ or ’!/’. At least one non-negative rule must be provided, and negative rules have higher precedence than non-negative rules.

One of the following:
array of string

Contains a list path rules to control routing to either the Worker or assets. Glob (*) and negative (!) rules are supported. Rules must start with either ’/’ or ’!/’. At least one non-negative rule must be provided, and negative rules have higher precedence than non-negative rules.

boolean

Enables routing to always invoke the Worker script ahead of all requests. When true, this is equivalent to ["/*"] in the string array version of this field.

jwt: optional string

Token provided upon successful upload of all files from a registered manifest.

bindings: optional array of object { name, type } or object { instance_name, name, type, namespace } or object { name, namespace, type } or 32 more

List of bindings attached to a Worker. You can find more about bindings on our docs: https://developers.cloudflare.com/workers/configuration/multipart-upload-metadata/#bindings.

One of the following:
AI object { name, type }
name: string

A JavaScript variable name for the binding.

type: "ai"

The kind of resource that the binding provides.

AISearch object { instance_name, name, type, namespace }
instance_name: string

The user-chosen instance name. Must exist at deploy time. The worker can search, chat, update, and manage items/jobs on this instance.

name: string

A JavaScript variable name for the binding.

type: "ai_search"

The kind of resource that the binding provides.

namespace: optional string

The namespace the instance belongs to. Defaults to “default” if omitted. Customers who don’t use namespaces can simply omit this field.

AISearchNamespace object { name, namespace, type }
name: string

A JavaScript variable name for the binding.

namespace: string

The user-chosen namespace name. Must exist before deploy — Wrangler handles auto-creation on deploy failure (R2 bucket pattern). The “default” namespace is auto-created by config-api for new accounts. Grants full access (CRUD + search + chat) to all instances within the namespace.

type: "ai_search_namespace"

The kind of resource that the binding provides.

AnalyticsEngine object { dataset, name, type }
dataset: string

The name of the dataset to bind to.

name: string

A JavaScript variable name for the binding.

type: "analytics_engine"

The kind of resource that the binding provides.

Assets object { name, type }
name: string

A JavaScript variable name for the binding.

type: "assets"

The kind of resource that the binding provides.

Browser object { name, type }
name: string

A JavaScript variable name for the binding.

type: "browser"

The kind of resource that the binding provides.

D1 object { database_id, name, type, id }
database_id: string

Identifier of the D1 database to bind to.

name: string

A JavaScript variable name for the binding.

type: "d1"

The kind of resource that the binding provides.

Deprecatedid: optional string
This property has been renamed to `database_id`.

Identifier of the D1 database to bind to.

DataBlob object { name, part, type }
name: string

A JavaScript variable name for the binding.

part: string

The name of the file containing the data content. Only accepted for service worker syntax Workers.

Deprecatedtype: "data_blob"

The kind of resource that the binding provides.

DispatchNamespace object { name, namespace, type, outbound }
name: string

A JavaScript variable name for the binding.

namespace: string

The name of the dispatch namespace.

type: "dispatch_namespace"

The kind of resource that the binding provides.

outbound: optional object { params, worker }

Outbound worker.

params: optional array of object { name }

Pass information from the Dispatch Worker to the Outbound Worker through the parameters.

name: string

Name of the parameter.

worker: optional object { entrypoint, environment, service }

Outbound worker.

entrypoint: optional string

Entrypoint to invoke on the outbound worker.

environment: optional string

Environment of the outbound worker.

service: optional string

Name of the outbound worker.

DurableObjectNamespace object { name, type, class_name, 4 more }
name: string

A JavaScript variable name for the binding.

type: "durable_object_namespace"

The kind of resource that the binding provides.

class_name: optional string

The exported class name of the Durable Object.

dispatch_namespace: optional string

The dispatch namespace the Durable Object script belongs to.

environment: optional string

The environment of the script_name to bind to.

namespace_id: optional string

Namespace identifier tag.

maxLength32
script_name: optional string

The script where the Durable Object is defined, if it is external to this Worker.

Hyperdrive object { id, name, type }
id: string

Identifier of the Hyperdrive connection to bind to.

name: string

A JavaScript variable name for the binding.

type: "hyperdrive"

The kind of resource that the binding provides.

Inherit object { name, type, old_name, version_id }
name: string

The name of the inherited binding.

type: "inherit"

The kind of resource that the binding provides.

old_name: optional string

The old name of the inherited binding. If set, the binding will be renamed from old_name to name in the new version. If not set, the binding will keep the same name between versions.

version_id: optional string

Identifier for the version to inherit the binding from, which can be the version ID or the literal “latest” to inherit from the latest version. Defaults to inheriting the binding from the latest version.

Images object { name, type }
name: string

A JavaScript variable name for the binding.

type: "images"

The kind of resource that the binding provides.

Json object { json, name, type }
json: unknown

JSON data to use.

name: string

A JavaScript variable name for the binding.

type: "json"

The kind of resource that the binding provides.

KVNamespace object { name, namespace_id, type }
name: string

A JavaScript variable name for the binding.

namespace_id: string

Namespace identifier tag.

maxLength32
type: "kv_namespace"

The kind of resource that the binding provides.

Media object { name, type }
name: string

A JavaScript variable name for the binding.

type: "media"

The kind of resource that the binding provides.

MTLSCertificate object { certificate_id, name, type }
certificate_id: string

Identifier of the certificate to bind to.

name: string

A JavaScript variable name for the binding.

type: "mtls_certificate"

The kind of resource that the binding provides.

PlainText object { name, text, type }
name: string

A JavaScript variable name for the binding.

text: string

The text value to use.

type: "plain_text"

The kind of resource that the binding provides.

Pipelines object { name, pipeline, type }
name: string

A JavaScript variable name for the binding.

pipeline: string

Name of the Pipeline to bind to.

type: "pipelines"

The kind of resource that the binding provides.

Queue object { name, queue_name, type }
name: string

A JavaScript variable name for the binding.

queue_name: string

Name of the Queue to bind to.

type: "queue"

The kind of resource that the binding provides.

Ratelimit object { name, namespace_id, simple, type }
name: string

A JavaScript variable name for the binding.

namespace_id: string

Identifier of the rate limit namespace to bind to.

simple: object { limit, period, mitigation_timeout }

The rate limit configuration.

limit: number

The limit (requests per period).

period: number

The period in seconds.

mitigation_timeout: optional number

Duration in seconds to apply the mitigation action after the rate limit is exceeded. Valid values are 0 (disabled), 10, or multiples of 60 up to 86400. Must be greater than or equal to the period when non-zero.

type: "ratelimit"

The kind of resource that the binding provides.

R2Bucket object { bucket_name, name, type, jurisdiction }
bucket_name: string

R2 bucket to bind to.

name: string

A JavaScript variable name for the binding.

type: "r2_bucket"

The kind of resource that the binding provides.

jurisdiction: optional "eu" or "fedramp" or "fedramp-high"

The jurisdiction of the R2 bucket.

One of the following:
"eu"
"fedramp"
"fedramp-high"
SecretText object { name, text, type }
name: string

A JavaScript variable name for the binding.

text: string

The secret value to use.

type: "secret_text"

The kind of resource that the binding provides.

SendEmail object { name, type, allowed_destination_addresses, 2 more }
name: string

A JavaScript variable name for the binding.

type: "send_email"

The kind of resource that the binding provides.

allowed_destination_addresses: optional array of string

List of allowed destination addresses.

allowed_sender_addresses: optional array of string

List of allowed sender addresses.

destination_address: optional string

Destination address for the email.

formatemail
Service object { name, service, type, 2 more }
name: string

A JavaScript variable name for the binding.

service: string

Name of Worker to bind to.

type: "service"

The kind of resource that the binding provides.

entrypoint: optional string

Entrypoint to invoke on the target Worker.

environment: optional string

Optional environment if the Worker utilizes one.

TextBlob object { name, part, type }
name: string

A JavaScript variable name for the binding.

part: string

The name of the file containing the text content. Only accepted for service worker syntax Workers.

Deprecatedtype: "text_blob"

The kind of resource that the binding provides.

Vectorize object { index_name, name, type }
index_name: string

Name of the Vectorize index to bind to.

name: string

A JavaScript variable name for the binding.

type: "vectorize"

The kind of resource that the binding provides.

VersionMetadata object { name, type }
name: string

A JavaScript variable name for the binding.

type: "version_metadata"

The kind of resource that the binding provides.

SecretsStoreSecret object { name, secret_name, store_id, type }
name: string

A JavaScript variable name for the binding.

secret_name: string

Name of the secret in the store.

store_id: string

ID of the store containing the secret.

type: "secrets_store_secret"

The kind of resource that the binding provides.

Flagship object { app_id, name, type }
app_id: string

ID of the Flagship app to bind to for feature flag evaluation.

maxLength128
name: string

A JavaScript variable name for the binding.

type: "flagship"

The kind of resource that the binding provides.

SecretKey object { algorithm, format, name, 4 more }
algorithm: unknown

Algorithm-specific key parameters. Learn more.

format: "raw" or "pkcs8" or "spki" or "jwk"

Data format of the key. Learn more.

One of the following:
"raw"
"pkcs8"
"spki"
"jwk"
name: string

A JavaScript variable name for the binding.

type: "secret_key"

The kind of resource that the binding provides.

usages: array of "encrypt" or "decrypt" or "sign" or 5 more

Allowed operations with the key. Learn more.

One of the following:
"encrypt"
"decrypt"
"sign"
"verify"
"deriveKey"
"deriveBits"
"wrapKey"
"unwrapKey"
key_base64: optional string

Base64-encoded key data. Required if format is “raw”, “pkcs8”, or “spki”.

key_jwk: optional unknown

Key data in JSON Web Key format. Required if format is “jwk”.

Workflow object { name, type, workflow_name, 2 more }
name: string

A JavaScript variable name for the binding.

type: "workflow"

The kind of resource that the binding provides.

workflow_name: string

Name of the Workflow to bind to.

class_name: optional string

Class name of the Workflow. Should only be provided if the Workflow belongs to this script.

script_name: optional string

Script name that contains the Workflow. If not provided, defaults to this script name.

WasmModule object { name, part, type }
name: string

A JavaScript variable name for the binding.

part: string

The name of the file containing the WebAssembly module content. Only accepted for service worker syntax Workers.

Deprecatedtype: "wasm_module"

The kind of resource that the binding provides.

VPCService object { name, service_id, type }
name: string

A JavaScript variable name for the binding.

service_id: string

Identifier of the VPC service to bind to.

type: "vpc_service"

The kind of resource that the binding provides.

VPCNetwork object { name, type, network_id, tunnel_id }
name: string

A JavaScript variable name for the binding.

type: "vpc_network"

The kind of resource that the binding provides.

network_id: optional string

Identifier of the network to bind to. Only “cf1:network” is currently supported. Mutually exclusive with tunnel_id.

tunnel_id: optional string

UUID of the Cloudflare Tunnel to bind to. Mutually exclusive with network_id.

compatibility_date: optional string

Date indicating targeted support in the Workers runtime. Backwards incompatible fixes to the runtime following this date will not affect this Worker.

compatibility_flags: optional array of string

Flags that enable or disable certain features in the Workers runtime. Used to enable upcoming features or opt in or out of specific changes not included in a compatibility_date.

containers: optional array of object { class_name }

List of containers attached to a Worker. Containers can only be attached to Durable Object classes of this Worker script.

class_name: string

Select which Durable Object class should get this container attached.

limits: optional object { cpu_ms, subrequests }

Resource limits enforced at runtime.

cpu_ms: optional number

CPU time limit in milliseconds.

subrequests: optional number

Subrequest limit per request.

main_module: optional string

The name of the main module in the modules array (e.g. the name of the module that exports a fetch handler).

migration_tag: optional string

Durable Object migration tag. Set when the version is deployed. Omitted if the version has not been deployed or the Worker does not use Durable Objects.

migrations: optional SingleStepMigration { deleted_classes, new_classes, new_sqlite_classes, 4 more } or object { new_tag, old_tag, steps }

Migrations for Durable Objects associated with the version. Migrations are applied when the version is deployed.

One of the following:
SingleStepMigration object { deleted_classes, new_classes, new_sqlite_classes, 4 more }

A single set of migrations to apply.

deleted_classes: optional array of string

A list of classes to delete Durable Object namespaces from.

new_classes: optional array of string

A list of classes to create Durable Object namespaces from.

new_sqlite_classes: optional array of string

A list of classes to create Durable Object namespaces with SQLite from.

new_tag: optional string

Tag to set as the latest migration tag.

old_tag: optional string

Tag used to verify against the latest migration tag for this Worker. If they don’t match, the upload is rejected.

renamed_classes: optional array of object { from, to }

A list of classes with Durable Object namespaces that were renamed.

from: optional string
to: optional string
transferred_classes: optional array of object { from, from_script, to }

A list of transfers for Durable Object namespaces from a different Worker and class to a class defined in this Worker.

from: optional string
from_script: optional string
to: optional string
WorkersMultipleStepMigrations object { new_tag, old_tag, steps }
new_tag: optional string

Tag to set as the latest migration tag.

old_tag: optional string

Tag used to verify against the latest migration tag for this Worker. If they don’t match, the upload is rejected.

steps: optional array of MigrationStep { deleted_classes, new_classes, new_sqlite_classes, 2 more }

Migrations to apply in order.

deleted_classes: optional array of string

A list of classes to delete Durable Object namespaces from.

new_classes: optional array of string

A list of classes to create Durable Object namespaces from.

new_sqlite_classes: optional array of string

A list of classes to create Durable Object namespaces with SQLite from.

renamed_classes: optional array of object { from, to }

A list of classes with Durable Object namespaces that were renamed.

from: optional string
to: optional string
transferred_classes: optional array of object { from, from_script, to }

A list of transfers for Durable Object namespaces from a different Worker and class to a class defined in this Worker.

from: optional string
from_script: optional string
to: optional string
modules: optional array of object { content_base64, content_type, name }

Code, sourcemaps, and other content used at runtime.

This includes _headers and _redirects files used to configure Static Assets. _headers and _redirects files should be included as modules named _headers and _redirects with content type text/plain.

content_base64: string

The base64-encoded module content.

formatbyte
content_type: string

The content type of the module.

name: string

The name of the module.

placement: optional object { mode } or object { region } or object { hostname } or 5 more

Configuration for Smart Placement. Specify mode=‘smart’ for Smart Placement, or one of region/hostname/host.

One of the following:
Mode object { mode }
mode: "smart"
Region object { region }
region: string

Cloud region for targeted placement in format ‘provider:region’.

Hostname object { hostname }
hostname: string

HTTP hostname for targeted placement.

Host object { host }
host: string

TCP host and port for targeted placement.

object { mode, region }
mode: "targeted"

Targeted placement mode.

region: string

Cloud region for targeted placement in format ‘provider:region’.

object { hostname, mode }
hostname: string

HTTP hostname for targeted placement.

mode: "targeted"

Targeted placement mode.

object { host, mode }
host: string

TCP host and port for targeted placement.

mode: "targeted"

Targeted placement mode.

object { mode, target }
mode: "targeted"

Targeted placement mode.

target: array of object { region } or object { hostname } or object { host }

Array of placement targets (currently limited to single target).

One of the following:
Region object { region }
region: string

Cloud region in format ‘provider:region’.

Hostname object { hostname }
hostname: string

HTTP hostname for targeted placement.

Host object { host }
host: string

TCP host:port for targeted placement.

source: optional string

The client used to create the version.

startup_time_ms: optional number

Time in milliseconds spent on Worker startup.

Deprecatedusage_model: optional "standard" or "bundled" or "unbound"

Usage model for the version.

One of the following:
"standard"
"bundled"
"unbound"
success: true

Whether the API call was successful.

Create Version

curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/workers/workers/$WORKER_ID/versions \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    -d '{
          "bindings": [
            {
              "name": "MY_ENV_VAR",
              "text": "my_data",
              "type": "plain_text"
            }
          ],
          "compatibility_date": "2021-01-01",
          "compatibility_flags": [
            "nodejs_compat"
          ],
          "containers": [
            {
              "class_name": "MyDurableObject"
            }
          ],
          "main_module": "index.js",
          "usage_model": "standard"
        }'
{
  "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",
    "number": 0,
    "urls": [
      "https://9387e76d-my-worker.my-subdomain.workers.dev"
    ],
    "annotations": {
      "workers/message": "Fixed bug.",
      "workers/tag": "v1.0.1",
      "workers/triggered_by": "upload"
    },
    "assets": {
      "config": {
        "html_handling": "auto-trailing-slash",
        "not_found_handling": "404-page",
        "run_worker_first": true
      },
      "jwt": "jwt"
    },
    "bindings": [
      {
        "name": "MY_ENV_VAR",
        "text": "my_data",
        "type": "plain_text"
      }
    ],
    "compatibility_date": "2021-01-01",
    "compatibility_flags": [
      "nodejs_compat"
    ],
    "containers": [
      {
        "class_name": "MyDurableObject"
      }
    ],
    "limits": {
      "cpu_ms": 50,
      "subrequests": 1000
    },
    "main_module": "index.js",
    "migration_tag": "v1",
    "migrations": {},
    "modules": [
      {
        "content_base64": "ZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIGZldGNoKHJlcXVlc3QsIGVudiwgY3R4KSB7CiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKCdIZWxsbyBXb3JsZCEnKQogIH0KfQ==",
        "content_type": "application/javascript+module",
        "name": "index.js"
      }
    ],
    "placement": {
      "mode": "smart"
    },
    "source": "wrangler",
    "startup_time_ms": 10,
    "usage_model": "standard"
  },
  "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",
    "number": 0,
    "urls": [
      "https://9387e76d-my-worker.my-subdomain.workers.dev"
    ],
    "annotations": {
      "workers/message": "Fixed bug.",
      "workers/tag": "v1.0.1",
      "workers/triggered_by": "upload"
    },
    "assets": {
      "config": {
        "html_handling": "auto-trailing-slash",
        "not_found_handling": "404-page",
        "run_worker_first": true
      },
      "jwt": "jwt"
    },
    "bindings": [
      {
        "name": "MY_ENV_VAR",
        "text": "my_data",
        "type": "plain_text"
      }
    ],
    "compatibility_date": "2021-01-01",
    "compatibility_flags": [
      "nodejs_compat"
    ],
    "containers": [
      {
        "class_name": "MyDurableObject"
      }
    ],
    "limits": {
      "cpu_ms": 50,
      "subrequests": 1000
    },
    "main_module": "index.js",
    "migration_tag": "v1",
    "migrations": {},
    "modules": [
      {
        "content_base64": "ZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIGZldGNoKHJlcXVlc3QsIGVudiwgY3R4KSB7CiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKCdIZWxsbyBXb3JsZCEnKQogIH0KfQ==",
        "content_type": "application/javascript+module",
        "name": "index.js"
      }
    ],
    "placement": {
      "mode": "smart"
    },
    "source": "wrangler",
    "startup_time_ms": 10,
    "usage_model": "standard"
  },
  "success": true
}