---
title: "Update a task"
method: PATCH
path: "/v1/tasks/{taskId}"
tags: ["tasks"]
---

# Update a task

`PATCH /v1/tasks/{taskId}`

## Request

- Base URL: `https://api.flowral.app`
- URL: `https://api.flowral.app/v1/tasks/{taskId}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (client credentials, token URL `https://api.flowral.app/v1/oauth/token`, scopes: `flows:write`)

Name, description and estimate. Status is not settable here — see the transition endpoints. Refused once work has started, the same rule the canvas applies.

## Path parameters

- `taskId` string, required

## Request body

- object
  - `name` string
  - `description` string
  - `estimateHours` number

## Response `200`

SUCCESS

- Task: A unit of work in a flow. Tasks are joined by dependencies: one is ready only when everything it depends on is done, and one with sub-tasks completes through them.
  - `id` string, required
  - `flowId` string, required
  - `parentId` string, nullable, required: Set when this is a sub-task — the objective it belongs to. Null for an objective itself.
  - `name` string, required
  - `description` string, nullable
  - `status` 'blocked' | 'ready' | 'in_progress' | 'done', required: Derived from the graph on read, never stored. Work moves ready → in_progress → done; nothing jumps straight to done.
  - `dependsOn` string[], required: Task ids that must be done first.
  - `blockedBy` string[]: Of those, the ones not yet done. Empty when status is not "blocked".
  - `assigneeId` string, nullable
  - `estimateHours` number, nullable
  - `criticalPath` boolean: True when this task is on the chain that decides the flow's finish date.
  - `subtasks` SubTask[]
    - `id` string, required
    - `name` string, required
    - `done` boolean, required
    - `assigneeId` string, nullable: Workspace member id.
    - `estimateHours` number, nullable
  - `requiredDeliverables` object[]: Files that have to be handed in before the task can complete.
    - `id` string
    - `name` string
    - `satisfied` boolean

## Other responses

- `401`: UNAUTHORIZED
- `403`: FORBIDDEN · SUBSCRIPTION_PAST_DUE
- `404`: NOT_FOUND
- `429`: RATE_LIMITED

---

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