---
title: "Edits multiple projects using the specified operation."
method: POST
path: "/projects/batch/{operation}"
tags: ["projects"]
---

# Edits multiple projects using the specified operation.

`POST /projects/batch/{operation}`

Returns MultiStatus including the list of successful and failed projects.
            
             Supported operations:
             <ul>
  <li>changeprojectstatus: changes the status of all selected projects.</li>
  <li>changeprojecttype: changes the type of all selected projects.</li>
  <li>linkworkflow: links a workflow to all selected projects.</li>
  <li>setclient: sets the client for all selected projects.</li>
  <li>setprojectlead: changes the responsible project member for all selected projects.</li>
  <li>addteams: adds teams to all selected projects.</li>
  <li>removeteams: removes teams from all selected projects.</li>
  <li>setdates: sets or removes project start and due dates.</li>
  <li>adjustdates: offsets project start and due dates by the specified amount of days.</li>
  <li>addtags: adds tags to all selected projects.</li>
  <li>removetags: removes tags from all selected projects.</li>
  <li>delete: deletes all selected projects.</li>
</ul><Check title="Required Permissions" icon="key">The user must have `write` permissions on all projects as well as related entities modified by the operation.</Check>

## Path parameters

- `operation` string, required

## Headers

- `Authorization` string, required

## Request body

- ProjectBatchOperationForm — Request body for project batch operations.
  - `projectIds` string[], required — Project ids affected by the batch operation.
  - `projectStatusId` string, uuid, nullable — Target project status for `changeprojectstatus`.
  - `projectTypeId` string, uuid, nullable — Target project type for `changeprojecttype`.
  - `workflowId` string, uuid, nullable — Workflow to link for `linkworkflow`.
  - `projectStatusMapping` ProjectStatusMappingEntry[], nullable — Project status mappings used when linking a workflow.
    - `oldProjectStatusId` string, uuid, required — The Id of the existing project status to replace.
    - `newProjectStatusId` string, uuid, required — The Id of the workflow project status to use instead.
  - `taskStatusMapping` TaskStatusMappingEntry[], nullable — Task status mappings used when linking a workflow.
    - `oldTaskStatusId` string, uuid, required — The Id of the existing task status to replace.
    - `newTaskStatusId` string, uuid, required — The Id of the workflow task status to use instead.
  - `keepCustomFields` boolean, nullable — Whether custom fields should be kept when linking a workflow.
  - `keepCustomAutomations` boolean, nullable — Whether custom automations should be kept when linking a workflow.
  - `companyId` string, uuid, nullable — Company to assign for `setclient`.
  - `responsibleUserId` string, uuid, nullable — Responsible user to assign for `setprojectlead`.
  - `teamIds` string[], nullable — Team ids to add or remove for team batch operations.
  - `newStartDate` string, date-time, nullable — New start date for `setdates`.
  - `newDueDate` string, date-time, nullable — New due date for `setdates`.
  - `removeStartDate` boolean, nullable — Whether the start date should be removed for `setdates`.
  - `removeDueDate` boolean, nullable — Whether the due date should be removed for `setdates`.
  - `daysOffset` number, double, nullable — Day offset for `adjustdates`.
  - `tags` TagForm[], nullable — Tags to add for `addtags`.
    - `name` string, required — The name of the tag to delete.
    - `color` string, nullable — The color of the tag. Use one of 'red', 'coral', 'yellow', 'green', 'teal', 'arctic', 'blue', 'azure', 'purple', 'violet'.
  - `tagsToRemove` DeleteTagForm[], nullable — Tags to remove for `removetags`.
    - `name` string, required — The name of the tag to delete.
  - `deleteTimeTrackings` boolean, nullable — Whether related time trackings should be deleted for `delete`.

## Response `207`

Multi-Status

- MultiStatusResult
  - `ok` StatusResult
    - `ids` string[], nullable
  - `notFound` StatusResult
    - `ids` string[], nullable
  - `unauthorized` StatusResult
    - `ids` string[], nullable
  - `badRequest` StatusResult
    - `ids` string[], nullable

## Other responses

- `400` — Bad Request
- `401` — Unauthorized

---

[API](https://skmtc.net/awork-io/apis/api-v1-reference.md) · [All operations](https://skmtc.net/awork-io/apis/api-v1-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/awork-io/api-v1-reference/versions/f784a53f60df/schema)
