---
title: "Bulk create workflows"
method: POST
path: "/rest/api/3/workflows/create"
tags: ["Workflows"]
---

# Bulk create workflows

`POST /rest/api/3/workflows/create`

Create workflows and related statuses.

**[Permissions](#permissions) required:**

 *  *Administer Jira* project permission to create all, including global-scoped, workflows
 *  *Administer projects* project permissions to create project-scoped workflows

## Request body

- WorkflowCreateRequest — The create workflows payload.
  - `scope` WorkflowScope — The scope of the workflow.
    - `project` ProjectId, nullable — Project ID details.
      - `id` string, required — The ID of the project.
    - `type` 'PROJECT' | 'GLOBAL' — The scope of the workflow. `GLOBAL` for company-managed projects and `PROJECT` for team-managed projects.
  - `statuses` WorkflowStatusUpdate[] — The statuses to associate with the workflows.
    - `description` string — The description of the status.
    - `id` string — The ID of the status. When reusing an existing status, this field should be provided.
    - `name` string, required — The name of the status.
    - `statusCategory` 'TODO' | 'IN_PROGRESS' | 'DONE', required — The category of the status.
    - `statusReference` string, required — The reference of the status. If adding a new status to a team-managed workflow, this must be a UUID (for company-managed a UUID is not needed).
  - `workflows` WorkflowCreate[] — The details of the workflows to create.
    - `description` string — The description of the workflow to create.
    - `loopedTransitionContainerLayout` WorkflowLayout, nullable — The starting point for the statuses in the workflow.
      - `x` number, double — The x axis location.
      - `y` number, double — The y axis location.
    - `name` string, required — The name of the workflow to create.
    - `startPointLayout` WorkflowLayout, nullable — The starting point for the statuses in the workflow.
      - `x` number, double — The x axis location.
      - `y` number, double — The y axis location.
    - `statuses` StatusLayoutUpdate[], required — The statuses associated with this workflow.
      - `approvalConfiguration` ApprovalConfiguration, nullable — The approval configuration of a status within a workflow. Applies only to Jira Service Management approvals.
        - `active` 'true' | 'false', required — Whether the approval configuration is active.
        - `conditionType` 'number' | 'percent' | 'numberPerPrincipal', required — How the required approval count is calculated. It may be configured to require a specific number of approvals, or approval by a percentage of approvers. If the approvers source field is Approver groups, you can configure how many approvals per group are required for the request to be approved. The number will be the same across all groups.
        - `conditionValue` string, required — The number or percentage of approvals required for a request to be approved. If `conditionType` is `number`, the value must be 20 or less. If `conditionType` is `percent`, the value must be 100 or less.
        - `exclude` string[], nullable — A list of roles that should be excluded as possible approvers.
        - `fieldId` string, required — The custom field ID of the "Approvers" or "Approver Groups" field.
        - `prePopulatedFieldId` string, nullable — The custom field ID of the field used to pre-populate the Approver field. Only supports the "Affected Services" field.
        - `transitionApproved` string, required — The numeric ID of the transition to be executed if the request is approved.
        - `transitionRejected` string, required — The numeric ID of the transition to be executed if the request is declined.
      - `layout` WorkflowLayout, nullable — The starting point for the statuses in the workflow.
        - `x` number, double — The x axis location.
        - `y` number, double — The y axis location.
      - `properties` object, required — The properties for this status layout.
      - `statusReference` string, required — A unique ID which the status will use to refer to this layout configuration.
    - `transitions` TransitionUpdateDTO[], required — The transitions of this workflow.
      - `actions` WorkflowRuleConfiguration[] — The post-functions of the transition.
        - `id` string, nullable — The ID of the rule.
        - `parameters` object — The parameters related to the rule.
        - `ruleKey` string, required — The rule key of the rule.
      - `conditions` ConditionGroupUpdate, nullable — The conditions group associated with the transition.
        - `conditionGroups` ConditionGroupUpdate[] — The nested conditions of the condition group.
        - `conditions` WorkflowRuleConfiguration[] — The rules for this condition.
          - `id` string, nullable — The ID of the rule.
          - `parameters` object — The parameters related to the rule.
          - `ruleKey` string, required — The rule key of the rule.
        - `operation` 'ANY' | 'ALL', required — Determines how the conditions in the group are evaluated. Accepts either `ANY` or `ALL`. If `ANY` is used, at least one condition in the group must be true for the group to evaluate to true. If `ALL` is used, all conditions in the group must be true for the group to evaluate to true.
      - `customIssueEventId` string — The custom event ID of the transition.
      - `description` string — The description of the transition.
      - `id` string — The ID of the transition.
      - `links` WorkflowTransitionLinks[] — The statuses the transition can start from, and the mapping of ports between the statuses.
        - `fromPort` integer, nullable — The port that the transition starts from.
        - `fromStatusReference` string, nullable — The status that the transition starts from.
        - `toPort` integer, nullable — The port that the transition goes to.
      - `name` string — The name of the transition.
      - `properties` object — The properties of the transition.
      - `toStatusReference` string — The status the transition goes to.
      - `transitionScreen` WorkflowRuleConfiguration, nullable — The configuration of the rule.
        - `id` string, nullable — The ID of the rule.
        - `parameters` object — The parameters related to the rule.
        - `ruleKey` string, required — The rule key of the rule.
      - `triggers` WorkflowTrigger[] — The triggers of the transition.
        - `id` string — The ID of the trigger.
        - `parameters` object, required — The parameters of the trigger.
        - `ruleKey` string, required — The rule key of the trigger.
      - `type` 'INITIAL' | 'GLOBAL' | 'DIRECTED' — The transition type.
      - `validators` WorkflowRuleConfiguration[] — The validators of the transition.
        - `id` string, nullable — The ID of the rule.
        - `parameters` object — The parameters related to the rule.
        - `ruleKey` string, required — The rule key of the rule.

## Response `200`

Returned if the request is successful.

- WorkflowCreateResponse — Details of the created workflows and statuses.
  - `statuses` JiraWorkflowStatus[] — List of created statuses.
    - `description` string — The description of the status.
    - `id` string — The ID of the status.
    - `name` string — The name of the status.
    - `scope` WorkflowScope — The scope of the workflow.
      - `project` ProjectId, nullable — Project ID details.
        - `id` string, required — The ID of the project.
      - `type` 'PROJECT' | 'GLOBAL' — The scope of the workflow. `GLOBAL` for company-managed projects and `PROJECT` for team-managed projects.
    - `statusCategory` 'TODO' | 'IN_PROGRESS' | 'DONE' — The category of the status.
    - `statusReference` string — The reference of the status.
  - `workflows` JiraWorkflow[] — List of created workflows.
    - `created` string, nullable — The creation date of the workflow.
    - `description` string — The description of the workflow.
    - `id` string — The ID of the workflow.
    - `isEditable` boolean — Indicates if the workflow can be edited.
    - `loopedTransitionContainerLayout` WorkflowLayout, nullable — The starting point for the statuses in the workflow.
      - `x` number, double — The x axis location.
      - `y` number, double — The y axis location.
    - `name` string — The name of the workflow.
    - `scope` WorkflowScope — The scope of the workflow.
      - `project` ProjectId, nullable — Project ID details.
        - `id` string, required — The ID of the project.
      - `type` 'PROJECT' | 'GLOBAL' — The scope of the workflow. `GLOBAL` for company-managed projects and `PROJECT` for team-managed projects.
    - `startPointLayout` WorkflowLayout, nullable — The starting point for the statuses in the workflow.
      - `x` number, double — The x axis location.
      - `y` number, double — The y axis location.
    - `statuses` WorkflowReferenceStatus[] — The statuses referenced in this workflow.
      - `approvalConfiguration` ApprovalConfiguration, nullable — The approval configuration of a status within a workflow. Applies only to Jira Service Management approvals.
        - `active` 'true' | 'false', required — Whether the approval configuration is active.
        - `conditionType` 'number' | 'percent' | 'numberPerPrincipal', required — How the required approval count is calculated. It may be configured to require a specific number of approvals, or approval by a percentage of approvers. If the approvers source field is Approver groups, you can configure how many approvals per group are required for the request to be approved. The number will be the same across all groups.
        - `conditionValue` string, required — The number or percentage of approvals required for a request to be approved. If `conditionType` is `number`, the value must be 20 or less. If `conditionType` is `percent`, the value must be 100 or less.
        - `exclude` string[], nullable — A list of roles that should be excluded as possible approvers.
        - `fieldId` string, required — The custom field ID of the "Approvers" or "Approver Groups" field.
        - `prePopulatedFieldId` string, nullable — The custom field ID of the field used to pre-populate the Approver field. Only supports the "Affected Services" field.
        - `transitionApproved` string, required — The numeric ID of the transition to be executed if the request is approved.
        - `transitionRejected` string, required — The numeric ID of the transition to be executed if the request is declined.
      - `deprecated` boolean — Indicates if the status is deprecated.
      - `layout` WorkflowStatusLayout, nullable — The x and y location of the status in the workflow.
        - `x` number, double, nullable — The x axis location.
        - `y` number, double, nullable — The y axis location.
      - `properties` object — The properties associated with the status.
      - `statusReference` string — The reference of the status.
    - `taskId` string, nullable — If there is a current [asynchronous task](#async-operations) operation for this workflow.
    - `transitions` WorkflowTransitions[] — The transitions of the workflow.
      - `actions` WorkflowRuleConfiguration[] — The post-functions of the transition.
        - `id` string, nullable — The ID of the rule.
        - `parameters` object — The parameters related to the rule.
        - `ruleKey` string, required — The rule key of the rule.
      - `conditions` ConditionGroupConfiguration, nullable — The conditions group associated with the transition.
        - `conditionGroups` ConditionGroupConfiguration[] — The nested conditions of the condition group.
        - `conditions` WorkflowRuleConfiguration[] — The rules for this condition.
          - `id` string, nullable — The ID of the rule.
          - `parameters` object — The parameters related to the rule.
          - `ruleKey` string, required — The rule key of the rule.
        - `operation` 'ANY' | 'ALL' — Determines how the conditions in the group are evaluated. Accepts either `ANY` or `ALL`. If `ANY` is used, at least one condition in the group must be true for the group to evaluate to true. If `ALL` is used, all conditions in the group must be true for the group to evaluate to true.
      - `customIssueEventId` string, nullable — The custom event ID of the transition.
      - `description` string — The description of the transition.
      - `id` string — The ID of the transition.
      - `links` WorkflowTransitionLinks[] — The statuses the transition can start from, and the mapping of ports between the statuses.
        - `fromPort` integer, nullable — The port that the transition starts from.
        - `fromStatusReference` string, nullable — The status that the transition starts from.
        - `toPort` integer, nullable — The port that the transition goes to.
      - `name` string — The name of the transition.
      - `properties` object — The properties of the transition.
      - `toStatusReference` string — The status the transition goes to.
      - `transitionScreen` WorkflowRuleConfiguration, nullable — The configuration of the rule.
        - `id` string, nullable — The ID of the rule.
        - `parameters` object — The parameters related to the rule.
        - `ruleKey` string, required — The rule key of the rule.
      - `triggers` WorkflowTrigger[] — The triggers of the transition.
        - `id` string — The ID of the trigger.
        - `parameters` object, required — The parameters of the trigger.
        - `ruleKey` string, required — The rule key of the trigger.
      - `type` 'INITIAL' | 'GLOBAL' | 'DIRECTED' — The transition type.
      - `validators` WorkflowRuleConfiguration[] — The validators of the transition.
        - `id` string, nullable — The ID of the rule.
        - `parameters` object — The parameters related to the rule.
        - `ruleKey` string, required — The rule key of the rule.
    - `updated` string, nullable — The last edited date of the workflow.
    - `version` DocumentVersion — The current version details of this workflow scheme.
      - `id` string — The version UUID.
      - `versionNumber` integer — The version number.

## Other responses

- `400` — Returned if the request is not valid.
- `401` — Returned if the authentication credentials are incorrect or missing, or the caller doesn't have permissions to perform the operation.
- `409` — Returned if another workflow configuration update task is ongoing.

---

[API](https://skmtc.net/atlassian/apis/the-jira-cloud-platform-rest-api-2.md) · [All operations](https://skmtc.net/atlassian/apis/the-jira-cloud-platform-rest-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/atlassian/the-jira-cloud-platform-rest-api-2/versions/ec7f275dfee5/schema)
