---
title: "Complete Checklist Task"
method: POST
path: "/api/external/v2/checklist-tasks/{task_id}/complete"
tags: ["external-v2-checklists"]
---

# Complete Checklist Task

`POST /api/external/v2/checklist-tasks/{task_id}/complete`

Mark a checklist task complete. Idempotent: an already-complete task is
returned unchanged. Completing also sets the task to ``approved`` and
auto-approves its pending attached files, matching the in-app complete
action; reopen a task via PATCH with ``is_completed=false``.

## Path parameters

- `task_id` integer, required

## Response `200`

Successful Response

- ChecklistTaskObjectResponse — OpenAPI schema for the single-task write endpoints (create / update / complete).
  - `request_id` string, required
  - `timestamp` string, required
  - `data` ChecklistTaskResponse, required — A single checklist task. Completion is two fields by design, matching the internal model: ``status`` is the workflow state and ``is_completed`` is the soft completion flag. ``subtasks`` is one level deep (subtasks cannot nest further). ``position`` orders tasks within their section / checklist root / parent task.
    - `id` integer, required
    - `title` string, required
    - `description` string, nullable
    - `status` 'to_do' | 'requested' | 'reviewing' | 'updates_needed' | 'approved' | 'cancelled', required
    - `is_completed` boolean, required
    - `position` integer, required
    - `due_date` string, date, nullable
    - `role` 'sponsor' | 'my_team' | 'lender' | 'borrower', nullable
    - `assignee` ChecklistTaskAssignee — The user a task is assigned to. Built from base ``User`` fields (not account-scoped profile overrides), so it serializes correctly for API-key callers without a user profile.
      - `id` integer, required
      - `first_name` string, nullable
      - `last_name` string, nullable
      - `email` string, nullable
    - `assigned_team` ChecklistTaskAssignedTeam — The team, lender, or borrower org a task is assigned to.
      - `id` integer, required
      - `type` 'account' | 'private_company', required
      - `name` string, nullable
    - `document_types` ChecklistTaskDocumentTypeResponse[]
      - `id` integer, required
      - `name` string, nullable
    - `files` ChecklistTaskFileResponse[]
      - `vault_resource_id` integer, required
      - `document_id` integer, nullable
      - `name` string, nullable
      - `origin` 'auto_match' | 'manually_added', required
    - `collaborators` ChecklistTaskCollaborator[]
      - `id` integer, nullable
      - `email` string, nullable
    - `subtasks` ChecklistTaskResponse[]

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/lev/apis/lev-api.md) · [All operations](https://skmtc.net/lev/apis/lev-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lev/lev-api/versions/e1915e1423cf/schema)
