---
title: "Get completed tasks"
method: POST
path: "/open/v1/task/completed"
---

# Get completed tasks

`POST /open/v1/task/completed`

Returns at most 200 completed tasks.

## Request body

- CompletedTaskSearch
  - `projectIds` string[] — Project IDs to search. Omit to search all accessible projects.
  - `startDate` string, date-time — Include tasks completed on or after this time
  - `endDate` string, date-time — Include tasks completed on or before this time

## Response `200`

OK

- Task[]
  - `id` string — The ID of task
  - `etag` string — Version identifier of task, returned after task changes
  - `projectId` string — The ID of project which task in
  - `title` string — Title of task
  - `isAllDay` string — Is task all day, true or false
  - `completedTime` string — Task completed time in "yyyy-MM-dd'T'HH:mm:ssZ", Example "2019-11-13T03:00:00+0000
  - `content` string — Content of task
  - `desc` string — Description of checklist
  - `dueDate` string — Task due date time in "yyyy-MM-dd'T'HH:mm:ssZ", Example "2019-11-13T03:00:00+0000"
  - `items` ChecklistItem[]
    - `id` string — The ID of checklistItem
    - `title` string — Title of checklistItem
    - `status` 0 | 1 — The completion status of checklistItem, Normal is 0, Completed is 1
    - `completedTime` string — checklistItem completed time in "yyyy-MM-dd'T'HH:mm:ssZ", Example "2019-11-13T03:00:00+0000
    - `isAllDay` string — Is checklistItem all day, true or false
    - `sortOrder` integer — Order value of checklistItem
    - `startDate` string — checklistItem start date time in "yyyy-MM-dd'T'HH:mm:ssZ", Example "2019-11-13T03:00:00+0000"
    - `timeZone` string — checklistItem timezone, Example "America/Los_Angeles"
  - `priority` integer — Task priority, None is 0, Low is 1, Medium is 3, High is 5
  - `reminders` string[] — List of reminder trigger, Example ["TRIGGER:P0DT9H0M0S","TRIGGER:PT0S"]
  - `repeatFlag` string — Recurring rules of task, Example "RRULE:FREQ=DAILY;INTERVAL=1"
  - `repeatFrom` '0' | '1' | '2' — Recurrence calculation mode. This field only takes effect when repeatFlag is present. "0" (REPEAT_FROM_DUEDATE): Repeat from the original due or scheduled date. The next occurrence is based on dueDate and repeatFlag, for fixed schedules such as "every Monday". "1" (REPEAT_FROM_COMPLETETIME): Repeat from the completion date while preserving the original time of day, for rules such as "3 days after completion". No next occurrence is generated without a completion time. "2" (REPEAT_FROM_DEFAULT): Default calendar recurrence. It uses the task time zone, skips expired historical occurrences, and advances to the next applicable occurrence. The server usually uses "2" when this field is omitted or empty. Both "0" and "2" follow calendar or scheduled recurrence rules, but "2" advances from the current date in the task time zone and is the recommended default for ordinary daily, weekly, or monthly recurrence.
  - `sortOrder` integer — Sort order value of task, Example 12345
  - `startDate` string — Start data time in "yyyy-MM-dd'T'HH:mm:ssZ", Example "2023-04-23T12:00:00+0000"
  - `status` -1 | 0 | 2 — Task completion status, Abandoned is -1, Normal is 0, Completed is 2
  - `assigneeUsername` string — Username of the project member assigned to the task
  - `timeZone` string — Task timezone, Example "America/Los_Angeles"

## Changes

- **2026-07-31** `fc6b6ae72259` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/ticktick/apis/ticktick-openapi/changes/open/v1/task/completed/post.md)

---

[API](https://skmtc.dev/ticktick/apis/ticktick-openapi.md) · [All operations](https://skmtc.dev/ticktick/apis/ticktick-openapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ticktick/ticktick-openapi/revisions/fc6b6ae72259/schema)
