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

# Update a task

`PATCH /api/v1/tasks/{id}`

Updates a task with PATCH semantics — only the provided fields change. Use `status: completed` to mark the task done. `tagIds` replaces the full tag set.

## Path parameters

- `id` string, uuid, required — Task ID

## Request body

- object
  - `content` string — New content
  - `dueDate` string — New due date (YYYY-MM-DD)
  - `ownerId` string, uuid — Reassign to this user
  - `status` 'pending' | 'completed' | 'canceled' — New status — use `completed` to mark the task done
  - `priority` 'high' | 'medium' | 'low' — New priority
  - `tagIds` string[] — Replaces the full tag set (unknown IDs are ignored)

## Response `200`

Task updated

- object
  - `status` 'ok', required
  - `data` object, required
    - `id` string, uuid, required
    - `content` string, required
    - `dueDate` string, nullable, required — Due date (YYYY-MM-DD)
    - `status` 'pending' | 'completed' | 'canceled', required
    - `priority` 'high' | 'medium' | 'low', required
    - `type` string, required — `person`, `company` or `general` — inferred from the linked entity
    - `evidence` string, nullable, required — Source context for AI-generated tasks
    - `owner` object, nullable, required — The assigned user
      - `id` string, uuid, required
      - `name` string, nullable, required
    - `person` object, nullable, required — The linked person
      - `id` string, uuid, required
      - `name` string, nullable, required
    - `company` object, nullable, required — The linked company
      - `id` string, uuid, required
      - `name` string, nullable, required
    - `tags` object[], required
      - `id` string, uuid, required
      - `name` string, required
    - `createdAt` string, date-time, nullable, required
    - `updatedAt` string, date-time, nullable, required

## Other responses

- `401` — Unauthorized - missing or invalid API key
- `404` — Resource not found
- `422` — Validation error - the request body or query parameters failed validation
- `429` — Too many requests - the caller has exceeded the per-agency rate limit for the tier this endpoint counts against (default per minute: 1200 read / 400 write / 60 upload). Inspect the `RateLimit-*` headers — returned on every response, not only on 429s — and back off until the window resets. See the "Rate limits" section of the introduction for details.

## Changes

- **2026-09-16** `c619c65fbd97` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/recruitwithatlas/apis/atlas-api/changes/api/v1/tasks/:id/patch.md)

---

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