---
title: "Assign groups to a project task"
method: PUT
path: "/v3/projects/{taskId}/group-assignments"
tags: ["[v3] Projects"]
---

# Assign groups to a project task

`PUT /v3/projects/{taskId}/group-assignments`

Additively creates or updates direct group assignments and atomically materializes the resulting active users visible to the caller through the Projects PeoplePicker. Assignments omitted from the request are unchanged.

## Path parameters

- `taskId` integer, required

## Request body

- ProjectGroupAssignmentsUpsertRequest
  - `assignments` ProjectGroupAssignmentRequestItem[], required — Each groupId can occur at most once, regardless of the other assignment fields.
    - `groupId` integer, required — ID of the user group assigned directly to the project task.
    - `roleId` integer, required — Project role assigned to users covered by this group assignment.
    - `withSubgroups` boolean, required — Whether users from descendant groups are included.

## Response `200`

Normalized direct assignments, sorted by group ID.

- ProjectGroupAssignmentsUpsertResponse
  - `data` object, required
    - `assignments` ProjectGroupAssignment[], required
      - `groupId` integer, required
      - `roleId` integer, required
      - `withSubgroups` boolean, required

## Other responses

- `400` — Request validation failed. Assignments must be a JSON list containing from 1 to 100 unique group IDs.
- `401` — Authentication is required.
- `403` — The caller cannot edit the task or assign one of the requested project roles.
- `404` — At least one requested group is missing, belongs to another account or is not visible to the caller.
- `500` — Internal server error.

---

[API](https://skmtc.net/timecamp/apis/timecamp-api.md) · [All operations](https://skmtc.net/timecamp/apis/timecamp-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/timecamp/timecamp-api/revisions/397d667165ff/schema)
