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

# listApprovalCases

> Lists your app's approval cases, newest first.

## Import

Call this method on a server-side ParaRestClient created with your server secret key.

```ts theme={null}
import { ParaRestClient } from "@getpara/rest-sdk";
```

async

Lists your app's approval cases, newest first.

Copy method signature

### Returns

[`Promise<PermissionsV2ConditionalApprovalCaseSummaryList>`](https://docs.getpara.com/v3/references/types/permissions#permissionsv2conditionalapprovalcasesummarylist)

Cases without a caller decision, and a cursor for the next page.

## Route

Your backend reads cases but does not approve or reject them. Approvers decide through the client SDKs or Portal.

```text theme={null}
GET /v1/permissions-v2/approval-cases?limit=...&beforeCaseId=...
```

## Example

Keep `nextBeforeCaseId` to request the next page of cases.

```ts theme={null}
const { cases, nextBeforeCaseId } = await para.listApprovalCases({ limit: 50 });
```

## Errors

A non-success response throws `ParaRestError` with the HTTP `status`, the error `code` and a `message`. [Permissions errors](https://docs.getpara.com/v3/references/permissions/errors.md) lists every error code.

| Status | Code | When |
| - | - | - |
| 400 | `INVALID_REQUEST` | `limit` is outside 1 to 100, or `beforeCaseId` is not in this list. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.