---
title: "Update a subtask"
method: PUT
path: "/v1/spaces/{spaceId}/projects/{projectId}/tasks/{taskId}/subtasks/{subtaskId}"
tags: ["Project Subtasks"]
---

# Update a subtask

`PUT /v1/spaces/{spaceId}/projects/{projectId}/tasks/{taskId}/subtasks/{subtaskId}`

Update an existing subtask for a given parent task

## Path parameters

- `spaceId` integer, required
- `projectId` integer, required
- `taskId` integer, required
- `subtaskId` integer, required

## Headers

- `X-Org-Id` integer, required

## Request body

- ProjectSubtaskUpdateRequest — Request object for updating a project subtask.
  - `taskTitle` string — Title of the subtask. Must be between 3 and 500 characters.
  - `description` string — Description of the subtask. Optional.
  - `owners` integer[] — List of owner IDs assigned to the subtask. Optional.
  - `startDate` string, date-time — Start date of the subtask. Optional.
  - `dueDate` string, date-time — Due date of the subtask. Optional.
  - `noOfDays` integer — Duration in working days. When sent together with startDate or dueDate, the missing date is recomputed honouring the organisation's operational hours.
  - `completion` integer — Completion percentage of the subtask. Must be between 0 and 100. Optional.
  - `status` string — Status of the subtask. Optional.
  - `priority` string — Priority of the subtask. Optional.
  - `tags` string[] — List of tags associated with the subtask. Optional.

## Response `200`

Subtask updated successfully

