---
title: "Mark a task as done"
method: POST
path: "/v1/tasks/{taskId}/mark-as-done"
tags: ["Tasks"]
---

# Mark a task as done

`POST /v1/tasks/{taskId}/mark-as-done`

## Request

- Base URL: `https://api.folk.app`
- URL: `https://api.folk.app/v1/tasks/{taskId}/mark-as-done`
- Auth: HTTP bearer

Mark an existing task as done.

## Path parameters

- `taskId` string, required

## Headers

- `Idempotency-Key` string: A unique key, such as a UUID, that makes retrying this request safe: a retry with the same key and body returns the original response without running the operation again. Keys are kept for 24 hours after the request completes.

## Request body

- object
  - `completedAt` string, date-time, required: The date and time the task was completed, in ISO 8601 format.

## Response `200`

The task marked as done with its updated completedAt field.

- object
  - `data` TSKTask, required: A task created by a user.
    - `id` string, required
    - `title` string, required: The title of the task.
    - `description` string, nullable, required: The description of the task, in markdown format.
    - `entity` object, required: The entity connected to the task. You can link people, companies and objects.
      - `id` string, required
      - `entityType` 'person' | 'company' | 'object', required: The type of entity connected to the task.
      - `fullName` string, required: The full name of the entity.
    - `recurrenceFrequency` 'weekday' | 'weekly' | 'biweekly' | 'monthly' | 'quarterly' | 'yearly' | 'null', nullable, required: The recurrence frequency of the task. One of: weekday, weekly, biweekly, monthly, quarterly, yearly. Null if non-recurring.
    - `dueAt` string, date, required: The due date of the task, in YYYY-MM-DD format.
    - `dueTime` string, nullable, required: The due time of the task, in HH:mm format.
    - `completedAt` string, date-time, nullable, required: The date and time the task was completed, or null if not yet completed.
    - `isPublic` boolean, required: Whether the task is visible to all workspace members (true) or only to its assigned users (false).
    - `assignedUsers` User[], required: The users assigned to this task.
      - `id` string, required
      - `fullName` string, required
      - `email` string, required
    - `createdBy` object, required: The user who created the task.
      - `id` string, required
      - `fullName` string, required
      - `email` string, required
    - `createdAt` string, date-time, nullable, required
    - `updatedAt` string, date-time, nullable, required
  - `deprecations` string[]

## Other responses

- `400`: The request was unacceptable, often due to missing an invalid parameter.
- `401`: No valid API key provided.
- `403`: The API key doesn’t have permissions to perform the request.
- `404`: The requested resource doesn’t exist.
- `409`: A request with the same `Idempotency-Key` is still being processed, or the resource is in a state that does not allow the operation.
- `422`: The request was unacceptable, often due to missing or invalid parameters.
- `429`: Too many requests hit the API too quickly. We recommend an exponential backoff of your requests.
- `500`: Something went wrong on our end.
- `503`: The server is overloaded or down for maintenance.

## Changes

- **2026-11-03** `c6818f3ba60d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/folk/apis/folk-external-api/changes/v1/tasks/:taskId/mark-as-done/post.md)

---

[API](https://skmtc.dev/folk/apis/folk-external-api.md) - [All operations](https://skmtc.dev/folk/apis/folk-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/folk/apis/folk-external-api/revisions/c6818f3ba60d?raw)
