---
title: "Bulk update tasks"
method: POST
path: "/tasks/bulk-update"
tags: ["tasks"]
---

# Bulk update tasks

`POST /tasks/bulk-update`

## Request

- Base URL: `https://catalyst.stratogenic.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://catalyst.stratogenic.ai/tasks/bulk-update`
- Auth: API key in header `X-API-Key`

Applies a set of updates to all tasks matching the provided filter.

Behaviour:
- Operates only within the calling tenant.
- Matches tasks across active flow and pending proposals.
- Applies canonical normalisation for domain, priority, and stage.
- Adds a '#bulk-updated' tag for provenance.

Availability:
- Restricted to Growth and Enterprise plans.

## Headers

- `X-User-Id` string, nullable
- `X-Source-App` string, nullable
- `X-Touched-By-Tool` string, nullable
- `X-Touched-By-User` string, nullable
- `X-Touched-By-Agent` string, nullable
- `X-External-User-Id` string, nullable
- `X-Run-Id` string, nullable

## Request body

- BulkUpdateRequest
  - `filter` BulkTaskFilter, required
    - `domain` string, nullable
    - `priority` string, nullable: Canonical priority, e.g. "Low" | "Medium" | "High" | "Critical"
    - `stage` string, nullable: Canonical stage, e.g. "backlog" | "in_progress" | "blocked" | "done"
    - `owner` string, nullable
    - `tag` string, nullable: Match tasks that include this tag in their tags list
    - `group_id` string, nullable: Correlation / project / group id if present on the task
  - `updates` BulkTaskUpdates, required
    - `owner` string, nullable
    - `priority` string, nullable: Canonical priority, e.g. "Low" | "Medium" | "High" | "Critical"
    - `domain` string, nullable
    - `stage` string, nullable
    - `tags_add` string[], nullable: Tags to add (if not already present)
    - `tags_remove` string[], nullable: Tags to remove (if present)
  - `idempotency_key` string, nullable: Client-supplied idempotency key. If provided and a result for this key already exists, the cached result is returned immediately without re-processing.

## Response `200`

Successful Response

- BulkUpdateResponse
  - `matched` integer, required
  - `updated` integer, required
  - `task_ids` string[], required
  - `summary` object, nullable

## Other responses

- `422`: Validation Error

---

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