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

# List Deal Documents

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

List a deal's documents across all its vaults, or one via ``vault_id``.

Each document is tagged with the ``vault`` it lives in. ``vault_id`` drills
into a single vault; a vault id that does not belong to this deal 404s
(indistinguishable from a nonexistent one — no leak/oracle).

## Path parameters

- `deal_id` integer, required

## Query parameters

- `fields` string, nullable — Comma-separated sparse fieldset
- `include` string, nullable — Comma-separated relationship includes
- `limit` integer — Number of results to return (1-200, clamped)
- `offset` integer — Offset for pagination (>= 0, clamped)
- `cursor` string, nullable — Base64 cursor for pagination
- `search` string, nullable — Case-insensitive substring match on the document file name.
- `extension` string, nullable — Filter to a single file extension, e.g. ``pdf`` (no leading dot).
- `folder_id` integer, nullable — Only documents directly inside this folder. Omit for the whole vault.
- `vault_id` integer, nullable — Drill into one vault on this deal (use the ``id`` from GET /deals/{deal_id}/vaults). Omit to list documents across all of the deal's vaults. A vault id that does not belong to this deal 404s.

## Response `200`

Successful Response

- DocumentListResponse — OpenAPI schema for GET /api/external/v2/deals/<deal_id>/documents (list envelope).
  - `request_id` string, required
  - `timestamp` string, required
  - `data` DocumentResponse[], required
    - `id` integer, required
    - `file_name` string, nullable
    - `extension` string, nullable
    - `size_bytes` integer, nullable
    - `folder_path` string, nullable
    - `uploaded_at` union
      - string, date-time
      - string
    - `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
  - `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.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/revisions/a586be7d6d3a/schema)