- ApiSuccessResponseTaskDto — Standard API success response structure
  - `success` boolean — Indicates if the operation was successful
  - `message` string — Message describing the result of the operation
  - `code` integer — HTTP status code of the response
  - `data` TaskDto
    - `tenantId` integer
    - `taskId` integer
    - `taskTitle` string
    - `description` string
    - `descriptionMentionedUserIds` integer[]
    - `startDate` string, date-time
    - `dueDate` string, date-time
    - `noOfDays` integer
    - `completion` integer
    - `priority` TaskPriorityDto
      - `tenantId` integer
      - `taskPriorityId` integer
      - `priorityLabel` string
      - `color` string
      - `createdBy` UserMinimalDto
        - `userId` integer
        - `firstName` string
        - `email` string
        - `profilePicURL` string
        - `profilePicColor` string
        - `provider` string
        - `role` OrgRoleDto
          - `orgRoleId` integer
          - `roleName` string
      - `modifiedBy` UserMinimalDto
        - `userId` integer
        - `firstName` string
        - `email` string
        - `profilePicURL` string
        - `profilePicColor` string
        - `provider` string
        - `role` OrgRoleDto
          - `orgRoleId` integer
          - `roleName` string
      - `default` boolean
      - `primary` boolean
    - `status` TaskStatusDto
      - `tenantId` integer
      - `taskStatusId` integer
      - `statusName` string
      - `color` string
      - `statusCategory` string
      - `projectId` integer
      - `spaceId` integer
      - `createdBy` UserMinimalDto
        - `userId` integer
        - `firstName` string
        - `email` string
        - `profilePicURL` string
        - `profilePicColor` string
        - `provider` string
        - `role` OrgRoleDto
          - `orgRoleId` integer
          - `roleName` string
      - `modifiedBy` UserMinimalDto
        - `userId` integer
        - `firstName` string
        - `email` string
        - `profilePicURL` string
        - `profilePicColor` string
        - `provider` string
        - `role` OrgRoleDto
          - `orgRoleId` integer
          - `roleName` string
      - `default` boolean
      - `primary` boolean
    - `taskTags` TagDto[]
      - `tenantId` integer
      - `tagId` integer
      - `tagName` string
      - `color` string
      - `createdBy` UserMinimalDto
        - `userId` integer
        - `firstName` string
        - `email` string
        - `profilePicURL` string
        - `profilePicColor` string
        - `provider` string
        - `role` OrgRoleDto
          - `orgRoleId` integer
          - `roleName` string
      - `modifiedBy` UserMinimalDto
        - `userId` integer
        - `firstName` string
        - `email` string
        - `profilePicURL` string
        - `profilePicColor` string
        - `provider` string
        - `role` OrgRoleDto
          - `orgRoleId` integer
          - `roleName` string
      - `createdTime` string, date-time
      - `modifiedTime` string, date-time
      - `taskCount` integer
      - `projectCount` integer
    - `overdueStatus` boolean
    - `parentId` integer
    - `taskListId` integer
    - `createdByMail` string
    - `senderName` string
    - `createdBy` UserMinimalDto
      - `userId` integer
      - `firstName` string
      - `email` string
      - `profilePicURL` string
      - `profilePicColor` string
      - `provider` string
      - `role` OrgRoleDto
        - `orgRoleId` integer
        - `roleName` string
    - `modifiedBy` UserMinimalDto
      - `userId` integer
      - `firstName` string
      - `email` string
      - `profilePicURL` string
      - `profilePicColor` string
      - `provider` string
      - `role` OrgRoleDto
        - `orgRoleId` integer
        - `roleName` string
    - `modifiedTime` string, date-time
    - `createdTime` string, date-time
    - `deleted` boolean
    - `deletedBy` UserMinimalDto
      - `userId` integer
      - `firstName` string
      - `email` string
      - `profilePicURL` string
      - `profilePicColor` string
      - `provider` string
      - `role` OrgRoleDto
        - `orgRoleId` integer
        - `roleName` string
    - `deletedTime` string, date-time
    - `completedTime` string, date-time
    - `timer` integer
    - `messageId` string
    - `owners` UserMinimalDto[]
      - `userId` integer
      - `firstName` string
      - `email` string
      - `profilePicURL` string
      - `profilePicColor` string
      - `provider` string
      - `role` OrgRoleDto
        - `orgRoleId` integer
        - `roleName` string
    - `followers` UserMinimalDto[]
      - `userId` integer
      - `firstName` string
      - `email` string
      - `profilePicURL` string
      - `profilePicColor` string
      - `provider` string
      - `role` OrgRoleDto
        - `orgRoleId` integer
        - `roleName` string
    - `taggedUsers` UserMinimalDto[]
      - `userId` integer
      - `firstName` string
      - `email` string
      - `profilePicURL` string
      - `profilePicColor` string
      - `provider` string
      - `role` OrgRoleDto
        - `orgRoleId` integer
        - `roleName` string
    - `members` UserMinimalDto[]
      - `userId` integer
      - `firstName` string
      - `email` string
      - `profilePicURL` string
      - `profilePicColor` string
      - `provider` string
      - `role` OrgRoleDto
        - `orgRoleId` integer
        - `roleName` string
    - `projectId` integer
    - `spaceId` integer
    - `projectName` string
    - `spaceName` string
    - `subTaskCount` integer
    - `parentCommentCount` integer
    - `customFields` TaskCustomFieldDto[]
      - `tenantId` integer
      - `taskCustomFieldId` integer
      - `fieldName` string
      - `description` string
      - `fieldType` string
      - `fieldValue` TaskFieldValue[]
        - `taskId` integer
        - `value` unknown
      - `fieldIcon` string
      - `spaceId` integer
      - `projectId` integer
      - `associatedId` integer
      - `level` 'ORG' | 'SPACE' | 'LOCAL'
      - `active` boolean
      - `order` integer
      - `createdBy` UserMinimalDto
        - `userId` integer
        - `firstName` string
        - `email` string
        - `profilePicURL` string
        - `profilePicColor` string
        - `provider` string
        - `role` OrgRoleDto
          - `orgRoleId` integer
          - `roleName` string
      - `modifiedBy` UserMinimalDto
        - `userId` integer
        - `firstName` string
        - `email` string
        - `profilePicURL` string
        - `profilePicColor` string
        - `provider` string
        - `role` OrgRoleDto
          - `orgRoleId` integer
          - `roleName` string
      - `createdTime` string, date-time
      - `modifiedTime` string, date-time
      - `options` CustomFieldOptionDto[]
        - `optionId` integer
        - `optionName` string, required
        - `color` string
        - `spaceId` integer
        - `projectId` integer
        - `taskCustomFieldId` integer
    - `blockedByTasks` TaskDependencyDto[]
      - `tenantId` integer
      - `dependencyId` integer
      - `spaceId` integer
      - `projectId` integer
      - `dependencyType` string
      - `blocking` TaskResponseDto
        - `taskId` integer
        - `projectId` integer
        - `spaceId` integer
        - `taskTitle` string
        - `status` TaskStatusDto
          - `tenantId` integer
          - `taskStatusId` integer
          - `statusName` string
          - `color` string
          - `statusCategory` string
          - `projectId` integer
          - `spaceId` integer
          - `createdBy` UserMinimalDto
            - `userId` integer
            - `firstName` string
            - `email` string
            - `profilePicURL` string
            - `profilePicColor` string
            - `provider` string
            - `role` OrgRoleDto
              - …
          - `modifiedBy` UserMinimalDto
            - `userId` integer
            - `firstName` string
            - `email` string
            - `profilePicURL` string
            - `profilePicColor` string
            - `provider` string
            - `role` OrgRoleDto
              - …
          - `default` boolean
          - `primary` boolean
        - `dueDate` string, date-time
        - `owners` UserMinimalDto[]
          - `userId` integer
          - `firstName` string
          - `email` string
          - `profilePicURL` string
          - `profilePicColor` string
          - `provider` string
          - `role` OrgRoleDto
            - `orgRoleId` integer
            - `roleName` string
        - `isInternal` boolean
      - `blockedBy` TaskResponseDto
        - `taskId` integer
        - `projectId` integer
        - `spaceId` integer
        - `taskTitle` string
        - `status` TaskStatusDto
          - `tenantId` integer
          - `taskStatusId` integer
          - `statusName` string
          - `color` string
          - `statusCategory` string
          - `projectId` integer
          - `spaceId` integer
          - `createdBy` UserMinimalDto
            - `userId` integer
            - `firstName` string
            - `email` string
            - `profilePicURL` string
            - `profilePicColor` string
            - `provider` string
            - `role` OrgRoleDto
              - …
          - `modifiedBy` UserMinimalDto
            - `userId` integer
            - `firstName` string
            - `email` string
            - `profilePicURL` string
            - `profilePicColor` string
            - `provider` string
            - `role` OrgRoleDto
              - …
          - `default` boolean
          - `primary` boolean
        - `dueDate` string, date-time
        - `owners` UserMinimalDto[]
          - `userId` integer
          - `firstName` string
          - `email` string
          - `profilePicURL` string
          - `profilePicColor` string
          - `provider` string
          - `role` OrgRoleDto
            - `orgRoleId` integer
            - `roleName` string
        - `isInternal` boolean
      - `createdBy` UserMinimalDto
        - `userId` integer
        - `firstName` string
        - `email` string
        - `profilePicURL` string
        - `profilePicColor` string
        - `provider` string
        - `role` OrgRoleDto
          - `orgRoleId` integer
          - `roleName` string
      - `createdTime` string, date-time
    - `blockingTasks` TaskDependencyDto[]
      - `tenantId` integer
      - `dependencyId` integer
      - `spaceId` integer
      - `projectId` integer
      - `dependencyType` string
      - `blocking` TaskResponseDto
        - `taskId` integer
        - `projectId` integer
        - `spaceId` integer
        - `taskTitle` string
        - `status` TaskStatusDto
          - `tenantId` integer
          - `taskStatusId` integer
          - `statusName` string
          - `color` string
          - `statusCategory` string
          - `projectId` integer
          - `spaceId` integer
          - `createdBy` UserMinimalDto
            - `userId` integer
            - `firstName` string
            - `email` string
            - `profilePicURL` string
            - `profilePicColor` string
            - `provider` string
            - `role` OrgRoleDto
              - …
          - `modifiedBy` UserMinimalDto
            - `userId` integer
            - `firstName` string
            - `email` string
            - `profilePicURL` string
            - `profilePicColor` string
            - `provider` string
            - `role` OrgRoleDto
              - …
          - `default` boolean
          - `primary` boolean
        - `dueDate` string, date-time
        - `owners` UserMinimalDto[]
          - `userId` integer
          - `firstName` string
          - `email` string
          - `profilePicURL` string
          - `profilePicColor` string
          - `provider` string
          - `role` OrgRoleDto
            - `orgRoleId` integer
            - `roleName` string
        - `isInternal` boolean
      - `blockedBy` TaskResponseDto
        - `taskId` integer
        - `projectId` integer
        - `spaceId` integer
        - `taskTitle` string
        - `status` TaskStatusDto
          - `tenantId` integer
          - `taskStatusId` integer
          - `statusName` string
          - `color` string
          - `statusCategory` string
          - `projectId` integer
          - `spaceId` integer
          - `createdBy` UserMinimalDto
            - `userId` integer
            - `firstName` string
            - `email` string
            - `profilePicURL` string
            - `profilePicColor` string
            - `provider` string
            - `role` OrgRoleDto
              - …
          - `modifiedBy` UserMinimalDto
            - `userId` integer
            - `firstName` string
            - `email` string
            - `profilePicURL` string
            - `profilePicColor` string
            - `provider` string
            - `role` OrgRoleDto
              - …
          - `default` boolean
          - `primary` boolean
        - `dueDate` string, date-time
        - `owners` UserMinimalDto[]
          - `userId` integer
          - `firstName` string
          - `email` string
          - `profilePicURL` string
          - `profilePicColor` string
          - `provider` string
          - `role` OrgRoleDto
            - `orgRoleId` integer
            - `roleName` string
        - `isInternal` boolean
      - `createdBy` UserMinimalDto
        - `userId` integer
        - `firstName` string
        - `email` string
        - `profilePicURL` string
        - `profilePicColor` string
        - `provider` string
        - `role` OrgRoleDto
          - `orgRoleId` integer
          - `roleName` string
      - `createdTime` string, date-time
    - `parent` boolean
    - `internal` boolean
    - `recurring` boolean
    - `isInternal` boolean
  - `timestamp` string, date-time — Timestamp of the response

---

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