---
title: "Start a task"
method: POST
path: "/v1/tasks/{taskId}/start"
tags: ["tasks"]
---

# Start a task

`POST /v1/tasks/{taskId}/start`

## Request

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

Ready → in progress. Refused while anything it depends on is unfinished, and assigned work only moves for its assignee.

## Path parameters

- `taskId` string, required

## 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 · PLAN_REQUIRED · INSUFFICIENT_SCOPE
- `404`: NOT_FOUND
- `409`: TASK_BLOCKED · ALREADY_DONE
- `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)
