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

[Skip to content](#%5Ftop) 

[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#%28resource%29%20workflows%20%3E%20%28model%29%20workflow%5Fupdate%5Fresponse%20%3E%20%28schema%29) { 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

API Token

The preferred authorization scheme for interacting with the Cloudflare API. [Create a token](https://developers.cloudflare.com/fundamentals/api/get-started/create-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`

##### ParametersExpand Collapse 

workflowName: string

maxLength64

minLength1

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

account\_id: string

Path param

class\_name: string

Body param

maxLength255

minLength1

script\_name: string

Body param

maxLength255

minLength1

concurrency?: [Concurrency](https://developers.cloudflare.com/api/typescript/resources/workflows/methods/update#%28resource%29%20workflows%20%3E%20%28method%29%20update%20%3E%20%28params%29%20default%20%3E%20%28param%29%20concurrency%20%3E%20%28schema%29)

Body param

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

default\_retention?: [DefaultRetention](https://developers.cloudflare.com/api/typescript/resources/workflows/methods/update#%28resource%29%20workflows%20%3E%20%28method%29%20update%20%3E%20%28params%29%20default%20%3E%20%28param%29%20default%5Fretention%20%3E%20%28schema%29)

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

error\_retention?: number | string

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

One of the following:

number

string

success\_retention?: number | string

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

One of the following:

number

string

limits?: [Limits](https://developers.cloudflare.com/api/typescript/resources/workflows/methods/update#%28resource%29%20workflows%20%3E%20%28method%29%20update%20%3E%20%28params%29%20default%20%3E%20%28param%29%20limits%20%3E%20%28schema%29)

Body param

steps?: number

maximum9007199254740991

minimum1

schedules?: Array<Schedule\>

Body param

cron: string

maxLength256

minLength1

##### ReturnsExpand Collapse 

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

id: string

formatuuid

class\_name: string

created\_on: string

formatdate-time

is\_deleted: number

modified\_on: string

formatdate-time

name: string

maxLength64

minLength1

script\_name: string

terminator\_running: number

triggered\_on: string | null

formatdate-time

version\_id: string

formatuuid

### Create/modify Workflow

TypeScript

HTTPHTTP

TypeScriptTypeScript

PythonPython

GoGo

TerraformTerraform

```
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
  }
}
```