> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trusset.org/llms.txt
> Use this file to discover all available pages before exploring further.

# List Disclosure Requests

> List the disclosure requests your instance has made

Returns the disclosure requests your instance has made, newest first. Requests made in the Issuer Portal are included.

Before the list is read, every open request of your instance past its `expiresAt` is marked `EXPIRED`, so the statuses are current. The items carry no consent or disclosure. Fetch an approved request with [Get Disclosure Request](/endpoints/customers/get-disclosure-request) to read them.

## Query Parameters

<ParamField query="status" type="string">
  `OPEN`, `APPROVED`, `DECLINED`, `EXPIRED` or `CANCELLED`, in any case.
</ParamField>

<ParamField query="walletAddress" type="string">
  Only requests to this wallet, matched in any case. Send it lowercase or correctly checksummed.
</ParamField>

<ParamField query="limit" type="integer" default="50">
  Requests per page, from 1 to 100. A missing, zero or non-numeric value gives 50, and a larger one is capped at 100.
</ParamField>

<ParamField query="offset" type="integer" default="0">
  Requests to skip.
</ParamField>

## Response Fields

<ResponseField name="data" type="object">
  <Expandable>
    <ResponseField name="items" type="array">
      The requests, each with the fields of [Create Disclosure Request](/endpoints/customers/create-disclosure-request): `id`, `walletAddress`, `scope`, `scopeLabel`, `referenceUrl`, `message`, `status`, `environment`, `createdAt`, `expiresAt`, `respondedAt` and `proofLevel`.
    </ResponseField>

    <ResponseField name="pagination" type="object">
      `total`, the requests matching the filters, and the `limit` and `offset` that were applied.
    </ResponseField>
  </Expandable>
</ResponseField>

<Note>
  Pagination sits inside `data` here, unlike the lists under `/manage` and `/id-links`, which put `total` in `metadata`.
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.trusset.org/customers/api/disclosure-requests?status=APPROVED&limit=20" \
    -H "X-API-Key: trusset_your_key_here"
  ```

  ```typescript TypeScript theme={null}
  const params = new URLSearchParams({ status: 'APPROVED', limit: '20' });

  const response = await fetch(
    `https://api.trusset.org/customers/api/disclosure-requests?${params}`,
    { headers: { 'X-API-Key': 'trusset_your_key_here' } }
  );
  const { data } = await response.json();
  const { items, pagination } = data;
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "success": true,
    "data": {
      "items": [
        {
          "id": "cmg7q3v2k0004lq08h2z9x6de",
          "walletAddress": "0x801D3b83882B1047fb2CeB6C097C3ae806D8D028",
          "scope": "COUNTRY",
          "scopeLabel": "Reveal country",
          "referenceUrl": "https://acme-capital.example/onboarding/4711",
          "message": "Please confirm your country of residence for your account opening",
          "status": "APPROVED",
          "environment": "DEV",
          "createdAt": "2026-09-30T09:30:00.000Z",
          "expiresAt": "2026-10-14T09:30:00.000Z",
          "respondedAt": "2026-10-01T14:05:12.000Z",
          "proofLevel": "ON_CHAIN_CLAIM"
        }
      ],
      "pagination": {
        "total": 1,
        "limit": 20,
        "offset": 0
      }
    },
    "metadata": {
      "requestId": "550e8400-e29b-41d4-a716-446655440000",
      "timestamp": "2026-10-01T15:00:00.000Z"
    }
  }
  ```
</ResponseExample>

## Error Codes

| Code | HTTP | Cause |
| - | - | - |
| `VALIDATION_ERROR` | `400` | `status` is not one of the five states |
| `INVALID_ADDRESS` | `400` | `walletAddress` is not `0x` and 40 hex characters |
| `LIST_DISCLOSURE_REQUESTS_FAILED` | `500` | The requests could not be read. A mixed-case `walletAddress` with a wrong checksum also ends here |
