> ## 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.

# getUserPolicyConsent

> Reads the consent status of one policy for one of a user's wallets.

## 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

Reads the consent status of one policy for one of a user's wallets.

Copy method signature

### Returns

[`Promise<PermissionsV2DelegationConsentView>`](/v3/references/types/permissions#permissionsv2delegationconsentview)

The consent status and the policy version it covers.

## Route

The path names the user and policy, and `walletId` selects the wallet in the query.

```text theme={null}
GET /v1/permissions-v2/users/{userId}/delegation-consents/{policyId}?walletId=...
```

## Example

Compare the returned status with `standing` to check the wallet's consent state.

```ts theme={null}
const consent = await para.getUserPolicyConsent(userId, policyId, { walletId });
const hasStandingConsent = consent.status === "standing";
```

## Errors

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

An empty path argument throws `ParaRestValidationError` before the request is sent.

| Status | Code | When |
| - | - | - |
| 400 | `INVALID_REQUEST` | `userId` or `walletId` is not a UUID. |
| 400 | `INVALID_REQUEST` | The policy is a Guardrail. Only Request policies have a consent status. |
| 403 | `FORBIDDEN` | The wallet has no connection to your app, or the policy targets another app, user or wallet. |
| 404 | `NOT_FOUND` | No active policy with this ID exists in your app. |


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