---
title: Create/modify Workflow
---

[Skip to content](#_top)

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

[Workflows](https://developers.cloudflare.com/api/typescript/resources/workflows)

Copy Markdown

Open in **Claude**Open in **ChatGPT**Open in **Cursor**

---

**Copy Markdown****View as Markdown**

# Create/modify Workflow

client.workflows.update(stringworkflowName, WorkflowUpdateParams {account\_id, class\_name, script\_name, 4 more } params, RequestOptionsoptions?): [WorkflowUpdateResponse](<https://developers.cloudflare.com/api/typescript/resources/workflows#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)>) {id, class\_name, created\_on, 7 more }

PUT/accounts/{account\_id}/workflows/{workflow\_name}

Creates a new workflow or updates an existing workflow definition.

##### Security

<details>

<summary>API Token</summary>



The preferred authorization scheme for interacting with the Cloudflare API. <a href="https://developers.cloudflare.com/fundamentals/api/get-started/create-token/">Create a token</a>.

**Example:**<code>Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY</code>

</details>

<details>

<summary>API Email + API Key</summary>



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

**Example:**<code>X-Auth-Email: user@example.com</code>

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

**Example:**<code>X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194</code>

</details>

##### Accepted Permissions (at least one required)

`Workers Scripts Write`

##### ParametersExpand Collapse

workflowName: string

maxLength64

minLength1

[Link to this property](<#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20workflow_name%20%3E%20(schema)>)

<details>

<summary>

params: WorkflowUpdateParams {account\_id, class\_name, script\_name, 4 more }

</summary>

account\_id: string

Path param

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20account_id">Link to this property</a>

class\_name: string

Body param

maxLength255

minLength1

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20class_name">Link to this property</a>

script\_name: string

Body param

maxLength255

minLength1

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20script_name">Link to this property</a>

<details>

<summary>

concurrency?: <a href="https://developers.cloudflare.com/api/typescript/resources/workflows/methods/update#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20concurrency%20%3E%20(schema)">Concurrency</a>

Body param

</summary>

limit?: number

Maximum number of instances of this workflow that can run concurrently. Additional instances are queued and started as running instances complete. Must not exceed the account concurrency limit.

maximum9007199254740991

minimum1

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20concurrency%20%3E%20(schema)%20%3E%20(property)%20limit">Link to this property</a>

</details>

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20concurrency">Link to this property</a>

<details>

<summary>

default\_retention?: <a href="https://developers.cloudflare.com/api/typescript/resources/workflows/methods/update#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20default_retention%20%3E%20(schema)">DefaultRetention</a>

Body param: Default retention applied to instances of this version when they do not set their own retention.

</summary>

<details>

<summary>

error\_retention?: number| string

Specifies the duration in milliseconds or as a string like ‘5 minutes’.

</summary>

One of the following:

number

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20default_retention%20%3E%20(schema)%20%3E%20(property)%20error_retention%20%3E%20(variant)%200">Link to this property</a>

string

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20default_retention%20%3E%20(schema)%20%3E%20(property)%20error_retention%20%3E%20(variant)%201">Link to this property</a>

</details>

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20default_retention%20%3E%20(schema)%20%3E%20(property)%20error_retention">Link to this property</a>

<details>

<summary>

success\_retention?: number| string

Specifies the duration in milliseconds or as a string like ‘5 minutes’.

</summary>

One of the following:

number

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20default_retention%20%3E%20(schema)%20%3E%20(property)%20success_retention%20%3E%20(variant)%200">Link to this property</a>

string

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20default_retention%20%3E%20(schema)%20%3E%20(property)%20success_retention%20%3E%20(variant)%201">Link to this property</a>

</details>

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20default_retention%20%3E%20(schema)%20%3E%20(property)%20success_retention">Link to this property</a>

</details>

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20default_retention">Link to this property</a>

<details>

<summary>

limits?: <a href="https://developers.cloudflare.com/api/typescript/resources/workflows/methods/update#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20limits%20%3E%20(schema)">Limits</a>

Body param

</summary>

steps?: number

maximum9007199254740991

minimum1

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20limits%20%3E%20(schema)%20%3E%20(property)%20steps">Link to this property</a>

</details>

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20limits">Link to this property</a>

<details>

<summary>

schedules?: Array&lt;Schedule&gt;

Body param

</summary>

cron: string

maxLength256

minLength1

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20schedules%20%3E%20(schema)%20%3E%20(items)%20%3E%20(property)%20cron">Link to this property</a>

</details>

<a href="#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default%20%3E%20(param)%20schedules">Link to this property</a>

</details>

[Link to this property](<#(resource)%20workflows%20%3E%20(method)%20update%20%3E%20(params)%20default>)

##### ReturnsExpand Collapse

<details>

<summary>

WorkflowUpdateResponse {id, class\_name, created\_on, 7 more }

</summary>

id: string

formatuuid

<a href="#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)%20%3E%20(property)%20id">Link to this property</a>

class\_name: string

<a href="#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)%20%3E%20(property)%20class_name">Link to this property</a>

created\_on: string

formatdate-time

<a href="#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)%20%3E%20(property)%20created_on">Link to this property</a>

is\_deleted: number

<a href="#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)%20%3E%20(property)%20is_deleted">Link to this property</a>

modified\_on: string

formatdate-time

<a href="#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)%20%3E%20(property)%20modified_on">Link to this property</a>

name: string

maxLength64

minLength1

<a href="#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)%20%3E%20(property)%20name">Link to this property</a>

script\_name: string

<a href="#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)%20%3E%20(property)%20script_name">Link to this property</a>

terminator\_running: number

<a href="#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)%20%3E%20(property)%20terminator_running">Link to this property</a>

triggered\_on: string| null

formatdate-time

<a href="#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)%20%3E%20(property)%20triggered_on">Link to this property</a>

version\_id: string

formatuuid

<a href="#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)%20%3E%20(property)%20version_id">Link to this property</a>

</details>

[Link to this property](<#(resource)%20workflows%20%3E%20(model)%20workflow_update_response%20%3E%20(schema)>)

### Create/modify Workflow

TypeScript

HTTPTypeScriptPythonGoTerraform

```
import Cloudflare from 'cloudflare';

const client = new Cloudflare({
  apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted
});

const workflow = await client.workflows.update('x', {
  account_id: 'account_id',
  class_name: 'x',
  script_name: 'x',
});

console.log(workflow.id);
```

200 example

```
{
  "errors": [],
  "messages": [
    {
      "code": 0,
      "message": "message"
    }
  ],
  "result": {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "class_name": "class_name",
    "created_on": "2019-12-27T18:11:19.117Z",
    "is_deleted": 0,
    "modified_on": "2019-12-27T18:11:19.117Z",
    "name": "x",
    "script_name": "script_name",
    "terminator_running": 0,
    "triggered_on": "2019-12-27T18:11:19.117Z",
    "version_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
  },
  "success": true,
  "result_info": {
    "count": 0,
    "per_page": 0,
    "total_count": 0,
    "cursor": "cursor",
    "page": 0,
    "total_pages": 0
  }
}
```

##### Returns Examples

200 example

```
{
  "errors": [],
  "messages": [
    {
      "code": 0,
      "message": "message"
    }
  ],
  "result": {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "class_name": "class_name",
    "created_on": "2019-12-27T18:11:19.117Z",
    "is_deleted": 0,
    "modified_on": "2019-12-27T18:11:19.117Z",
    "name": "x",
    "script_name": "script_name",
    "terminator_running": 0,
    "triggered_on": "2019-12-27T18:11:19.117Z",
    "version_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
  },
  "success": true,
  "result_info": {
    "count": 0,
    "per_page": 0,
    "total_count": 0,
    "cursor": "cursor",
    "page": 0,
    "total_pages": 0
  }
}
```