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

# requestSigningDelegation

> Opens the Para Portal grant page in a popup and resolves with the signed-in user's decision.

async

Opens the Para Portal grant page in a popup and resolves with the signed-in user's decision.

Copy method signature

### Returns

[`SigningDelegationConsentOutcome`](https://docs.getpara.com/v3/references/types/permissions#signingdelegationconsentoutcome)

granted with expiresAt, revoked, cancelled, or error with errorCode.

## Usage

Available on the web clients, `ParaWeb` from `@getpara/web-sdk` and the client in `@getpara/react-sdk` and `@getpara/react-sdk-lite`. React Native has no popup, so use [`getSigningDelegationConsentUrl`](https://docs.getpara.com/v3/references/core/permissions/getsigningdelegationconsenturl) there.

```typescript theme={null}
const { policy } = await para.getApplicablePolicy(policyId, { walletId });

const outcome = await para.requestSigningDelegation({
  appId: para.partnerRecord!.projectId!,
  walletId,
  policyId,
  policyVersion: policy.policyVersion,
  policyHash: policy.policyHash,
});

if (outcome.status === "granted") {
  console.log(`Your server can sign until ${outcome.expiresAt}`);
}
```

```typescript Signature theme={null}
requestSigningDelegation(params: RequestSigningDelegationParams): Promise<SigningDelegationConsentOutcome>
```

## Access and Portal behavior

Signed-in user. `appId` must be your API key's project ID. The policy fields must name the active version of a Request that allows signing delegation; otherwise the Portal shows **This signing policy is no longer available. Ask the app to start a new request.**

The method resolves when the Portal reports the user's decision, or with `cancelled` when the user closes the popup. It resolves with `{ status: "error", errorCode: "CONSENT_TIMEOUT" }` after `timeoutMs`, 5 minutes by default. Without the policy fields, the Portal lists the user's grants to your app, and renewing or revoking there does not close it, so the method resolves with `cancelled` when the user closes the popup.

> [!NOTE]
>
> Call it from a click handler. The method opens a popup first, and browsers block popups opened at other times.

## Errors

| Status | Message | When |
| - | - | - |
| Client | `no userId is set` | No user is signed in, or the session is a guest session. |
| Outcome | `SIGNING_GRANT_WALLET_NOT_ELIGIBLE` | The wallet cannot hold a grant. |
| Outcome | `CONSENT_TIMEOUT` | The user did not finish within `timeoutMs`. |

<picture>![useSigningDelegation](https://docs.getpara.com/images/v3/cards/sdk-request-signing-delegation.png)</picture>

## [useSigningDelegation](https://docs.getpara.com/v3/references/hooks/permissions.md#requestsigningdelegation)

The React hook for this method.

<picture>![Signing delegation guide](https://docs.getpara.com/images/v3/cards/portal-signing-delegation.png)</picture>

## [Signing delegation guide](https://docs.getpara.com/v3/react/guides/permissions/signing-delegation.md)

Turn it on, ask users for access and sign from your server.

<picture>![Permissions types](https://docs.getpara.com/images/v3/cards/concept-permissions-types.png)</picture>

## [Permissions types](https://docs.getpara.com/v3/references/types/permissions.md#signing-delegation)

Inputs and responses for every Permissions method.


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