---
title: "Perform bulk operations on multiple workflows"
method: POST
path: "/v4/workflows/bulk"
tags: ["Workflows"]
---

# Perform bulk operations on multiple workflows

`POST /v4/workflows/bulk`

## Request

- Base URL: `https://api.kadoa.com`
- URL: `https://api.kadoa.com/v4/workflows/bulk`
- Auth: API key in header `x-api-key`

Execute actions on multiple workflows at once. Best-effort processing - each workflow is processed independently. The 'approve' action approves preview data for workflows in PREVIEW state. The 'stop' action cancels each workflow's running job without changing its schedule.

## Request body

- object
  - `workflowIds` string[], required: Array of workflow IDs to operate on (max 50)
  - `action` 'run' | 'pause' | 'resume' | 'stop' | 'delete' | 'approve' | 'assignTags', required: The action to perform on all workflows
  - `params` object: Action-specific parameters
    - `tags` string[]: Tags to assign (required for assignTags action)

## Response `200`

Bulk operation processed (check results for individual outcomes)

- object
  - `results` object[]
    - `workflowId` string
    - `success` boolean
    - `error` string: Error message if success is false
    - `jobId` string: Job ID of the started run (run action, or approve when previewRestarted)
    - `previewRestarted` boolean: Approve found the preview out of date and started a new preview run (jobId) instead; the workflow stays in PREVIEW.
  - `summary` object
    - `total` integer
    - `succeeded` integer: Workflows the action was applied to; excludes restarted previews
    - `failed` integer
    - `previewRestarted` integer: Approvals that started a new preview run instead of approving

## Other responses

- `400`: Invalid request
- `401`: Unauthorized
- `403`: Forbidden

---

[API](https://skmtc.dev/kadoa/apis/kadoa-api.md) · [All operations](https://skmtc.dev/kadoa/apis/kadoa-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kadoa/apis/kadoa-api/revisions/c65bc2779a6e?raw)
