---
title: "List Deal Checklists"
method: GET
path: "/api/external/v2/deals/{deal_id}/checklists"
tags: ["external-v2-checklists"]
---

# List Deal Checklists

`GET /api/external/v2/deals/{deal_id}/checklists`

List a deal's checklists (one per shared vault that has one), with full content.

Ordering follows the vault enumeration (default Deal Room first, then by
vault id). ``vault_id`` drills into a single shared vault; a vault id that
does not belong to this deal 404s (no existence oracle), and the Resources
vault — which never carries a checklist — yields an empty list.

## Path parameters

- `deal_id` integer, required

## Query parameters

- `vault_id` integer, nullable — Drill into one shared vault on this deal (use the ``id`` from GET /deals/{deal_id}/vaults). Omit to list checklists across all of the deal's shared vaults. A vault id that does not belong to this deal 404s; the deal's Resources vault never carries a checklist, so passing it returns an empty list.

## Response `200`

Successful Response

- DealChecklistListResponse — OpenAPI schema for GET /api/external/v2/deals/<deal_id>/checklists (list envelope).
  - `request_id` string, required
  - `timestamp` string, required
  - `data` DealChecklistResponse[], required
    - `id` integer, required
    - `vault` DocumentVaultRef, required — The vault a document lives in, tagged onto each document in a listing. ``type`` is the structural category (``resources`` / ``shared``); ``title`` is the human name ("Deal Resources", "Deal Room", "Closing", …).
      - `id` integer, required
      - `type` 'resources' | 'shared', required
      - `title` string, nullable
    - `sections` ChecklistSectionResponse[]
      - `id` integer, required
      - `name` string, required
      - `position` integer, required
      - `start_date` string, date, nullable
      - `end_date` string, date, nullable
      - `tasks` ChecklistTaskResponse[]
        - `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[]
    - `tasks` ChecklistTaskResponse[]
      - `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[]
  - `pagination` union, required
    - CursorPaginationResponse
      - `total` integer, required
      - `limit` integer, required
      - `cursor` string, nullable, required
      - `has_more` boolean, required
      - `next_cursor` string, nullable, required
    - OffsetPaginationResponse
      - `total` integer, required
      - `limit` integer, required
      - `offset` integer, required
      - `has_more` boolean, required

## Other responses

- `422` — Validation Error

---

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